docs(prompts): ORCH-092 — аудит 6 агент-промптов (расхардкод, escalation, чистка)
All checks were successful
CI / test (push) Successful in 32s
CI / test (pull_request) Successful in 31s

Эпилог эпика ORCH-52. Docs/prompts-only: src/**, STAGE_TRANSITIONS, QG_CHECKS,
machine-verdict ключи и схема БД не тронуты; frontmatter_validation_strict=False.

- FR-1/FR-2: копируемые frontmatter-примеры всех 6 промптов расхардкожены
  (created_at: <YYYY-MM-DD> / model_used: <resolve ORCH-41> + врезка «не копируй
  буквально, подставь date +%F и модель из конфига»); литерал claude-opus-4-8 —
  только справка в таблице полей.
- FR-3: имена check_* в промптах сверены с QG_CHECKS — несовпадений нет
  (закреплено интеграционным тестом TC-03).
- FR-4: developer «PR>1500 → разбивай» переформулирован в эскалацию на уровне задач.
- FR-5: секция <escalation> у developer/reviewer/tester (после </success_criteria>):
  back-to:analysis / back-to:dev / REQUEST_CHANGES.
- FR-6: deployer — критичные self-hosting-запреты в видной рамке в начале <context>.
- FR-7: tester обогащён worktree-путём, smoke serial_gate (ORCH-088), покрытием TC.
- FR-8: из reviewer удалена мёртвая строка «тот же экземпляр Developer».
- FR-9 (ADR-001 D1): убран ручной git rebase origin/main — свежесть базы держит
  движок (serial-gate ORCH-088 + auto_rebase_onto_main под merge-lease).
- FR-10 (ADR-001 D2): deployer.md оставлен на английском как нормативное исключение.
- FR-11: расширен tests/test_agent_prompts_canon.py (ORCH-092 TC-01…TC-08);
  канон 52d и test_agent_frontmatter_no_model.py зелёные; полный регресс 1278 зелёный.

Документация: 6 промптов, CLAUDE.md, docs/architecture/README.md, CHANGELOG.md.

Refs: ORCH-092

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-09 17:36:48 +03:00
parent 84797e406c
commit 63d862fd34
10 changed files with 291 additions and 33 deletions

View File

@@ -82,6 +82,25 @@ enforcement не включается).
остаётся зелёным. **Норматив на будущее:** новые/изменённые агент-промпты следуют этому канону.
- ADR: [adr-0021](adr/adr-0021-prompt-canon-anthropic.md); детально —
`docs/work-items/ORCH-077/06-adr/ADR-001-anthropic-prompt-canon.md`.
- **Промпт-аудит ORCH-092 (эпилог эпика 52, docs/prompts-only):** точечно устранён класс дефектов
промптов поверх канона 52d. (1) **Расхардкод примеров:** копируемые frontmatter-примеры всех 6
промптов несут плейсхолдеры `created_at: <YYYY-MM-DD>` / `model_used: <resolve ORCH-41>` +
врезку «подставь `date +%F` и модель из конфига, не копируй буквально» (литерал `claude-opus-4-8`
оставлен лишь справкой в таблице полей). (2) **Секция `<escalation>`** добавлена developer/
reviewer/tester (после `</success_criteria>`, не нарушая порядок 5 обязательных секций):
developer → `back-to:analysis`, tester → `back-to:dev`, reviewer → `REQUEST_CHANGES`.
(3) **developer:** убран ручной `git rebase origin/main` — свежесть базы держит движок
(serial-gate ORCH-088 + `auto_rebase_onto_main` под merge-lease), а ручной rebase конфликтовал с
собственным запретом force-push (ADR-001 D1); «PR>1500 → разбивай» переформулирован в эскалацию
на уровне задач. (4) **tester** обогащён worktree-путём, smoke-проверкой блока `serial_gate` и
требованием покрытия каждого TC. (5) **reviewer:** удалена мёртвая строка «тот же экземпляр
Developer». (6) **Языковое исключение (ADR-001 D2, нормативно):** `deployer.md` сознательно
остаётся на **английском** (5 ru + 1 en) — самый safety-critical промпт, минимизация
регресс-поверхности у байт-точных verdict-ключей/команд; критичные self-hosting-запреты подняты в
видную рамку в начале `<context>`. Это **документированное исключение**, не дрейф: будущему агенту
НЕ «чинить» язык deployer вслепую. Машинные verdict-ключи и канон 52d — байт-в-байт; анти-регресс
расширенный `tests/test_agent_prompts_canon.py` (ORCH-092 TC-01…TC-08). ADR:
`docs/work-items/ORCH-092/06-adr/ADR-001-developer-rebase-and-deployer-language.md`.
#### Слой трассировки: стандарт маркеров `ORCH-NNN` (ORCH-078, 52e — слой 4 эпика 52)
**Слой 4 (трассировка).** Маркеры `ORCH-NNN`/`ET-NNN` в коде (де-факто **51 уникальный** в `src/`)