13 KiB
Context
Project-local schema v2 уже владеет SDD semantics, а stage-aware verifier
проверяет artifact graph, coverage и Delivery Map. При этом обязательные правила
распределены внутри длинных instructions, единый Delta Spec template начинает с
ADDED Requirements, а planning failures не имеют общего явного разделения на
artifact, invocation и environment причины. OpenSpec CLI 1.10.0 остаётся
project version contract; schema API имеет experimental status, поэтому решение
должно сохранять native graph и не вводить новый workflow engine.
Шесть second-round reports находятся как локальный неversioned corpus. Они содержат повторы прежних claims, предложения, противоречащие действующей policy, и неполный provenance. Existing remediation workflow уже определяет immutable snapshot и отдельный live triage, поэтому новый формат evidence не требуется.
Goals / Non-Goals
Goals:
- Сохранить project schema единственным владельцем artifact semantics, сделав Critical Rules первыми и устранив повторяющийся explanation text.
- Сохранить один native artifact graph и сделать Delta Spec scaffold нейтральным к operation.
- Дать planning verifier устойчивую taxonomy отказов и оставить semantic
качество
N/Arationale на human review boundary. - Использовать уже разрешённый CLI context и существующую repository routing policy без второго mapping authority.
- Зафиксировать второй review corpus и его triage в существующей audit model.
Non-Goals:
- Универсализация topology за пределы WealthLedger.
- Persistent approval state, дополнительные review/done/solution artifacts или cross-change dependency graph.
- CI, commit convention, task sizing, Success Metrics либо schema changelog.
- Числовой quality threshold для instruction size, checksum или byte-count gate для audit reports.
- Изменение application runtime, данных или API contract.
Decisions
1. Сохранить текущие authority boundaries и выпустить schema v3
Schema продолжает владеть normative agent semantics; templates владеют исходной формой artifacts, project config содержит только устойчивый context, scripts реализуют детерминированные hard invariants, а durable docs описывает as-built process. Каждая artifact instruction начинается с компактного блока Critical Rules, после которого идут только stage-specific details. Пояснения приводятся по-русски, а exact OpenSpec tokens, headings, commands и SHALL/MUST сохраняются на английском.
Material instruction, template и verifier contract change повышает schema version до 3. Исторический rationale остаётся в canonical change, archive, registry и Git history; отдельный changelog не создаётся.
2. Сделать Delta Spec scaffold operation-neutral
Единый template не может знать, новая capability или существующая и какая delta
operation требуется. Поэтому он не создаёт активные operation headings, а через
Markdown comments показывает выбор из ADDED, MODIFIED, REMOVED, RENAMED
и условный Purpose. Агент добавляет только применимые sections. Компактная
shape guidance перемещается из длинной Specs instruction в template comments;
semantic rules полного MODIFIED, полей REMOVED и формата RENAMED остаются
в schema.
3. Ввести три machine-distinguishable класса planning failure
Verifier использует стабильные категории результата:
artifact-validationс exit 1 — artifact существует, но нарушает проверяемую форму или ссылочную целостность; разрешено исправить только указанное нарушение;invocationс exit 2 — неверное число аргументов, имя или неразрешимый change; исправляется вызов, а не artifact;environmentс exit 3 — отсутствует или несовместим runtime, CLI либо другой prerequisite; сначала диагностируется окружение, artifact не меняется.
Project instruction ссылается на эти категории и не вводит retry counter. Unexpected internal failure остаётся blocking result и не маскируется под artifact validation.
4. Разделить structural и semantic качество N/A
Hard guardrail отклоняет пустую причину, одиночный separator и неразрешённый template placeholder. Instruction и template требуют объяснить отсутствие самостоятельного observable behavior, техническую необходимость и связь с утверждённым Design или delivery. Смысл непустого rationale оценивают Change Owner и independent review; blacklist слов и эвристический natural-language checker не добавляются.
5. Использовать CLI-resolved context
Apply instruction прямо требует прочитать все paths из contextFiles,
возвращённых native OpenSpec instructions, затем applicable local routing
instructions affected areas. Он не вычисляет planning paths и не требует нового
context map. Это сохраняет portable CLI state единственным владельцем resolved
artifact context.
6. Включить review corpus без дополнительной integrity ceremony
Шесть reports переносятся в новый immutable audit snapshot set без изменения их текста. Короткий index перечисляет sources и известные provenance ограничения; checksum, byte-count manifest и отдельный validation framework не добавляются. Live registry дедуплицирует claims против существующих Audit IDs: повторы получают existing evidence/rationale, а действительно residual gaps — новые follow-up records, связанные с этим change.
7. Проверять сохранение invariants, а не оптимизировать цифру
Verification сопоставляет принятые lifecycle invariants с одним authoritative owner, проверяет compliant и controlled-invalid cases для новых hard guards и фиксирует наблюдаемое удаление duplication. Instruction length может быть сообщена как diagnostic, но не становится blocking threshold. Внешний model score не является completion evidence.
Delivery Map
| Area | Status | Architectural outcome or N/A reason |
|---|---|---|
| frontend | N/A |
Client behavior, implementation и local gate не меняются. |
| backend | N/A |
API behavior, implementation и local gate не меняются. |
| specs | affected |
Schema v3, planning verifier, templates, fixtures и canonical Delta Specs поставляют новый workflow contract. |
| docs | affected |
Второй audit snapshot, live triage и as-built lifecycle documentation отражают поставленный process. |
Contract Gate Decision
| Gate | Status | Reason |
|---|---|---|
| runtime-openapi | N/A |
Ни backend runtime contract, ни frontend committed client snapshot не меняются. |
Solution Assessment
Change существенно меняет shared agent tooling, поэтому применён обязательный build-versus-buy review.
| Option | Fit and maturity | Security / operating cost | Constraints / migration cost | Decision |
|---|---|---|---|---|
| Native project OpenSpec schema, templates и existing verifier | Полностью сохраняет используемый OpenSpec 1.10.0 graph и уже поставленные project gates. | Не добавляет runtime или data surface; поддерживается текущими local gates. | Требует узкой правки project-owned contracts и controlled fixtures; active changes остаются совместимыми по artifact IDs. | Selected. |
| Global agent prompt или внешний common-rules file | Может сократить schema text, но загрузка зависит от agent framework и не гарантируется native OpenSpec. | Создаёт competing authority и постоянную стоимость синхронизации. | Потребовал бы projection/versioning discipline и миграцию всех entrypoints. | Rejected. |
| Дополнительный workflow framework или новые approval/context/done artifacts | Может хранить больше machine-readable state, но дублирует native graph и решает неподтверждённые risks. | Увеличивает process surface и число stale states без security benefit. | Высокая миграционная и эксплуатационная стоимость; конфликт с утверждённой governance. | Rejected. |
Native project-local schema выбрана потому, что текущий OpenSpec 1.10.0 contract уже предоставляет используемую extension boundary для artifacts, templates и instructions, а external prompt и дополнительные state artifacts не выполняют утверждённые authority constraints. Review trigger: несовместимое изменение native schema API либо появление поддерживаемого OpenSpec mechanism для общих typed rules и failure classification.
Risks / Trade-offs
- При сокращении потеряется обязательное правило. Mitigation: inventory действующих invariants, authority fixtures и semantic comparison до/после.
- Neutral scaffold даст слишком мало shape guidance. Mitigation: commented operation menu и controlled deltas для всех четырёх operations.
- Failure будет отнесён не к той категории. Mitigation: отдельные controlled failures для artifact, invocation и environment paths; неожиданный failure остаётся blocking.
- Непустой, но слабый
N/Aпройдёт structural gate. Это осознанный trade-off: semantic approval и independent review остаются владельцами смысла, чтобы эвристика не выдавала false confidence. - Schema v3 применяется к текущему active change. Mitigation: artifact IDs и dependency graph не меняются; current change повторно проходит planning и strict schema/change validation после migration.
Migration Plan
- Сначала обновить normative schema contract и operation-neutral template, сохранив artifact IDs и dependency graph.
- Затем обновить verifier taxonomy и controlled fixtures, после чего повторно проверить active change новым contract.
- Перенести review corpus в immutable docs snapshot, выполнить deduplicated triage и синхронизировать as-built lifecycle wording.
- Выполнить canonical gates affected areas, semantic verification и independent read-only review до archive.
Rollback Contract
| Field | Decision |
|---|---|
| Status | N/A |
| Reason | Изменение обратимо в versioned tooling/docs, не меняет auth, данные, migration или public contract и не требует отдельного rollback contract. |
| Trigger | N/A |
| Actions | N/A |
| Data safety | N/A; application data не затрагиваются. |
| Verification | N/A |