reviewer(ET): auto-commit from reviewer run_id=780
All checks were successful
CI / test (push) Successful in 1m14s
CI / test (pull_request) Successful in 1m14s

This commit is contained in:
2026-06-17 13:24:21 +03:00
parent d6b495f156
commit 452df7aedf

View File

@@ -0,0 +1,104 @@
---
verdict: REQUEST_CHANGES
work_item: ORCH-120
stage: review
author_agent: reviewer
status: changes-requested
created_at: 2026-06-17
model_used: claude-opus-4-8
type: review
work_item_id: ORCH-120
version: 1
---
# Review ORCH-120 — Открытые вопросы аналитика → Needs Input
## Summary
Реализация по существу **сильная и завершённая**: мёртвый путь «аналитик задаёт блокирующие
вопросы → `01-questions.md` → Needs Input» корректно активирован четырьмя согласованными
изменениями (контракт промпта + канон артефакта; приоритет вопросов над `files_ok`; авто-park
через ось «пауза» ORCH-124; resume + unpark). Чистая логика вынесена в leaf `src/analyst_questions.py`
(never-raise, kill-switch, self-hosting-скоуп — зеркало `coverage_gate`/`serial_gate`). Side-effects
изолированы в `stage_engine` (`_decide_analysis_outcome`/`_emit_analysis_*`). ORCH-089 autoApprove-блок
перенесён **байт-в-байт**. `STAGE_TRANSITIONS` / реестр и имена `QG_CHECKS` / `check_*` /
machine-verdict-ключи / схема БД — **подтверждённо не тронуты** (`git diff` по `src/stages.py`,
`src/qg/checks.py`, `src/db.py` пуст). Все 11 AC реализованы и покрыты; обязательный регресс-тест
TC-01 — **подтверждённо красный** на дофиксовом коде (`files_ok` проверялся до вопросов) и зелёный
после. Полный регресс `pytest tests/`**2205 passed**.
Блокирующий дефект **один**: PR меняет функциональность, описанную в **витрине системы**
`docs/overview/` (ось пауз serial-gate), но витрина не обновлена в том же PR — нарушение оси
обзорных доков (ORCH-011 / ORCH-079, правило для агентов №6). Это требует `REQUEST_CHANGES`.
## Findings
### P0 — Blocker
*(нет)*
### P1 — Must fix
- [ ] **Витрина системы `docs/overview/` не обновлена при изменении функциональности, которую она
описывает (ось ORCH-011 / ORCH-079; CLAUDE.md правило №6; reviewer-prompt `<constraints>`).**
ORCH-120 вводит **движковый авто-park/unpark** оси «пауза» (`db.set_task_paused` в
`_emit_analysis_needs_input`, `clear_task_paused` в `handle_status_start`) — задача ставится на
паузу **автоматически**, без действия оператора. Однако витрина описывает ось пауз как
**исключительно операторскую**, и теперь это утверждение неполно/противоречит коду:
- `docs/overview/tech-pipeline.md:110-112` — «пауза без блокировки: **оператор может явно**
поставить более раннюю задачу на паузу (durable-сигнал `tasks.paused_at`)». Нет упоминания
авто-park движком на Needs Input.
- `docs/overview/tech-observability.md:25-26` — «Паузу/возобновление задачи в serial gate
**оператор включает явными эндпоинтами** `POST /serial-gate/pause|resume`». После ORCH-120
пауза **также** триггерится движком автоматически (analyst Needs Input) и снимается на resume.
- `docs/overview/tech-agents.md:11` — строка агента `analyst` перечисляет выходы как 4 deliverable
без нового канала «блокирующие вопросы → `01-questions.md` (when-applicable, сигнальный) →
Needs Input».
Витрина — единая точка входа «бизнес + тех» (ORCH-011); читатель получает картину, где пауза —
только ручная, что больше не соответствует поведению. **Требуется** обновить
`docs/overview/` в этом же PR: как минимум дополнить абзац пауз в `tech-pipeline.md` и пункт
пауз в `tech-observability.md` упоминанием авто-park/unpark движком на Needs Input (узкий триггер,
под флагом `analyst_needs_input_autopause_enabled`, скоуп self-hosting); опционально — отметить в
`tech-agents.md` when-applicable канал `01-questions.md`. После обновления — `tests/test_system_docs.py`
должен оставаться зелёным.
*Примечание по классификации:* остальная документация (README архитектуры, `CHANGELOG.md`,
`PIPELINE_DOCS.md`, `analyst.md`, скелет `docs/_templates/01-questions.md`, work-item ADR-001 +
сквозной adr-0053) **обновлена качественно** — поэтому это не «`src/` изменён, документация не
обновлена» (P0), а точечное необновление **обзорной витрины** (явная ось ≥P1).
### P2 — Should fix
*(нет)*
## Документация
**Обновлено (проверено по diff):**
- `docs/architecture/README.md` — новый раздел «Открытые вопросы аналитика → Needs Input (ORCH-120 —
реализовано)» со ссылкой на adr-0053.
- `CHANGELOG.md` — запись `[Unreleased]` с полным описанием 4 изменений и флагов.
- `docs/_standards/PIPELINE_DOCS.md` — строка манифеста для `01-questions.md` (владелец `analyst`,
`when-applicable`, сигнальный, не machine-verdict) + примечание о префиксе `01-` (DQ-4).
- `.openclaw/agents/analyst.md` — контракт «блокирующие вопросы → `01-questions.md`, НЕ фабриковать
deliverables» + поведение на resume; канон 52d сохранён (анти-дрейф-assert в
`tests/test_agent_prompts_canon.py` зелёный).
- `docs/_templates/01-questions.md` — новый скелет (frontmatter 52c с плейсхолдерами,
контекст / блокирующие вопросы / что разблокирует анализ).
- `.env.example` — 3 новых ключа `ORCH_ANALYST_*` с описанием и безопасными дефолтами.
- ADR: `docs/work-items/ORCH-120/06-adr/ADR-001-analyst-open-questions-needs-input.md` + сквозной
`docs/architecture/adr/adr-0053-analyst-open-questions-needs-input-flow.md`.
**Нужно обновить (P1):** `docs/overview/` — витрина системы (см. P1 выше). Конкретно
`tech-pipeline.md` (абзац пауз) и `tech-observability.md` (пункт пауз `GET /queue`); опц.
`tech-agents.md` (канал `01-questions.md`).
## Проверки осей (для прозрачности)
- **Соответствие ТЗ/AC:** AC-1…AC-11 реализованы и покрыты (`tests/test_orch120_*` + assert канона).
Полный регресс зелёный (2205 passed). TC-01 подтверждённо RED→GREEN.
- **Соответствие ADR/трассировка:** реализация = ADR-001/adr-0053. `STAGE_TRANSITIONS`/`QG_CHECKS`/
`check_*`/machine-verdict/схема БД не тронуты. ORCH-089 autoApprove перенесён вербатим;
инварианты ORCH-066/088/124 не сломаны (маркеры сверены).
- **Качество кода + багфикс-регресс (ORCH-019 BR-4):** leaf-паттерн чистый, never-raise во всех
врезках, kill-switch + скоуп корректны; задача — Bug→escalate full-cycle, обязательный
тест-фиксатор дефекта (TC-01) присутствует и валиден.
- **Документация:** номерные/стандартные доки обновлены; **обзорная витрина — нет** (P1).