121 lines
7.7 KiB
Markdown
121 lines
7.7 KiB
Markdown
---
|
||
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 |
|