# OpenSpec authority и lifecycle ## Назначение Этот документ описывает фактически настроенный OpenSpec workflow WealthLedger. Общие определения, approval policy, risk-based testing и build-versus-buy находятся в [Engineering governance](engineering-governance.md). ## Единственный SDD store - Canonical store: `wealth-ledger-specs`. - Физический root: `specs/openspec` относительно workspace. - Requirements, Delta Specs, Design, Tasks, changes и archives хранятся только в этом store. - Команда, читающая или изменяющая change, всегда получает `--store wealth-ledger-specs`; cwd и nearest-root discovery не выбирают authority проекта. - Versioned framework-specific planning artifacts вне `specs/openspec`, включая `superpowers/plans`, запрещены. `references/**` остаётся read-only исключением. Exact поддерживаемая OpenSpec CLI version хранится в `specs/openspec/.cli-version`. Перед project-owned операциями выполняется: ```bash bash specs/scripts/verify-openspec-version.sh ``` Несовпадение version блокирует операцию до чтения или изменения store. Публикация новой stable версии не меняет этот contract автоматически. Upgrade выполняется отдельным SDD change после staged проверки schema, instructions, project-owned projection, store resolution и hard blockers; historical archives не переписываются. ## Project-local schema Новые changes по умолчанию используют schema `wealth-ledger-sdd` version 2 из `specs/openspec/schemas/wealth-ledger-sdd`. Её граф: ```text proposal → specs → design → tasks → apply ``` OpenSpec обеспечивает structural order, а явное решение Change Owner — переход между артефактами. Agent создаёт один текущий artifact и останавливается для approval. Роли артефактов и cascade rules определены в governance policy; исполняемые templates и instructions принадлежат schema. До запроса approval выполняется доступная stage-aware проверка: ```bash bash specs/scripts/verify-openspec-planning.sh ``` Proposal проверяется без ложного объявления полного change success; по мере появления Specs, Design и Tasks добавляются strict validation, Delivery Map, rollback, area ownership и exact Requirement coverage. Технический format failure исправляется и проверяется повторно; structural success не означает approval. Project-local schema проверяется из `specs`: ```bash openspec schema validate wealth-ledger-sdd --verbose openspec schema which wealth-ledger-sdd --json ``` `schema which` должен указывать project-local source. `specs/openspec/config.yaml` хранит default schema и компактный routing context, а не копию полной policy. ## Agent entrypoints и обновление OpenSpec Canonical source WealthLedger-owned OpenCode commands и skills находится в `specs/agent-projection/opencode`. Root `.opencode/commands` и `.opencode/skills` — derived local projection с минимальными overlays: fixed store, one-artifact-at-a-time, stage planning gate, Apply feedback routing и 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 version сначала генерируют в isolated staging, сравнивают с canonical source, переносят upstream delta и повторно накладывают минимальные project overlays. После этого sync обновляет derived root, а authority fixtures проверяют marker, missing/content drift, permissive archive, conditional store selection и второй `openspec` root как failures. ## Реализация и проверка change Design содержит Delivery Map для `frontend`, `backend`, `specs` и `docs`. Из workspace один non-mutating dispatcher проверяет карту и запускает canonical gates affected areas: ```bash bash specs/scripts/verify-workspace-change.sh ``` `specs` проверяется всегда. Dispatcher читает явный Contract Gate Decision из Design и сравнивает backend runtime OpenAPI с committed frontend snapshot только при `runtime-openapi: required`; этот status допустим лишь при affected frontend и backend. Child failure блокирует общий результат; fallback и auto-fix отсутствуют. Перед affected-area gates dispatcher повторяет planning verifier. Tasks имеют формат `X.Y [area] action` и indented `Covers`/`Verification`; каждый Delta Requirement покрывается точной ссылкой хотя бы один раз, а `workspace` остаётся только owner orchestration/verification. Перед archive отдельно подтверждаются structural и semantic gates: ```bash bash specs/scripts/verify-openspec-authority.sh bash specs/scripts/verify-agent-projection.sh openspec validate --type change --strict --store wealth-ledger-specs openspec validate --specs --strict --store wealth-ledger-specs ``` Structural success не доказывает соответствие реализации. Project-owned verify workflow сопоставляет реализацию с Proposal, Delta Specs, Design и Tasks, затем требует independent read-only review без Critical и Important findings. Archive отклоняется при незавершённом artifact approval, unchecked task, failed affected-area gate, отсутствующей semantic verification или independent review. Confirmation override для этих условий отсутствует. Completion Evidence создаётся только после archive и delivery commits по двухфазному протоколу [Engineering governance](engineering-governance.md); final evidence commit не подменяется незакрытым task.