56 lines
4.5 KiB
Markdown
56 lines
4.5 KiB
Markdown
---
|
||
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.
|