---
work_item: ORCH-078
stage: analysis
author_agent: analyst
status: ready-for-review
created_at: 2026-06-09
model_used: claude-opus-4-8
---

# 03 — Критерии приёмки (Acceptance Criteria): ORCH-078 — ORCH-52e: трассировка ORCH-NNN

Work Item: **ORCH-078** · Repo: **orchestrator** · Стадия: analysis

Формат: каждый критерий имеет **PASS** (что должно быть истинно для приёмки) и **FAIL** (что
считается провалом). Reviewer проверяет их буквально по файлам репозитория.

---

## AC-1 — Стандарт маркеров создан с реальным примером из кода

**Условие:** в `docs/_standards/` существует `TRACEABILITY.md` с форматом маркера, правилом
размещения и проверяемым примером из реального кода.
- **PASS:** файл `docs/_standards/TRACEABILITY.md` существует; описывает формат `ORCH-NNN`, где
  ставится (рядом с нетривиальным инвариантом), как читать историю; содержит ≥1 пример, ссылающийся
  на **реально существующие** в `main` файл `src/...` + маркер `ORCH-NNN` + путь
  `docs/work-items/ORCH-NNN/06-adr/...` (напр. `src/serial_gate.py` → ORCH-088 → `ADR-001-serial-gate.md`).
- **FAIL:** файла нет; нет формата/правила размещения; пример отсутствует или ссылается на
  несуществующие файл/ADR (нерабочая трассировка).

---

## AC-2 — Правило чтения присутствует в developer и architect

**Условие:** правило «правишь код с маркером `ORCH-NNN` → прочитай его `06-adr` ПЕРЕД изменением,
не сломай инвариант» присутствует в `developer.md` и `architect.md`.
- **PASS:** оба промпта содержат правило (со ссылкой на `TRACEABILITY.md`), сформулированное как
  правило для **чужих** маркеров в правимом коде (не просто «реализуй по `06-adr/` текущей задачи»);
  developer-формулировка соблюдает формат «❌ X → ✅ Y».
- **FAIL:** правило отсутствует в одном из промптов; либо лишь повторяет 52d-упоминание ADR текущей
  задачи без сути «читай ADR чужого маркера перед правкой».

---

## AC-3 — Reviewer проверяет соблюдение трассировки

**Условие:** `reviewer.md` содержит ось/под-пункт контроля: правка маркированного кода без сверки с
его ADR / со сломом инварианта → finding.
- **PASS:** reviewer-промпт явно требует проверять сверку правок маркированного (`ORCH-NNN`) кода с
  его `06-adr`; нарушение даёт finding с severity (≥P1); есть ссылка на `TRACEABILITY.md`.
- **FAIL:** reviewer не проверяет соблюдение трассировки (правило есть у автора, но никто не
  контролирует) либо проверка не привязана к severity/finding.

---

## AC-4 — Fallback-доступ задокументирован

**Условие:** способ `git show origin/main:docs/work-items/ORCH-NNN/06-adr/...` задокументирован.
- **PASS:** команда присутствует в `TRACEABILITY.md` и в `developer.md` (рядом с правилом чтения),
  с пояснением «когда папки нет в текущей ветке».
- **FAIL:** fallback не задокументирован нигде, либо приведён без контекста применения.

---

## AC-5 — Анти-археология зафиксирована

**Условие:** конвенция «3+ маркеров в блоке → сводная ссылка на сквозной ADR (`docs/architecture/
adr/`)» зафиксирована.
- **PASS:** правило присутствует в `TRACEABILITY.md` (с примером, напр. `src/merge_gate.py` →
  ORCH-043/065/071/073 → сквозные `adr-0006/0013/0014/0016`) и в `architect.md`.
- **FAIL:** правило отсутствует либо сформулировано без числового порога/без указания на сквозной ADR.

---

## AC-6 — Анти-дубль: 52e не повторяет 52d

**Условие:** 52e не дублирует уже сделанное в 52d; где смежное поведение есть — ссылается/усиливает.
- **PASS:** промпты ссылаются на единый текст правила в `TRACEABILITY.md` (а не копируют его в
  каждый); XML-канон 52d (5 секций) и 52c-эмиссия сохранены; нет дословного повтора уже имевшихся
  52d-формулировок.
- **FAIL:** правило скопировано дословно в несколько промптов вместо ссылки; либо промпты переписаны
  целиком (нарушен канон 52d).

---

## AC-7 — Код не изменён; анти-регресс промптов держится; регресс зелёный

**Условие:** изменены только `docs/**` и `.openclaw/agents/*.md` (+ tests-only расширение
структурного теста); `src/**` не тронут; анти-регресс промптов сохранён.
- **PASS:** `git diff --name-only origin/main` показывает изменения только в `docs/**`,
  `.openclaw/agents/*.md`, `tests/test_agent_prompts_canon.py`, `CLAUDE.md`, `CHANGELOG.md` (нет
  `src/**`, `STAGE_TRANSITIONS`, `QG_CHECKS`, `_parse_*`, схемы БД); `tests/test_agent_prompts_canon.py`
  и `tests/test_agent_frontmatter_no_model.py` зелёные; machine-verdict ключи
  (`verdict:`/`result:`/`staging_status:`/`deploy_status:`/`security_status:`) сохранены байт-в-байт;
  полный `pytest tests/ -q` зелёный.
- **FAIL:** любой файл `src/**` изменён; потерян verdict-ключ/XML-секция/запрет; красный тест.

---

## AC-8 — Сопутствующая документация обновлена

**Условие:** `CLAUDE.md`, `docs/architecture/README.md`, `CHANGELOG.md` обновлены; есть ADR задачи.
- **PASS:** `CLAUDE.md` и `docs/architecture/README.md` ссылаются на `TRACEABILITY.md` (слой 4 эпика
  52); в `CHANGELOG.md` есть запись `## [Unreleased]`; создан `docs/work-items/ORCH-078/06-adr/
  ADR-001-*.md`.
- **FAIL:** любой из перечисленных документов не обновлён/не создан (для reviewer: необновлённая
  документация при изменении репозитория → `REQUEST_CHANGES`).

---

## Сводная матрица AC ↔ FR/BR
| AC | Покрывает |
|----|-----------|
| AC-1 | BR-1 / FR-1 |
| AC-2 | BR-2 / FR-2, FR-3 |
| AC-3 | BR-3 / FR-4 |
| AC-4 | BR-4 / FR-1, FR-5 |
| AC-5 | BR-5 / FR-1, FR-6 |
| AC-6 | BR-6 / FR-1..FR-4 |
| AC-7 | NFR-1, NFR-2 / FR-8 |
| AC-8 | BR-7 / FR-7 |
