docs: simplify OpenSpec agent entrypoints

This commit is contained in:
2026-08-26 00:52:55 +03:00
parent 5233726855
commit eb0a96e27c
4 changed files with 24 additions and 40 deletions
@@ -16,19 +16,18 @@ monorepo control plane для четырёх независимых Git-репо
- Встроенная `spec-driven` schema отклонена: она не выражает обязательный переход Specs перед Design и не задаёт Delivery Map или проектные роли артефактов. - Встроенная `spec-driven` schema отклонена: она не выражает обязательный переход Specs перед Design и не задаёт Delivery Map или проектные роли артефактов.
- Отдельный workflow engine или custom generator отклонён: он создал бы конкурирующий формат и lifecycle authority. - Отдельный workflow engine или custom generator отклонён: он создал бы конкурирующий формат и lifecycle authority.
- Nx, Turborepo, Bazel, Make или just отклонены для текущего масштаба: workspace не имеет общего dependency graph, build cache или CI, а репозитории уже владеют canonical gates. - Nx, Turborepo, Bazel, Make или just отклонены для текущего масштаба: workspace не имеет общего dependency graph, build cache или CI, а репозитории уже владеют canonical gates.
- Patch-only, programmatic generator и symlink для root agent projection - Versioned source tree, patch-only, programmatic generator и symlink для root
отклонены из-за upstream text fragility, второго transformation engine либо agent entrypoints отклонены для текущего масштаба: они добавляют отдельный
tool/filesystem portability. Выбран committed canonical source tree с projection lifecycle поверх уже достаточных schema, docs и scripts.
explicit atomic sync и exact drift check.
## Последствия ## Последствия
OpenSpec CLI закреплён exact version contract; новая stable release не включает OpenSpec CLI закреплён exact version contract; новая stable release не включает
auto-upgrade, а смена contract является отдельным SDD change со staged auto-upgrade, а смена contract является отдельным SDD change со staged
compatibility fixtures. Project-owned commands и skills имеют versioned source compatibility fixtures. Root `.opencode` остаётся локальным non-authority
в `specs`, root `.opencode` является derived projection. Planning verifier до entrypoint, а hard constraints проверяются через authority verifier. Planning
approval проверяет только детерминированную структуру: capability set, Delivery verifier до approval проверяет только детерминированную структуру: capability
Map, rollback, task area и Requirement coverage. set, Delivery Map, rollback, task area и Requirement coverage.
Dispatcher знает четыре workspace area, но не реализует build или test logic: Dispatcher знает четыре workspace area, но не реализует build или test logic:
он делегирует repo-owned commands. Approval identity остаётся человеческим он делегирует repo-owned commands. Approval identity остаётся человеческим
+2 -2
View File
@@ -73,7 +73,7 @@ authority.
| SDD26-25 | Требовать точный текстовый `STOP_PROTOCOL` после каждого artifact. | [Z] | rejected | accepted | 2026-08-26; обязательная остановка и явный approval уже enforced entrypoints. Фиксация одной строки ответа хрупка и не усиливает identity или semantic approval. | | SDD26-25 | Требовать точный текстовый `STOP_PROTOCOL` после каждого artifact. | [Z] | rejected | accepted | 2026-08-26; обязательная остановка и явный approval уже enforced entrypoints. Фиксация одной строки ответа хрупка и не усиливает identity или semantic approval. |
| SDD26-26 | Сократить explanation `planningHome.root` до короткого imperative. | [Z] | rejected | accepted | 2026-08-26; пояснение предотвращает ошибочное вычисление path при store-backed и local modes OpenSpec 1.10. После удаления duplicate config rules instruction source остаётся приемлемым; пересмотреть при измеренном context regression. | | SDD26-26 | Сократить explanation `planningHome.root` до короткого imperative. | [Z] | rejected | accepted | 2026-08-26; пояснение предотвращает ошибочное вычисление path при store-backed и local modes OpenSpec 1.10. После удаления duplicate config rules instruction source остаётся приемлемым; пересмотреть при измеренном context regression. |
| SDD26-27 | Добавить дополнительные contract gates вроде `internal-proto`. | [G] | deferred | deferred | Review trigger: появление второго реального межсервисного committed contract, для которого `runtime-openapi` и repository gates недостаточны. До этого generic gate будет speculative. | | SDD26-27 | Добавить дополнительные contract gates вроде `internal-proto`. | [G] | deferred | deferred | Review trigger: появление второго реального межсервисного committed contract, для которого `runtime-openapi` и repository gates недостаточны. До этого generic gate будет speculative. |
| SDD26-28 | Root project-owned agent projection должна восстанавливаться из versioned authority. | local triage | confirmed | done | 2026-08-26; root `.opencode` projection получает canonical source, atomic sync и exact drift verifier в `specs`. | | SDD26-28 | Root project-owned agent projection должна восстанавливаться из versioned authority. | local triage | confirmed | done | 2026-08-26; superseded by follow-up cleanup: root `.opencode` остаётся local non-authority entrypoint без versioned projection source; hard constraints остаются в schema, docs и authority verifier. |
| SDD26-29 | Exact OpenSpec version должна быть единым compatibility contract, а не вечным literal в scripts/fixtures. | local triage | confirmed | done | 2026-08-26; `.cli-version` остаётся единственным current contract; markers/verifiers выводят expected value из него, новая stable не включает auto-upgrade. | | SDD26-29 | Exact OpenSpec version должна быть единым compatibility contract, а не вечным literal в scripts/fixtures. | local triage | confirmed | done | 2026-08-26; `.cli-version` остаётся единственным current contract; markers/verifiers выводят expected value из него, новая stable не включает auto-upgrade. |
| SDD26-30 | Raw multi-source evidence и triage должны быть versioned раздельно. | local triage | confirmed | done | 2026-08-26; пять reports сохранены byte-for-byte в [snapshot set](../audits/2026-08-26-wealth-ledger-sdd/README.md); live registry хранит dispositions и statuses отдельно. | | SDD26-30 | Raw multi-source evidence и triage должны быть versioned раздельно. | local triage | confirmed | done | 2026-08-26; пять reports сохранены byte-for-byte в [snapshot set](../audits/2026-08-26-wealth-ledger-sdd/README.md); live registry хранит dispositions и statuses отдельно. |
@@ -172,7 +172,7 @@ Change синхронизирован в canonical specs и архивирова
- Delivery Map: frontend `N/A`, backend `N/A`, specs affected, docs affected; runtime OpenAPI contract gate `N/A`, потому что application runtime API и generated client не менялись. - Delivery Map: frontend `N/A`, backend `N/A`, specs affected, docs affected; runtime OpenAPI contract gate `N/A`, потому что application runtime API и generated client не менялись.
- Затронутые Git-репозитории: specs `a8b2c4eed988f7e1a7b3d6b7188bbe6791f00e2a` (`feat: harden OpenSpec SDD workflow`), docs delivery `72c3a8a6683b95f7e734044fdabe568668097c33` (`docs: record SDD audit remediation`); terminal evidence фиксируется следующим docs commit. - Затронутые Git-репозитории: specs `a8b2c4eed988f7e1a7b3d6b7188bbe6791f00e2a` (`feat: harden OpenSpec SDD workflow`), docs delivery `72c3a8a6683b95f7e734044fdabe568668097c33` (`docs: record SDD audit remediation`); terminal evidence фиксируется следующим docs commit.
- Pre-archive `bash specs/scripts/verify-workspace-change.sh harden-openspec-sdd-quality` под Node 22.21.0 — passed: Delivery Map verified frontend/backend `N/A`, specs/docs affected, runtime-openapi `N/A`; OpenSpec CLI 1.10.0 verified; planning coverage 9/9; schema valid; change valid; main specs 20/20; authority verified; docs `npm run verify` passed with 36 Markdown files and 0 issues. - Pre-archive `bash specs/scripts/verify-workspace-change.sh harden-openspec-sdd-quality` под Node 22.21.0 — passed: Delivery Map verified frontend/backend `N/A`, specs/docs affected, runtime-openapi `N/A`; OpenSpec CLI 1.10.0 verified; planning coverage 9/9; schema valid; change valid; main specs 20/20; authority verified; docs `npm run verify` passed with 36 Markdown files and 0 issues.
- Controlled fixture suites: `bash specs/scripts/verify-agent-projection.test.sh` — passed; `bash specs/scripts/verify-openspec-authority.test.sh` — passed with expected controlled-negative failures. - Controlled fixture suites: `bash specs/scripts/verify-agent-projection.test.sh` — passed at delivery time; follow-up cleanup later removed the projection layer. `bash specs/scripts/verify-openspec-authority.test.sh` — passed with expected controlled-negative failures.
- Archive: `openspec archive harden-openspec-sdd-quality -y --store wealth-ledger-specs` — updated `audit-remediation-workflow`, `engineering-change-governance`, `multi-repository-delivery` and `openspec-authority-and-lifecycle`; archived as `2026-08-26-harden-openspec-sdd-quality`. - Archive: `openspec archive harden-openspec-sdd-quality -y --store wealth-ledger-specs` — updated `audit-remediation-workflow`, `engineering-change-governance`, `multi-repository-delivery` and `openspec-authority-and-lifecycle`; archived as `2026-08-26-harden-openspec-sdd-quality`.
- Post-archive verification: `openspec validate --specs --strict --store wealth-ledger-specs` — 20 passed, 0 failed; `bash specs/scripts/verify-openspec-authority.sh` — passed; `openspec schema validate wealth-ledger-sdd --verbose` — passed; `PATH=/Users/ksv741/.nvm/versions/node/v22.21.0/bin:$PATH npm run verify` in `docs` — passed. - Post-archive verification: `openspec validate --specs --strict --store wealth-ledger-specs` — 20 passed, 0 failed; `bash specs/scripts/verify-openspec-authority.sh` — passed; `openspec schema validate wealth-ledger-sdd --verbose` — passed; `PATH=/Users/ksv741/.nvm/versions/node/v22.21.0/bin:$PATH npm run verify` in `docs` — passed.
- Semantic verification: Proposal, all 9 Delta Spec requirements, 28 scenarios, Design and 18/18 tasks matched implementation. Independent read-only review found no Critical or Important findings. - Semantic verification: Proposal, all 9 Delta Spec requirements, 28 scenarios, Design and 18/18 tasks matched implementation. Independent read-only review found no Critical or Important findings.
+6 -7
View File
@@ -117,8 +117,7 @@ contract либо другое существенно труднообратим
| Текущее устройство и поставленные возможности | `docs/architecture` и `docs/features` | | Текущее устройство и поставленные возможности | `docs/architecture` и `docs/features` |
| Устойчивые архитектурные решения и причины | `docs/adr` | | Устойчивые архитектурные решения и причины | `docs/adr` |
| Инженерная policy и completion evidence | `docs/development` | | Инженерная policy и completion evidence | `docs/development` |
| Canonical source project-owned agent commands и skills | `specs/agent-projection/opencode` | | Компактная маршрутизация AI-агентов и локальные entrypoints | root/repository-local `AGENTS.md` и workspace `.opencode` |
| Компактная маршрутизация AI-агентов | root и repository-local `AGENTS.md` |
`docs` описывает только фактическое текущее состояние и не пересказывает Proposal, Delta Specs, Design или Tasks другим форматом. `AGENTS.md` не копирует архитектуру или feature documentation: он направляет к authority и перечисляет только применимые hard constraints и canonical commands. `docs` описывает только фактическое текущее состояние и не пересказывает Proposal, Delta Specs, Design или Tasks другим форматом. `AGENTS.md` не копирует архитектуру или feature documentation: он направляет к authority и перечисляет только применимые hard constraints и canonical commands.
@@ -137,15 +136,15 @@ CI пока отсутствует, поэтому обязательные gate
Hard guardrail должен иметь исполняемую локальную проверку. Правило без надёжной проверки помечается как guidance и учитывается в review, но не выдаётся за автоматический запрет. Новые frameworks, checkers и thresholds добавляются только после оценки поддерживаемого решения, maintenance cost и реально защищаемого риска. Hard guardrail должен иметь исполняемую локальную проверку. Правило без надёжной проверки помечается как guidance и учитывается в review, но не выдаётся за автоматический запрет. Новые frameworks, checkers и thresholds добавляются только после оценки поддерживаемого решения, maintenance cost и реально защищаемого риска.
Root `.opencode/commands` и `.opencode/skills` являются derived projection. Root `.opencode/commands` и `.opencode/skills` являются локальными
Изменения вносятся в versioned source под `specs`, распространяются explicit non-authority entrypoints. Они должны соблюдать fixed store, version preflight,
atomic sync и проверяются exact file/content comparison; package manifests, one-artifact approvals и hard archive blockers, но не имеют отдельного
dependencies и machine-local state не являются authority inputs. versioned projection source.
Текущая exact OpenSpec CLI version читается только из Текущая exact OpenSpec CLI version читается только из
`specs/openspec/.cli-version`. Новая stable release не меняет contract `specs/openspec/.cli-version`. Новая stable release не меняет contract
автоматически. Upgrade выполняется отдельным SDD change после isolated проверки автоматически. Upgrade выполняется отдельным SDD change после isolated проверки
schema, agent projection, canonical store и positive/negative fixtures; schema, agent workflow, canonical store и positive/negative fixtures;
историческое evidence сохраняет фактическую прежнюю version. историческое evidence сохраняет фактическую прежнюю version.
## Verify, archive и Completion Evidence ## Verify, archive и Completion Evidence
@@ -21,7 +21,7 @@ bash specs/scripts/verify-openspec-version.sh
Несовпадение version блокирует операцию до чтения или изменения store. Несовпадение version блокирует операцию до чтения или изменения store.
Публикация новой stable версии не меняет этот contract автоматически. Upgrade Публикация новой stable версии не меняет этот contract автоматически. Upgrade
выполняется отдельным SDD change после staged проверки schema, instructions, выполняется отдельным SDD change после staged проверки schema, instructions,
project-owned projection, store resolution и hard blockers; historical archives agent workflow, store resolution и hard blockers; historical archives
не переписываются. не переписываются.
## Project-local schema ## Project-local schema
@@ -58,29 +58,16 @@ openspec schema which wealth-ledger-sdd --json
## Agent entrypoints и обновление OpenSpec ## Agent entrypoints и обновление OpenSpec
Canonical source WealthLedger-owned OpenCode commands и skills находится в Root `.opencode/commands` и `.opencode/skills` — локальные non-authority
`specs/agent-projection/opencode`. Root `.opencode/commands` и entrypoints. Они удобны для работы агента, но не являются SDD source of truth и
`.opencode/skills` — derived local projection с минимальными overlays: fixed не имеют отдельного versioned projection source. Нормативный contract хранится
store, one-artifact-at-a-time, stage planning gate, Apply feedback routing и в schema, `AGENTS.md`, governance и non-mutating scripts.
hard archive blockers. Package manifests, installed dependencies и machine-local
state не входят в source.
Projection восстанавливается и проверяется из workspace root:
```bash
bash specs/scripts/sync-agent-projection.sh
bash specs/scripts/verify-agent-projection.sh
```
Sync выполняет verified cutover и восстанавливает прежнее local state при
ошибке. Verifier non-mutating сравнивает required file set и contents и получает
expected `generatedBy` marker из `.cli-version`.
`openspec update` не запускается напрямую из workspace root. Новую upstream `openspec update` не запускается напрямую из workspace root. Новую upstream
version сначала генерируют в isolated staging, сравнивают с canonical source, version сначала проверяют в isolated staging и повторно накладывают минимальные
переносят upstream delta и повторно накладывают минимальные project overlays. project constraints: fixed store, one-artifact-at-a-time, stage planning gate,
После этого sync обновляет derived root, а authority fixtures проверяют marker, Apply feedback routing и hard archive blockers. Authority fixtures проверяют
missing/content drift, permissive archive, conditional store selection и второй version preflight, permissive archive, conditional store selection и второй
`openspec` root как failures. `openspec` root как failures.
## Реализация и проверка change ## Реализация и проверка change
@@ -102,7 +89,6 @@ Requirement покрывается точной ссылкой хотя бы о
```bash ```bash
bash specs/scripts/verify-openspec-authority.sh bash specs/scripts/verify-openspec-authority.sh
bash specs/scripts/verify-agent-projection.sh
openspec validate <change> --type change --strict --store wealth-ledger-specs openspec validate <change> --type change --strict --store wealth-ledger-specs
openspec validate --specs --strict --store wealth-ledger-specs openspec validate --specs --strict --store wealth-ledger-specs
``` ```