docs: record AI governance audit

This commit is contained in:
2026-08-24 19:55:28 +03:00
parent eb69300ebe
commit 1944f2fc97
21 changed files with 1764 additions and 44 deletions
+50 -12
View File
@@ -2,29 +2,67 @@
## Назначение
Этот документ фиксирует постоянные границы SDD-процесса WealthLedger. Он не содержит requirements, design, delta-specs или tasks конкретного change: они живут только в canonical OpenSpec store.
Этот документ описывает фактически настроенный OpenSpec workflow WealthLedger. Общие определения, approval policy, risk-based testing и build-versus-buy находятся в [Engineering governance](engineering-governance.md).
## Единственный SDD store
- Canonical OpenSpec store: `wealth-ledger-specs`.
- Canonical store: `wealth-ledger-specs`.
- Физический root: `specs/openspec` относительно workspace.
- Requirements, design, delta-specs, tasks, changes и archives создаются и коммитятся только в этом store.
- Любая OpenSpec command, читающая или изменяющая change, явно использует `--store wealth-ledger-specs`; cwd, ближайший root и глобальная конфигурация машины не выбирают store проекта.
- 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 операциями выполняется:
- `docs` хранит только долговечную architecture, development, feature, audit и remediation documentation, включая completion evidence после archive.
- `frontend` и `backend` хранят runtime code и tests, но не framework-specific planning artifacts.
- Framework-specific requirements, plans, specs, design и task artifacts вне `specs/openspec` не создаются и не коммитятся; это включает `superpowers/plans`.
- `references/**` — read-only reference content. Его framework artifacts не являются нарушением и не подлежат переносу или очистке без отдельной задачи.
```bash
bash specs/scripts/verify-openspec-version.sh
```
## Завершение change
Несовпадение version блокирует операцию до чтения или изменения store.
Archive разрешён только после завершения всех planning artifacts и всех tasks. Post-archive bookkeeping не может быть незакрытым task: после успешного archive durable registry/history фиксирует фактический archive path, commits затронутых репозиториев, команды проверки и observed results.
## Project-local schema
Перед завершением change выполните из workspace:
Новые changes по умолчанию используют schema `wealth-ledger-sdd` из `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.
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
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
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
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](engineering-governance.md); final evidence commit не подменяется незакрытым task.