Замыкающий слой эпика ORCH-52. Тело всех 6 промптов .openclaw/agents/*.md переписано в едином каноне Anthropic (5 обязательных XML-секций <context>/ <task>/<deliverables>/<constraints>/<output_format>, запреты «❌ X → ✅ Y», <thinking> у решающих ролей), и каждый промпт добровольно эмитит 6-польную frontmatter-схему 52c (work_item/stage/author_agent/status/created_at/ model_used) аддитивно — рядом с machine-verdict ключом, не меняя его имя/ регистр/значения (verdict:/result:/staging_status:/deploy_status:/ security_status:). Docs/prompts-only: src/**, STAGE_TRANSITIONS, QG_CHECKS, схема БД не тронуты; frontmatter_validation_strict остаётся False (enforcement не включён). Функциональное содержание старых промптов перенесено 1:1 (инвентарь TRZ §FR-6). - tests/test_agent_prompts_canon.py: структурный анти-регресс (TC-01…TC-07) - tests/manual/ab_prompt_compare.md: метод A/B (TC-09 / AC-6) - CLAUDE.md, CHANGELOG.md обновлены; README/ADR — архитектором Полный регресс pytest tests/ -q зелёный (1244); test_agent_frontmatter_no_model остаётся зелёным. Refs: ORCH-077 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
3.4 KiB
Markdown
41 lines
3.4 KiB
Markdown
# A/B-проверка промптов (старый vs новый канон) — ORCH-077 / ORCH-52d
|
||
|
||
> Полуавтоматический интеграционный прогон (test-plan **TC-09**, покрывает **AC-6**).
|
||
> Это не pytest-кейс: семантическое качество выхода агента нельзя проверить юнит-тестом.
|
||
> Результат фиксируется тестером в `docs/work-items/ORCH-077/13-test-report.md`.
|
||
|
||
## Зачем
|
||
|
||
ORCH-077 переписывает тело 6 системных промптов в каноне Anthropic и учит их эмитить
|
||
frontmatter-схему 52c. Критерий приёмки AC-6 — **новый промпт не хуже старого**: не растёт число
|
||
циклов `REQUEST_CHANGES` и не теряется содержание артефакта стадии.
|
||
|
||
## In-vivo метод (основной, без прод-рестарта)
|
||
|
||
Промпт `cat`-ается из git-worktree агента в момент запуска (`launcher --system-prompt
|
||
"$(cat .openclaw/agents/<role>.md)"`), НЕ запекается в образ (ADR-001 D6). Следствие: worktree
|
||
последующих стадий **этой же** ветки ORCH-077 срезается на её HEAD → reviewer и tester самой
|
||
ORCH-077 исполняются **уже под новыми промптами**. Это естественный A/B без отдельного стенда и
|
||
без рестарта прод-контейнера (8500).
|
||
|
||
Зафиксировать в `13-test-report.md`:
|
||
1. **Стадия сравнения** — ≥1 репрезентативная (например `review` и/или `testing` самой ORCH-077).
|
||
2. **Число циклов `REQUEST_CHANGES`** на этой задаче — не выросло относительно типичного для
|
||
docs-задачи (ожидаемо 0–1).
|
||
3. **Полнота артефакта** — `12-review.md` / `13-test-report.md` содержат все обязательные секции
|
||
и обязательную frontmatter-схему 52c (6 полей).
|
||
4. **Парсимость машинного вердикта** — `verdict:` / `result:` корректно прочитаны гейтом
|
||
(`check_reviewer_verdict` / `check_tests_passed`), регистр/имя ключа не изменились.
|
||
|
||
## Опциональный метод (ручное сравнение на фиксированном входе)
|
||
|
||
Допустимо вне конвейера сравнить артефакт одной стадии, сгенерированный под старым и новым
|
||
промптом на одинаковом входе (например прогнать reviewer на одном и том же diff с
|
||
`git show <commit>:.openclaw/agents/reviewer.md` vs текущим). Метод offline, без деструктива.
|
||
|
||
## Критерий PASS
|
||
|
||
Новый промпт **не хуже**: машинный вердикт парсится, обязательные элементы артефакта на месте,
|
||
число циклов `REQUEST_CHANGES` не выросло. Любой регресс (потеря содержания, непарсимый вердикт,
|
||
рост циклов) → FAIL → фиксируется и возвращается на доработку промптов.
|