Files
orchestrator/docs/work-items/ORCH-078/03-acceptance-criteria.md

121 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 |