Files
docs/development/openspec-authority-and-lifecycle.md
T

5.1 KiB
Raw Blame History

OpenSpec authority и lifecycle

Назначение

Этот документ описывает фактически настроенный OpenSpec workflow WealthLedger. Общие определения, approval policy, risk-based testing и build-versus-buy находятся в Engineering governance.

Единственный 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 specs/scripts/verify-openspec-version.sh

Несовпадение version блокирует операцию до чтения или изменения store.

Project-local schema

Новые changes по умолчанию используют schema wealth-ledger-sdd из specs/openspec/schemas/wealth-ledger-sdd. Её граф:

proposal → specs → design → tasks → apply

OpenSpec обеспечивает structural order, а явное решение Change Owner — переход между артефактами. Agent создаёт один текущий artifact и останавливается для approval. Роли артефактов и cascade rules определены в governance policy; исполняемые templates и instructions принадлежат schema.

Project-local schema проверяется из specs:

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

Root .opencode — generated local projection OpenSpec 1.10 с минимальными WealthLedger overlays: fixed store, one-artifact-at-a-time и hard archive blockers. Она не является SSOT, потому что workspace root не versioned.

openspec update не запускается напрямую из workspace root. Новую upstream version сначала генерируют в isolated staging, сравнивают с projection, переносят upstream delta и повторно накладывают project overlays. После этого обязательно выполняют authority fixtures; 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 specs/scripts/verify-workspace-change.sh <change>

specs проверяется всегда. Dispatcher читает явный Contract Gate Decision из Design и сравнивает backend runtime OpenAPI с committed frontend snapshot только при runtime-openapi: required; этот status допустим лишь при affected frontend и backend. Child failure блокирует общий результат; fallback и auto-fix отсутствуют.

Перед archive отдельно подтверждаются structural и semantic gates:

bash specs/scripts/verify-openspec-authority.sh
openspec validate <change> --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; final evidence commit не подменяется незакрытым task.