10. Lifecycle и Quality Gates
10.1 Назначение главы
Глава нормирует:
- Понятие Quality Gate — нормативное определение, pre/post-conditions, кто и когда обязан проверять.
- Канонический закрытый список gates RENAR: QG-0 (Approval), QG-1 (Implementation), QG-2 (Verification) — обязательные для conformance; QG-3 (Architecture) и QG-4 (Acceptance) — опциональные расширения.
- Lifecycle всех артефактов RENAR: BR / SR / TR (требования, глава 06), SPEC (глава 08), ADAPT (глава 07), TC (глава 09) — консолидированные state machines с привязкой gate-id к каждому переходу.
- Substrate-agnostic enforcement — нормативные требования к hook-механизмам через capabilities V1–V6 (глава 11). Конкретные имплементации (substrate-native реализация hooks) выносятся в
guide/и conformance manifest. - Closed list policy: добавление нового типа Quality Gate производится только через formal change procedure стандарта RENAR (глава 14); project-local расширения списка gate-типов запрещены.
Глава не определяет frontmatter артефактов (это делают главы 06–09). Глава фиксирует только lifecycle states, переходы между ними и gates, контролирующие переходы.
10.2 Нормативное определение Quality Gate
10.2.1 Quality Gate
Quality Gate (gate) — нормативное условие, проверка которого обязана быть выполнена для разрешённого перехода артефакта из одного lifecycle-состояния в другое. Каждый gate состоит из:
- Идентификатор —
QG-NилиQG-<artifact>-<state>(закрытый список §10.3, §10.4). - Pre-condition — набор проверяемых утверждений об артефакте и связанных артефактах, которые обязаны быть истинны на момент запуска gate.
- Post-condition — состояние, в которое переходит артефакт после успешного прохождения gate, и наблюдаемые эффекты (например, появление записи в лог переходов §10.13).
- Триггер — кто или что инициирует проверку gate (актор: AI-агент / архитектор / автоматический runner; событие: одобрение / завершение прогона / поступление delta-ТЗ).
- Enforcement-точка — место в substrate, где проверка обязана быть автоматизирована (§10.11).
Gate не является событием успеха — это условие, которое обязано быть проверено. Прохождение gate может быть отрицательным (pre-condition не выполнен) — в этом случае переход запрещён и артефакт остаётся в текущем состоянии.
10.2.2 Кто обязан проверять gate
| Тип gate | Обязательный actor | Substrate enforcement |
|---|---|---|
| Approval (QG-0) | Архитектор или авторизованный role-holder | Атомарная фиксация авторства и времени (V6, §11.3.6) |
| Implementation (QG-1) | Автоматический runner (CI, eval-runner) | Атомарная фиксация результата прогона привязанного к версии артефакта (V5, §11.3.5) |
| Verification (QG-2) | Автоматический runner с подтверждением version-pin | V5 + V6 |
| Architecture (QG-3, опционально) | Двойная подпись (клиент + архитектор) | V3 + V6 |
| Acceptance (QG-4, опционально) | Stakeholder с полномочиями | V6 |
10.2.3 Связь с SENAR
SENAR §8 описывает Quality Gates как абстрактную концепцию для AI-управляемой разработки. RENAR расширяет SENAR в области requirements engineering:
- Сохраняет идентификаторы QG-0 / QG-1 / QG-2 как обязательные.
- Нормирует формальные state machines для каждого типа артефакта (SENAR этого не делает).
- Привязывает каждый переход в state machine к конкретному gate с pre/post-conditions.
- Добавляет опциональные QG-3 / QG-4 для отраслей с расширенными требованиями к аудиту.
RENAR не противоречит SENAR; имплементация SENAR-совместима с RENAR если выполнены требования §10.3 + §10.11.
10.3 Канонические RENAR gates (обязательные)
Закрытый список из трёх обязательных gates. Расширения вне этого списка — только опциональные §10.4 или через formal change procedure стандарта §10.10.
10.3.1 QG-0 — Approval Gate
Назначение: разрешает переход артефакта из черновика в утверждённое для разработки состояние.
Pre-condition (общая часть, дополняется per-artifact в §10.5–§10.9):
- Frontmatter артефакта валиден по schema своей главы.
- Идентификатор артефакта уникален в substrate (V1, §11.3.1).
- Adversarial review произведён; или явно зафиксировано отсутствие применимости — допустимо только для тривиальных артефактов (по критериям, объявленным в conformance manifest, §14) с записью причины в лог переходов (§10.13).
- Если артефакт ссылается на источник (
source.adaptдля BR/SR/SPEC,verifies[]для TC) — referenced артефакт существует в substrate в состоянии не нижеapproved.
Post-condition:
- Артефакт переходит в
approved(для requirements / SPEC) илиready(для TC) илиapprovedADAPT (§10.8). - Запись в лог переходов (§10.13).
- Для requirements / SPEC: разрешается декомпозиция в дочерние артефакты (для BR — SR; для SR — TR + SPEC через
constrained-by/implements-spec).
Триггер: явное одобрение архитектором / role-holder в substrate-native механизме (V3 diff & review, §11.3.3).
Применимые артефакты: BR, SR, TR, SPEC, ADAPT, TC.
10.3.2 QG-1 — Implementation Gate
Назначение: подтверждает, что для артефакта существует валидная реализация — код, конфигурация, инфраструктурный артефакт — пригодная для верификации.
Pre-condition:
- Реализация привязана к версии артефакта через
version-pin(V5, §11.3.5). automation.status: automated(с валиднымautomation.location) илиautomation.status: manual-pending(с указаннымmanual-pending-untilиmanual-pending-reason).- Все статические проверки имплементации substrate-агента (типы, lint, схема) — пройдены.
- Pos/neg парность для покрываемых утверждений артефакта обеспечена (глава 09 §9.7).
- Все обязательные секции body TC (глава 09 §9.4) заполнены.
Post-condition:
- TC переходит в
ready. - Запись в лог переходов.
Триггер: одобряющий actor (one-click promote draft → ready) при подтверждении автоматического runner о прохождении dry-run.
Применимые артефакты: TC (draft → ready).
Примечание: TR не имеет самостоятельной gate-passage QG-1. Условия валидности реализации (impl scope, version-pin, статические проверки) для TR фиксируются как pre-conditions QG-2 (§10.6.2). QG-1 — отдельный gate только для TC. Для BR / SR / SPEC аналогично — переход approved → verified управляется единым QG-2; промежуточного «QG-1 implementation» для requirements / SPEC не существует.
10.3.3 QG-2 — Verification Gate
Назначение: подтверждает, что наблюдаемое поведение системы соответствует артефакту: все TC из verified-by артефакта в состоянии passing на текущей версии артефакта.
Pre-condition:
- Для BR / SR / SPEC: все TC из
verified-byимеютlast-run.result = passиlast-run.requirement-version(или эквивалентspec-version/version) совпадает с текущейversionверифицируемого артефакта. - Pos/neg парность по нормативным утверждениям артефакта — выполнена.
- Все обязательные spec-specific виды TC для типа артефакта присутствуют (глава 09 §9.8).
- Для TR: все его AC верифицированы привязанными TC (
last-run.result = pass). - Spec-specific дополнительные предусловия:
- SPEC-UI / SPEC-AI: TC в состоянии
passingсjudge-isolationсоблюдённой (глава 09 §9.13.4). - SPEC-SEC: TC
tc-type: securityприсутствует иpassing.
- SPEC-UI / SPEC-AI: TC в состоянии
Post-condition:
- Артефакт переходит в
verified. - Запись в лог переходов с evidence-refs (список ID прогонов).
- Substrate обязан фиксировать
versionверифицируемого артефакта в evidence-записи (V5).
Триггер: автоматический runner подтверждает passing TC и инициирует promote-transition по запросу автора (one-click promote approved → verified).
Применимые артефакты: BR, SR, SPEC, TR.
10.4 Опциональные gates
QG-3 и QG-4 — нормативно описаны, но не обязательны для conformance (глава 14). Имплементация может объявить в conformance manifest либо поддержку QG-3 / QG-4, либо их отсутствие. Conformance без QG-3 / QG-4 остаётся валидной.
10.4.1 QG-3 — Architecture Gate (опционально)
Назначение: разрешает переход ADAPT из answered в approved (§10.8). Также применим к декомпозиционным решениям SPEC-ARCH в проектах с регулируемой архитектурной приёмкой.
Pre-condition:
- Все backward findings в ADAPT в статусе
resolved(глава 07 §7.4.5). - Двойная подпись готова: client signature + architect signature (глава 07 §7.5).
- Для SPEC-ARCH (если QG-3 применяется): декомпозиционное решение зафиксировано в substrate как ADR-like артефакт со ссылкой из SPEC-ARCH (форма ADR substrate-specific — fits в guide/).
Post-condition:
- ADAPT переходит в
approved(immutable наравне с ТЗ). - Запись в лог переходов с обеими подписями (V6 author + timestamp фиксирует обоих акторов).
Триггер: явный двойной approval; substrate обязан атомарно фиксировать обе подписи (V2 atomic change unit, §11.3.2).
Когда применять:
- ADAPT — всегда (но имплементация может объявить QG-3 как локальный псевдоним для approval ADAPT, не выделяя его в отдельный gate).
- SPEC-ARCH — в проектах с регуляторными требованиями к архитектурной приёмке.
10.4.2 QG-4 — Acceptance Gate (опционально)
Назначение: фиксирует приёмку клиентом бизнес-результата после релиза. Переход BR из verified в accepted.
Pre-condition:
- BR в
verified(QG-2 пройден). - Измеримый бизнес-результат (
business-outcomeв frontmatter BR) — измерен;current-valueзафиксирован. achievement≥ project-configurable порога (по умолчанию 80 %, фиксируется в conformance manifest).- Формальная подпись stakeholder’а.
Post-condition:
- BR переходит в
accepted(терминальный недеградируемый статус — обратный переход требует delta-ТЗ). - Запись в лог переходов с подписью stakeholder’а.
Триггер: формальная приёмка stakeholder’ом по факту релиза.
Когда применять:
- Проекты с явной фиксацией post-release outcomes (продуктовые SaaS, регулируемые отрасли).
- При отсутствии QG-4 — статус
acceptedне используется; BR остаётся вverifiedдоdeprecated.
10.4.3 Conformance с/без опциональных gates
Conformance manifest (глава 14) обязан явно объявлять:
quality-gates:
qg-0: required # всегда required
qg-1: required
qg-2: required
qg-3: declared # required | declared | absent
qg-4: declared
declared означает: имплементация поддерживает gate; артефакты могут проходить его, но conformance не требует прохождения для всех артефактов. absent — gate не применяется в имплементации; терминальное состояние артефакта — verified (без accepted).
10.5 State machine BR / SR
10.5.1 Состояния и переходы
draft ──[QG-0]──▶ approved ──[QG-2]──▶ verified ──[QG-4 (опционально)]──▶ accepted
│ │ │ │
│ │ │ │
└──────────┬──────────┴──────────────────────┴──────────[deprecation]─────────────┘
▼
deprecated (terminal; с `replaced-by` если есть замена)
| Статус | Семантика | Gate перехода |
|---|---|---|
draft | Создан AI-агентом или архитектором; ещё не утверждён | — (создание) |
approved | Утверждён к декомпозиции / реализации | QG-0 (§10.3.1) |
verified | Все производные TC passing на текущей версии | QG-2 (§10.3.3) |
accepted | Post-release бизнес-результат подтверждён | QG-4 (§10.4.2, опционально) |
deprecated | Терминальный; не удаляется (V1 immutable history) | Deprecation transition (§10.5.3) |
Frontmatter BR / SR (включая обязательные поля статуса) определяется в главе 06 §6.5.2 / §6.6.2. Этот раздел нормирует только переходы между состояниями и привязку к gates.
10.5.2 Pre-conditions per transition
| Переход | Gate | Дополнительные pre-conditions (поверх §10.3) |
|---|---|---|
draft → approved | QG-0 | BR: business-outcome заполнен. SR: parent BR в состоянии не ниже approved. Если SR ссылается на SPEC через constrained-by[] — все SPEC в approved или выше. |
approved → verified | QG-2 | Хотя бы один TC с negative: true в verified-by. Все last-run.requirement-version совпадают с текущей version. |
verified → accepted | QG-4 | Только если имплементация объявила QG-4. |
* → deprecated | Deprecation transition (§10.5.3) | См. §10.5.3 |
10.5.3 Deprecation transition
Pre-condition:
- Артефакт находится в любом не-
deprecatedсостоянии. replaced-by(если указан) существует в substrate и находится в состоянии не нижеapproved.- Нет активных дочерних TR в состоянии
approvedили активных задач исполнителя по этому артефакту (атомарная переадресация задач на replacement — обязательное условие, V2 atomic change unit).
Post-condition:
status: deprecated.deprecated-dateзаписан (V6).replaced-byуказан, если есть замена.
Триггер: архитектор или Product Owner.
10.5.4 Reverse-эволюция верификации
Если артефакт уже verified, но version инкрементировался (например, после применения delta-ADAPT, глава 07 §7.6) — статус обязан вернуться в approved до повторного прохождения QG-2 на новой версии. Этот переход обязателен и автоматический: substrate обязан инвалидировать verified при изменении version (глава 06 §6.5.4 reverse-эволюция).
10.6 State machine TR
10.6.1 Состояния и переходы
draft ──[QG-0]──▶ approved ──[QG-2 (per TR)]──▶ done
│ │ │
│ │ │
└─────────────────────┴───[обесценивание]─────────▶ obsolete
| Статус | Семантика | Gate |
|---|---|---|
draft | TR создан; AC ещё не финализированы | — |
approved | AC утверждены; разрешён старт работы исполнителя | QG-0 (§10.3.1) с TR-specific pre-conditions §10.6.2 |
done | AC верифицированы; все привязанные TC passing | QG-2 (§10.3.3) с TR-specific pre-conditions §10.6.2 |
obsolete | TR утратил актуальность до завершения (родительский SR изменился) | Обесценивание (архитектор) |
10.6.2 TR-specific pre-conditions
QG-0 для TR (draft → approved) — дополнительно к общей части:
- Цель сформулирована (
goal). - AC верифицируемы и независимы (каждый AC — отдельная проверка).
- Хотя бы один негативный сценарий присутствует.
- Установлена ссылка на parent SR (или BR для простых конфигураций) через
implements. - Если TR реализует SPEC — обязательное поле
implements-spec[](глава 08 §8.6.2). - Если задача затрагивает безопасность —
threat-surfaceзадекларирован (глава 08 §8.5.8).
QG-2 для TR (approved → done):
- Все AC TR подтверждены прохождением соответствующих TC (
last-run.result = pass). - Pos/neg парность по каждому AC.
- Для TR реализующего SPEC: TC соответствующего spec-specific вида существует и
passing(глава 09 §9.8).
10.6.3 Обесценивание TR
Если родительский SR переходит в deprecated или его version изменилась так, что AC TR более не актуальны — TR переходит в obsolete. Это не деградация — это альтернативный терминальный путь. TR в obsolete не удаляется.
10.7 State machine SPEC
10.7.1 Состояния и переходы
draft ──[review-transition]──▶ review ──[QG-0]──▶ approved ──[QG-2]──▶ verified
│ │
└───[обесценивание]──▶ obsolete (terminal)
| Статус | Семантика | Gate |
|---|---|---|
draft | SPEC создан; обязательные frontmatter-поля заполняются | — |
review | Обязательные body-разделы (§8.4.1) и type-specific (§8.5) присутствуют; готов к ревью | Review-transition (§10.7.2) |
approved | Архитектор подтвердил; depends-on[] консистентен | QG-0 |
verified | Все обязательные spec-specific TC passing | QG-2 |
obsolete | Заменён или больше не актуален; replaced-by обязателен | Deprecation (§10.5.3 mutatis mutandis) |
10.7.2 Review-transition (draft → review)
Review-transition не является полноценным gate в смысле §10.2.1 — это автоматическая проверка структурной полноты. Pre-condition:
- Все обязательные frontmatter-поля §8.4 заполнены.
- Все обязательные body-разделы §8.4.1 присутствуют.
- Type-specific разделы §8.5 присутствуют для соответствующего
spec-type.
Post-condition: status: review; артефакт виден архитектору для ревью.
Если review-transition не пройден — артефакт остаётся в draft; substrate обязан вернуть список отсутствующих секций (V3 diff & review поддерживает структурный фидбек).
10.7.3 SPEC-specific pre-conditions
QG-0 для SPEC (review → approved) — дополнительно к общей части §10.3.1:
depends-on[]граф ацикличен (глава 08 §8.6.3).- Все SPEC из
depends-on[]в состоянии не нижеapproved. - Если SPEC ссылается на ADAPT через
source.adapt— ADAPT в состоянииapproved.
QG-2 для SPEC (approved → verified):
- Все обязательные spec-specific виды TC для
spec-typeприсутствуют иpassing(глава 09 §9.8). - Для SPEC-AI: pos/neg pair coverage по
evaluation-criteria= 100 %; judge-isolation соблюдена. - Для SPEC-SEC:
tc-type: securityприсутствует. - Для SPEC-DATA:
tc-type: contractприсутствует для опубликованных interface-полей.
10.8 State machine ADAPT
10.8.1 Macro-состояния
draft ──[review-transition]──▶ review ──[backward-ready]──▶ client-ready
│
│ [client returns answers]
▼
answered
│
│ [QG-3]
▼
approved
│
│ [immutable; только delta-ADAPT или errata]
▼
frozen
Состояния ADAPT (draft → review → client-ready → answered → approved → frozen) определены в главе 07 §7.4. Этот раздел нормирует gates.
| Переход | Gate | Pre-condition |
|---|---|---|
draft → review | Review-transition | Forward охватывает все разделы ТЗ; первичные backward findings зафиксированы в open |
review → client-ready | Backward-ready | Все backward findings переведены в asked-to-client; пакет вопросов сформирован |
client-ready → answered | Client-return | Все backward findings в answered с author + timestamp ответа клиента (V6) |
answered → approved | QG-3 (§10.4.1) | Все backward findings в resolved; двойная подпись готова |
approved → frozen | Freeze-transition | Автоматический после approve; ADAPT immutable; разрешается генерация BR / SR / SPEC с source.adapt = approved |
10.8.2 Sub-state machine для backward-записи
Каждая backward-запись внутри ADAPT имеет собственную sub-state machine (глава 07 §7.4.5):
open ──▶ asked-to-client ──▶ answered ──▶ resolved ──[approve ADAPT]──▶ frozen
▲ │
└──── revised ─────┘ (если ответ требует уточнения)
| Sub-state | Семантика |
|---|---|
open | Записан инженером; не отправлено клиенту |
asked-to-client | Отправлен клиенту; зафиксирована дата вопроса |
answered | Клиент ответил; ответ записан (V6 author + timestamp) |
resolved | Инженер интегрировал ответ в forward интерпретацию |
revised | Ответ расплывчатый; повторный вопрос (возврат к asked-to-client) |
frozen | После approval ADAPT; изменения невозможны |
Нормативное правило: QG-3 (approve ADAPT) запрещён, если хотя бы одна backward-запись в open / asked-to-client / answered / revised. Все backward-записи обязаны быть в resolved (глава 07 §7.4.5).
10.8.3 QG-3 для ADAPT — детализация
Pre-condition (полная):
- Все forward разделы покрыты (forward complete).
- Все backward-записи в
resolved. - Client signature получен и зафиксирован substrate-нативным механизмом (V3 + V6).
- Architect signature получен и зафиксирован.
- Если ADAPT — delta-ADAPT: parent-ADAPT в
frozen(глава 07 §7.6).
Post-condition:
- ADAPT переходит в
approved. - Запись в лог переходов с обеими подписями.
- Substrate обязан атомарно (V2) зафиксировать обе подписи: частичная подпись (только клиент / только архитектор) не переводит ADAPT в
approved.
Триггер: явное одобрение обоими акторами.
10.8.4 Errata для frozen ADAPT
frozen — терминальное недеградируемое состояние. Изменения возможны только через:
- Delta-ADAPT (если ТЗ содержит ambiguity, обнаруженную поздно) — новый артефакт с явной связью
parent-adapt. - Errata-ADAPT (если ошибка интерпретации инженера) — отдельный артефакт с подписью клиента (если меняется contractual outcome) или только архитектора (если cosmetic).
В обоих случаях frozen ADAPT не редактируется. Это требование V1 (immutable history) для контрактных артефактов (глава 07 §7.6.3).
10.9 State machine TC
10.9.1 Состояния и переходы
draft ──[QG-0]──▶ ready ──[runner pass]──▶ passing
│ │
│ [runner fail] │ [criteria change |
└─────────────────────▶ failing delta invalidation]
│ │
▼ ▼
obsolete ◀─────┘ (terminal)
| Статус | Семантика | Gate / триггер |
|---|---|---|
draft | TC создан; реализация в работе | — |
ready | dry-run runner прошёл; pos/neg парность подтверждена | QG-0 (§10.3.1) с TC-specific pre-conditions §10.9.2 |
passing | last-run.result = pass на текущей requirement-version | Runner pass; bot-managed |
failing | last-run.result = fail | Runner fail; bot-managed |
obsolete | Покрываемое поведение более не существует | Deprecation (§10.9.4) |
Frontmatter TC и pos/neg pairing определяются в главе 09.
10.9.2 TC-specific pre-conditions
QG-0 для TC (draft → ready) — дополнительно к общей части:
automation.status: automated(с валиднымautomation.location) ИЛИautomation.status: manual-pending(сmanual-pending-until≤ +1 sprint и заполненнымmanual-pending-reason).- Pos/neg парность по покрываемым утверждениям подтверждена (§9.7).
- Dry-run runner прошёл (только структурная валидность; не путать с production-прогоном).
- Все обязательные секции body TC (§9.4) заполнены.
- Citation на
verifies[]— артефакт существует в substrate в состоянии не нижеapproved.
Post-condition:
status: ready.- Runner разрешён к production-прогону.
10.9.3 Runner-managed переходы (не Quality Gates)
ready → passing, ready → failing, passing → failing, failing → passing — переходы, происходящие только по факту прогона runner’а (глава 09 §9.12 last-run bot-managed). Эти переходы не являются Quality Gates в смысле §10.2.1: они — нормативные следствия результатов прогона, а не gate-passage с pre/post-conditions. В частности, проверка совпадения last-run.requirement-version с текущей версией верифицируемого артефакта (см. §9.10) — это runner-managed consistency check, а не отдельный gate.
Post-condition каждого runner-перехода:
last-runобновлён:result,timestamp,requirement-version,evidence-refs.- Substrate обязан запретить ручную модификацию
last-run(только runner-actor).
10.9.4 Обесценивание TC
TC переходит в obsolete если:
- Артефакт из
verifies[]переходит вdeprecated/obsolete. - Delta-ТЗ инвалидирует тестовое поведение (глава 09 §9.16).
Post-condition: status: obsolete. TC не удаляется (V1 immutable history).
10.9.5 Change-of-criteria — отдельный нормативный путь
Изменение ## Критерий успеха или ## Критерий неуспеха в TC — не обычный transition; это специальный путь, требующий отдельного approval workflow (глава 09 §9.13). Подробности enforcement — §10.11.3.
10.10 Closed list policy
10.10.1 Нормативное правило
Закрытый список Quality Gates RENAR — обязательные {QG-0, QG-1, QG-2} и опциональные {QG-3, QG-4}. Изменение списка возможно только через formal change procedure стандарта RENAR (глава 14).
10.10.2 Что запрещено
| Действие | Запрещено? | Почему |
|---|---|---|
Project-local создание нового gate-типа QG-N | Запрещено | Нарушает закрытый список; делает conformance не-портируемой |
| Локальное переопределение pre-conditions canonical gate | Запрещено | Делает conformance несравнимой между имплементациями |
| Дополнительное ужесточение pre-conditions локального gate | Разрешено | Conformance manifest может объявить более строгие пороги (например, qg-2.required-negative-tc: true) |
| Локальное ослабление pre-conditions canonical gate | Запрещено | Нарушает контракт стандарта |
Объявление QG-3 / QG-4 как absent в conformance manifest | Разрешено | Опциональные gates — §10.4 |
Объявление QG-0 / QG-1 / QG-2 как absent | Запрещено | Нарушает conformance §10.4.3 |
10.10.3 Расширение списка
Добавление нового gate-типа возможно через:
- Запрос на изменение стандарта (formal change request) с обоснованием — research-draft с типологией и сравнением с canonical gates.
- Public review (срок и форум фиксируется политикой стандарта, глава 14).
- Включение в следующую minor-версию стандарта (
v1.Xилиv2.0).
Project-local расширения остаются за пределами conformance — они допустимы как internal-практики, но не влияют на conformance manifest.
10.11 Substrate-agnostic enforcement
10.11.1 Нормативные требования
Substrate, реализующий RENAR, обязан обеспечить автоматическую проверку pre-conditions gates на следующих точках:
| Точка enforcement | Что обязано быть проверено | Опирается на capabilities |
|---|---|---|
| Promote-transition (любой переход в более высокий статус) | Pre-conditions соответствующего gate (§10.3, §10.4, §10.5–§10.9) | V3 (diff & review) для блокировки перехода до approve; V4 (branching) для отделения WIP от утверждённой правды |
| Approve-transition (any approval action) | Authorship зафиксирован (actor) и временная метка | V6 (author + timestamp) |
| Reference-validation (любое создание/изменение артефакта с ссылкой на другой) | Referenced артефакт существует и в требуемом состоянии | V1 (immutable history) для stable identifier; V5 (version pin) для cross-substrate ссылок |
| Change-of-criteria для TC (§10.11.3) | Применён отдельный approval workflow | V3 + V6 |
Runner-transitions для TC (ready → passing/failing) | Только runner-actor может писать last-run | V6 (authorship); substrate-native ACL или role-based restrictions |
Lifecycle invalidation (артефакт verified, версия инкрементировалась) | Артефакт автоматически переведён в approved | V5 (version pin) для детекции |
10.11.2 Substrate без V3 / V4 / V6 — не conformant
Substrate, не обеспечивающий V3 (diff & review), не может реализовать gates: нет способа отделить «предложенное изменение» от «утверждённой правды» (глава 11 §11.3.3). Аналогично V4 (branching, §11.3.4) и V6 (author + timestamp, §11.3.6) — без них approval-механика невозможна. Substrate, не удовлетворяющий V3 / V4 / V6, не реализует RENAR независимо от других свойств.
10.11.3 Change-of-criteria для TC — особый enforcement
Изменение Pass / Fail критерия TC — высокорисковая операция (защита от test-fitting, глава 09 §9.13). Substrate обязан:
- Детектировать: любое изменение секций
## Критерий успеха/## Критерий неуспехав TC-артефакте. - Принудительно изолировать: change-of-criteria обязано быть отдельным change-set (V4 atomic change unit), помеченным признаком, отличающим его от обычных правок (substrate-native механизм — частный случай V3 diff & review; форма признака — substrate-specific, выносится в guide/).
- Запретить совмещение: одно и то же лицо не имеет права одобрить change-of-criteria и одобрение fix кода, который тестируется этим же TC. Substrate обязан проверять это правило при approve-transition.
- Регистрировать: change-of-criteria записывается в audit-trail (§10.13) с явной типизацией события.
10.11.4 Forms of substrate-native реализации
Конкретные substrate-native механизмы (как именно реализуется hook в данном substrate) — выносятся в guide/ и conformance manifest. Стандарт не нормирует форму hook (это substrate-specific решение). Стандарт нормирует что hook обязан проверять и в какой точке.
Раздел guide/ обязан содержать для каждого поддерживаемого substrate:
- Mapping enforcement-точек §10.11.1 на substrate-native механизмы.
- Примеры реализаций.
- Известные ограничения substrate относительно автоматизации каждой проверки.
10.12 Запрещённые переходы
Закрытый список переходов, нарушающих lifecycle. Substrate обязан их блокировать.
| Из | В | Артефакт | Почему запрещено |
|---|---|---|---|
draft | verified | BR / SR / SPEC | Пропускает QG-0; нет evidence approval |
draft | accepted | BR | Same; и пропускает QG-2 |
draft | done | TR | Пропускает QG-0 |
draft | passing | TC | Пропускает QG-0 (нет dry-run runner) |
obsolete | * | Любой | Терминальный статус; «реанимация» запрещена — нужен новый артефакт с supersedes |
deprecated | * | Любой | Same |
frozen | * | ADAPT | Same; изменения только через delta-ADAPT или errata (§10.8.4) |
verified | draft | BR / SR / SPEC | Деградация через несколько ступеней — потенциальная потеря trace; если требуется доработка — verified → approved через delta или reverse-эволюция §10.5.4 |
accepted | verified | BR | Деградация после приёмки — недопустима без delta-ТЗ |
accepted | approved | BR | Same |
passing | draft | TC | Деградация теряет history runs; используется passing → failing → obsolete или change-of-criteria путь |
ready | draft | TC | Деградация теряет dry-run evidence (§10.9.2); ослабление TC через [test-spec-change] (глава 09 §9.13) — не путь возврата в draft |
failing | draft | TC | Деградация теряет runner history; повторная диагностика — через новый прогон (failing → passing runner-managed) или obsolete |
10.12.1 Реакция substrate
При попытке запрещённого перехода substrate обязан:
- Заблокировать transition (V3 diff & review).
- Вернуть actor’у код ошибки с указанием конкретного нарушенного правила (по идентификатору строки этой таблицы).
- Не создавать запись в лог переходов (§10.13).
10.13 Logging gate-passing events
10.13.1 Нормативное требование
Каждое успешное прохождение gate (любого типа: QG-0, QG-1, QG-2, QG-3, QG-4, runner-transition, deprecation, freeze-transition) обязано быть зафиксировано в substrate как immutable событие со следующими полями:
| Поле | Семантика | Обязательность |
|---|---|---|
timestamp | UTC ISO-8601 момент успешного прохождения | Обязательно |
artifact-id | Идентификатор артефакта (immutable, V1) | Обязательно |
artifact-type | BR / SR / TR / SPEC-<type> / ADAPT / TC | Обязательно |
artifact-version | Версия артефакта на момент перехода (V5) | Обязательно |
from-status | Исходное состояние | Обязательно |
to-status | Целевое состояние | Обязательно |
gate-id | QG-0 / QG-1 / QG-2 / QG-3 / QG-4 / deprecation / freeze / runner-pass / runner-fail / change-of-criteria | Обязательно |
actor | Идентификатор инициатора (V6); для двойной подписи — список акторов | Обязательно |
evidence-refs | Ссылки на доказательства: ID прогонов runner, ID adversarial-review артефактов, ID подписей | Обязательно для QG-2 / QG-3 / QG-4 |
notes | Свободный текст | Опционально |
10.13.2 Substrate-agnostic format
Формат хранения событий — substrate-specific (отдельный лог-стрим / append-only collection / иные формы). Стандарт нормирует только обязательные поля §10.13.1, не их сериализацию.
Conformance manifest обязан указать механизм хранения событий и формат экспорта (для audit-аудита, глава 14).
10.13.3 Retention
События не удаляются в течение всего lifecycle артефакта и после его перехода в deprecated / obsolete / frozen. Этого требует V1 (immutable history) и нормативные положения compliance (глава 14).
10.14 Связь с другими главами
| Глава | Связь |
|---|---|
| 05 | SENAR QG-0..QG-2 — концептуальная основа; RENAR расширяет (§10.2.3) |
| 06 | Frontmatter и body BR / SR / TR (§6.5–§6.7); state machines детализированы здесь (§10.5–§10.6) |
| 07 | Frontmatter ADAPT (§7.8); backward sub-states (§7.4.5); двойная подпись (§7.5); delta-ADAPT (§7.6) — state machine здесь (§10.8) |
| 08 | Frontmatter SPEC (§8.4); type-specific QG (§8.8); state machine здесь (§10.7) |
| 09 | Frontmatter TC (§9.3); pos/neg pairing (§9.7); change-of-criteria (§9.13); state machine здесь (§10.9) |
| 11 | V1–V6 — фундамент enforcement (§10.11); без V3 / V4 / V6 — нет реализации gates |
| 12 | Уровни зрелости определяют объём применимых gates (например, RENAR-1 — QG-0 / QG-1 / QG-2 обязательны; на более высоких уровнях усиливаются pre-conditions QG-2: pos/neg парность, spec-specific TC) |
| 14 | Conformance manifest объявляет gate support (§10.4.3); хранит retention policy событий (§10.13.3) |