architect(ET): auto-commit from architect run_id=460
This commit is contained in:
@@ -57,6 +57,32 @@ created → analysis → architecture → development → review → testing →
|
||||
детально — `docs/work-items/ORCH-075/06-adr/ADR-001-pipeline-docs-standard.md`,
|
||||
`docs/work-items/ORCH-076/06-adr/ADR-001-frontmatter-contract.md`.
|
||||
|
||||
#### Слой промптов: канон Anthropic + эмиссия схемы 52c (ORCH-077, 52d — замыкает эпик 52)
|
||||
**Слой 3 (промпты).** 52b дал описательный стандарт, 52c — машинный контракт (writer + валидатор
|
||||
`REQUIRED_FIELDS`), но валидатор работал warning-only «вхолостую»: 6 системных промптов
|
||||
`.openclaw/agents/*.md` **не эмитили** поля схемы. ORCH-077 учит все 6 промптов эмитить схему и
|
||||
переписывает их в едином **каноне Anthropic** — замыкающее звено эпика. Это **docs/prompts-only**
|
||||
изменение: `src/**`, `STAGE_TRANSITIONS`, `QG_CHECKS`, состав machine-verdict ключей и схема БД —
|
||||
**не трогаются**; `frontmatter_validation_strict` остаётся `False` (эмиссия **добровольная**,
|
||||
enforcement не включается).
|
||||
- **Фиксированный XML-скелет (5 обязательных секций, нормативный порядок):** `<context>` → `<task>`
|
||||
(+ опц. `<thinking>` у решающих ролей) → `<deliverables>` → `<constraints>` (запреты в формате
|
||||
«❌ X → ✅ Y») → `<output_format>`. Доп. секции (`<success_criteria>`/`<escalation>`) — после.
|
||||
- **Аддитивная схема 52c:** `<output_format>` каждого промпта перечисляет 6 полей
|
||||
(`work_item`/`stage`/`author_agent`/`status`/`created_at`/`model_used`) с роле-специфичными
|
||||
значениями и ставит их **рядом** с machine-verdict ключом, **не меняя его имя/регистр/значения**
|
||||
(`verdict:`/`result:`/`staging_status:`/`deploy_status:`/`security_status:` — байт-в-байт). Гейты
|
||||
читают вердикты как раньше (NFR-1). Для `04-test-plan.yaml` (чистый YAML) — top-level ключи.
|
||||
- **Loading-model (важно для self-hosting):** промпт `cat`-ается из git-worktree агента в момент
|
||||
запуска (`launcher` `--system-prompt "$(cat .openclaw/agents/<role>.md)"`), НЕ запекается в образ →
|
||||
новые промпты вступают в силу на следующем worktree от `main` **без прод-рестарта**; reviewer/tester
|
||||
той же задачи исполняются уже под новыми промптами (естественный in-vivo A/B, BR-6).
|
||||
- **Анти-регресс:** структурные тесты `tests/test_agent_prompts_canon.py` (5 секций, 6 полей, точный
|
||||
регистр verdict-ключей, self-hosting-маркеры deployer'а); `test_agent_frontmatter_no_model.py`
|
||||
остаётся зелёным. **Норматив на будущее:** новые/изменённые агент-промпты следуют этому канону.
|
||||
- ADR: [adr-0021](adr/adr-0021-prompt-canon-anthropic.md); детально —
|
||||
`docs/work-items/ORCH-077/06-adr/ADR-001-anthropic-prompt-canon.md`.
|
||||
|
||||
### Модель и эффорт по ролям (ORCH-41, валидация ORCH-74)
|
||||
Модель и `--effort` каждого агента берутся из config (`src/config.py`), резолвятся `launcher.resolve_agent_model` / `resolve_agent_effort` по приоритету **project-override (`projects_json` `agent_models`/`agent_efforts`) > `ORCH_AGENT_MODEL_<AGENT>`/`ORCH_AGENT_EFFORT_<AGENT>` > `*_default` > CLI-дефолт (без флага)**. **Эффорт (ORCH-081):** ниже `*_default` добавлен непустой **per-role floor** — class-default поля `agent_effort_<role>` из `config.py` (его пустой env перебить не может). Floor — строго последний уровень (ниже default) и срабатывает ТОЛЬКО когда все уровни пусты, поэтому пустые прод-`ORCH_AGENT_EFFORT_*=` (которые pydantic трактует как явное `''` и обнуляют дефолт) больше не приводят к запуску без `--effort`: каждая роль получает свой канонический пол (developer=`xhigh`, tester/deployer=`medium`, прочие=`high`). Непустой явный конфиг по-прежнему побеждает floor; опечатка вне `VALID_EFFORTS` дропается валидацией ДО floor (never-break, не маскируется). См. `docs/work-items/ORCH-081/06-adr/ADR-001-effort-resolution-floor.md`. frontmatter `model:` в `.openclaw/agents/*.md` **удалён** (ORCH-74 G1) — он был мёртвой/лживой декларацией (launcher его не читает); config — единственный источник правды о модели. Model-routing (G3) НЕ включён — все 6 агентов на `claude-opus-4-8`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user