work_item: ORCH-077 title: "ORCH-52d — канон Anthropic + эмиссия frontmatter-схемы в 6 промптах агентов" framework: pytest scope: > Структурная верификация 6 системных промптов (.openclaw/agents/*.md): наличие XML-секций, инструкции эмитить обязательную frontmatter-схему 52c, сохранение machine-verdict ключей и ключевых анти-регресс маркеров, валидность YAML-frontmatter. Вне покрытия: семантическое качество выхода агентов (оценивается A/B-проверкой вручную, TC-09) и любая логика src/ (код не меняется). notes: > Задача docs/prompts-only — src/ не трогается. Тесты читают файлы .openclaw/agents/*.md как текст/YAML. Существующий tests/test_agent_frontmatter_no_model.py (ORCH-074) ОБЯЗАН остаться зелёным. Полный регресс pytest tests/ -q должен оставаться зелёным. Имена тест-функций/файла — ориентир; точную реализацию определяет developer (например tests/test_agent_prompts_canon.py). Списки обязательных секций/полей/ключей вынести в параметризацию, чтобы тест шёл по всем 6 ролям единообразно. tests: - id: TC-01 type: unit description: "Каждый из 6 промптов содержит все 5 XML-секций (////), открывающий и закрывающий тег. (AC-1)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-02 type: unit description: "Каждый промпт перечисляет все 6 имён полей схемы 52c (work_item/stage/author_agent/status/created_at/model_used) в теле. (AC-2)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-03 type: unit description: "Для каждой роли в промпте присутствуют корректные конкретные значения author_agent (==роль) и stage (стадия роли по карте FR-2). (AC-2)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-04 type: unit description: "Каждый промпт ссылается на docs/_templates/ и хотя бы на один эталон (ORCH-073 или ORCH-088). (AC-3)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-05 type: unit description: "АНТИ-РЕГРЕСС machine-verdict ключей: reviewer.md содержит 'verdict:' (APPROVED|REQUEST_CHANGES), tester.md — 'result:' (PASS|FAIL), deployer.md — 'staging_status:' и 'deploy_status:' (SUCCESS|FAILED), регистр сохранён. (AC-4)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-06 type: unit description: "АНТИ-РЕГРЕСС deployer self-hosting: deployer.md содержит canonical 'docker exec orchestrator-staging' staging-команду, merge-guard 'pr_already_merged', запрет рестарта 8500 изнутри, ORCH-061 'INFRA-WAIVED'. (AC-4)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-07 type: unit description: "АНТИ-РЕГРЕСС ключевых маркеров остальных ролей: analyst — 4 deliverable + Write tool; architect — ADR-формат + сквозной ADR + эскалация; developer — TDD + 'не мержить свой PR' + 'не рестартить прод'; reviewer — правило 'src изменён, доки нет → REQUEST_CHANGES'. (AC-4)" module: tests/test_agent_prompts_canon.py expected: PASS - id: TC-08 type: unit description: "Валидность frontmatter промптов: каждый .openclaw/agents/*.md парсится как YAML-mapping, name==роль, description непуст, ключа 'model:' нет (re-use существующего теста ORCH-074). (AC-8)" module: tests/test_agent_frontmatter_no_model.py expected: PASS - id: TC-09 type: integration description: "A/B-проверка на репрезентативной стадии (старый vs новый промпт): новый не хуже по числу циклов REQUEST_CHANGES и полноте артефакта; вердикт корректно парсится. Ручной/полуавтоматический прогон; результат фиксируется в 13-test-report.md. (AC-6)" module: tests/manual/ab_prompt_compare.md expected: PASS - id: TC-10 type: integration description: "Полный регресс: pytest tests/ -q зелёный (код не тронут, гейты и контракты целы). (AC-9)" module: tests/ expected: PASS