--- status: accepted --- # Native OpenSpec SDD и минимальная local orchestration ## Статус: историческое решение [ADR 012](012-task-driven-development-with-scoped-context.md) отменяет обязательный SDD lifecycle. Native OpenSpec остаётся optional инструментом; repo gates сохраняются. ### Прежняя частичная замена [ADR 011](011-native-openspec-lifecycle-with-repository-gates.md) заменяет части этого решения о schema v3, custom verifiers и dispatcher. Выбор native OpenSpec, независимых repository gates и исходное rationale сохраняются. Ниже оставлено историческое описание прежней реализации; текущие принципы работы описаны в ADR 012. Version contract этим уточнением не меняется. ## Исторический контекст и решение На момент решения WealthLedger использовал проектную schema `wealth-ledger-sdd` version 3 с последовательностью `Proposal → Delta Specs → Design → Tasks → Apply`, один exact OpenSpec CLI contract и проверки без изменения проверяемых материалов. Это сохраняло единый источник правил жизненного цикла в хранилище спецификаций, выражало approval boundaries нативными extension points и не вводит второй workflow engine или monorepo control plane для четырёх независимых Git-репозиториев. ## Рассмотренные варианты - Встроенная `spec-driven` schema отклонена: она не выражает обязательный переход Specs перед Design и не задаёт Delivery Map или проектные роли артефактов. - Отдельный workflow engine или custom generator отклонён: он создал бы конкурирующий формат и lifecycle authority. - Nx, Turborepo, Bazel, Make или just отклонены для текущего масштаба: workspace не имеет общего dependency graph, build cache или CI, а репозитории уже владеют canonical gates. - Versioned source tree, patch-only, programmatic generator и symlink для root agent entrypoints отклонены для текущего масштаба: они добавляют отдельный projection lifecycle поверх уже достаточных schema, docs и scripts. ## Исторические последствия OpenSpec CLI закреплён exact version contract; новая stable release не включает auto-upgrade, а смена contract является отдельным SDD change со staged проверками совместимости. Локальная точка входа оставалась навигацией, а обязательные ограничения проверялись отдельно. Planning verifier до approval проверяет только детерминированную структуру: capability set, Delivery Map, rollback, task area и Requirement coverage. Он различает artifact-validation, неверный invocation и failure окружения, чтобы agent не переписывал planning artifact из-за сломанного вызова или prerequisite. Dispatcher знает четыре workspace area, но не реализует build или test logic: он делегирует repo-owned commands. Approval identity остаётся человеческим workflow constraint, потому что schema моделирует порядок артефактов, но не личность утвердившего. Semantic review по-прежнему не заменяется structural checks. Решение пересматривается, если OpenSpec перестанет поддерживать нужный artifact graph, появится обязательный общий CI/build graph или стоимость последовательной локальной orchestration станет существенной. В этих случаях новый ADR сравнивает native evolution с внешним engine либо monorepo platform.