## 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/A` rationale на 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 1. Сначала обновить normative schema contract и operation-neutral template, сохранив artifact IDs и dependency graph. 2. Затем обновить verifier taxonomy и controlled fixtures, после чего повторно проверить active change новым contract. 3. Перенести review corpus в immutable docs snapshot, выполнить deduplicated triage и синхронизировать as-built lifecycle wording. 4. Выполнить 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 |