9.9 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-092 | analysis | analyst | ready-for-review | 2026-06-09 | claude-opus-4-8 |
03 — Критерии приёмки (Acceptance Criteria): ORCH-092 — Промпт-аудит 6 агентов
Work Item: ORCH-092 · Repo: orchestrator · Стадия: analysis
Формат: каждый критерий имеет PASS (что должно быть истинно для приёмки) и FAIL
(что считается провалом). Reviewer/tester проверяют буквально по файлам репозитория
(.openclaw/agents/*.md, tests/, docs/).
AC-1 — created_at в примерах всех 6 промптов — плейсхолдер (P0-1, BR-1, FR-1)
Условие: В копируемом примере frontmatter каждого из 6 промптов дата не захардкожена.
- PASS: В
analyst/architect/developer/reviewer/tester/deployer.mdпример несётcreated_at: <YYYY-MM-DD>(плейсхолдер); рядом — явная инструкция «подставь фактическую дату (date +%F), НЕ копируй из примера». Литералаcreated_at: 2026-06-09(или иной конкретной даты) в копируемом блоке нет. - FAIL: Хотя бы один промпт оставляет конкретную дату в примере, или отсутствует инструкция «не копируй буквально».
AC-2 — model_used в примерах — плейсхолдер/резолв (P0-2, BR-2, FR-2)
Условие: В копируемом примере frontmatter каждого из 6 промптов модель не захардкожена.
- PASS: Пример несёт
model_used: <resolve ORCH-41>(или эквивалентный плейсхолдер) + оговорку «подставь фактическую модель из конфига». Литералclaude-opus-4-8в копируемом блоке отсутствует (допускается как справка в таблице полей вне блока). - FAIL: Хотя бы один промпт оставляет
model_used: claude-opus-4-8в копируемом примере, или нет оговорки про подстановку.
AC-3 — Имена гейтов сверены с QG_CHECKS (P0-3, BR-3, FR-3)
Условие: Все check_*/имена QG-функций в промптах соответствуют реестру QG_CHECKS.
- PASS: Каждое имя гейта, встречающееся в 6 промптах, присутствует ключом в
QG_CHECKS(src/qg/checks.py). Реальные несовпадения (если бы были) исправлены; ложные (напр.check_tests_passed— верен) НЕ тронуты. Сверка закреплена тестом (см. AC-10/TC-03). - FAIL: В промпте остаётся имя гейта, которого нет в
QG_CHECKS; ИЛИ исправлено верное имя «вслепую» (придуманная замена).
AC-4 — developer: «PR>1500» → эскалация (P1-1, BR-4, FR-4)
Условие: Нереализуемая инструкция о разбиении PR переформулирована.
- PASS:
developer.mdНЕ содержит инструкции «разбивай на меньшие PR»; вместо неё — эскалация: слишком большой PR → флагировать/эскалировать (нужна декомпозиция на уровне задач, 1 задача = 1 ветка = 1 PR). Маркер «свой PR» («не мержи свой PR») сохранён. - FAIL: Старая формулировка «разбивай на меньшие PR» осталась; ИЛИ при правке удалён маркер «свой PR».
AC-5 — <escalation> в developer/reviewer/tester (P1-3, BR-5, FR-5)
Условие: Три промпта получили секцию <escalation> с чёткими маршрутами.
- PASS:
developer.md,reviewer.md,tester.mdсодержат<escalation>…</escalation>(после</success_criteria>), с маршрутами: developer →back-to:analysis; tester →back-to:dev(при FAIL); reviewer →REQUEST_CHANGES. Нормативный порядок 5 обязательных секций НЕ нарушен. - FAIL: Хотя бы у одного из трёх нет
<escalation>; ИЛИ её добавление сломало порядок/ наличие 5 обязательных секций.
AC-6 — deployer: рамка запретов + решённый язык (P2-1/P2-2, BR-6/BR-10, FR-6/FR-10)
Условие: Критичные self-hosting-запреты подняты в видную рамку; вопрос языка решён.
- PASS:
deployer.mdнесёт в начале видную рамку с критичным запретом «NEVER restart prod 8500». Язык deployer решён архитектором в06-adr/: либо унифицирован на ru, либо зафиксировано явное исключение (en) с обоснованием. Маркерыdocker exec orchestrator-staging,pr_already_merged,8500,INFRA-WAIVEDсохранены; verdict-ключи и команды не сломаны. - FAIL: Критичный запрет не выделен/утоплен в тексте; ИЛИ язык не решён (нет ADR-решения); ИЛИ потерян анти-регресс-маркер / сломан verdict-ключ при переводе.
AC-7 — tester обогащён (P2-3, BR-7, FR-7)
Условие: tester получил worktree-путь, serial_gate smoke и покрытие ТЗ.
- PASS:
tester.md: (а) явно указывает worktree-путь ветки задачи (а не общий/repos/orchestrator) для прогона тестов; (б) smoke/queueпроверяет наличие блокаserial_gate(ORCH-088); (в)<success_criteria>требует покрытия каждого TC из04-test-plan.yaml(а не только «файл записан»). Маркерыpytest//health//status//queueсохранены. - FAIL: Отсутствует любой из трёх пунктов; ИЛИ потерян анти-регресс-маркер tester.
AC-8 — Удалена мёртвая инструкция reviewer (P2-4, BR-8, FR-8)
Условие: Строка про «тот же экземпляр Developer» удалена без потери живых инвариантов.
- PASS:
reviewer.mdНЕ содержит «не апрувь PR от того же экземпляра Developer». МаркерыREQUEST_CHANGESи «НЕ обновлена», ось документации, ось трассировки (TRACEABILITY.md), ось обзорных доков (Известные ограничения,ORCH-079) сохранены. - FAIL: Мёртвая строка осталась; ИЛИ при удалении пострадал живой инвариант reviewer.
AC-9 — АНТИ-РЕГРЕСС: verdict-ключи + канон + src/ не тронут (NFR-1/2, BR-11)
Условие: Машинные контракты и канон сохранены, код не тронут.
- PASS: verdict-ключи
verdict:/result:/staging_status:/deploy_status:/security_status:(+ значения APPROVED/REQUEST_CHANGES/PASS/FAIL/SUCCESS/FAILED) — байт-в-байт. 5 XML-секций в нормативном порядке + 6 полей 52c во всех 6 промптах.src/**,STAGE_TRANSITIONS,QG_CHECKS, схема БД — без изменений в diff.git diff --statне содержитsrc/.tests/test_agent_prompts_canon.pyиtests/test_agent_frontmatter_no_model.py— зелёные. - FAIL: Любой verdict-ключ изменён по имени/регистру/значению; нарушен порядок/наличие 5
секций или 6 полей; есть правка
src/; целевые тесты красные.
AC-10 — Документация и тесты обновлены (BR-11, FR-11)
Условие: Обзорная документация и анти-регресс-тесты отражают изменение.
- PASS:
CHANGELOG.mdнесёт запись ORCH-092;CLAUDE.md/docs/architecture/README.mdобновлены при необходимости;06-adr/ADR-001-*.mdфиксирует решения P1-2/P2-2; новые структурные TC (плейсхолдеры даты/модели,<escalation>, удаление мёртвой строки, обогащение tester, рамка deployer, сверка гейтов) добавлены вtests/test_agent_prompts_canon.pyи зелёные; полныйpytest tests/ -qзелёный. - FAIL: Отсутствует ADR-решение P1-2/P2-2; нет записи в CHANGELOG; новые инварианты не покрыты тестом; регресс красный.
Сводная матрица AC ↔ FR/BR
| AC | Покрывает |
|---|---|
| AC-1 | BR-1 / FR-1 |
| AC-2 | BR-2 / FR-2 |
| AC-3 | BR-3 / FR-3 |
| AC-4 | BR-4 / FR-4 |
| AC-5 | BR-5 / FR-5 |
| AC-6 | BR-6 / BR-10 / FR-6 / FR-10 |
| AC-7 | BR-7 / FR-7 |
| AC-8 | BR-8 / FR-8 |
| AC-9 | NFR-1 / NFR-2 / FR-9 (rebase по ADR без слома канона) |
| AC-10 | BR-9 / BR-11 / FR-9 / FR-11 |