Files
orchestrator/docs/work-items/ORCH-120/12-review.md
claude-bot 452df7aedf
All checks were successful
CI / test (push) Successful in 1m14s
CI / test (pull_request) Successful in 1m14s
reviewer(ET): auto-commit from reviewer run_id=780
2026-06-17 13:24:21 +03:00

8.4 KiB
Raw Blame History

verdict, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id, version
verdict work_item stage author_agent status created_at model_used type work_item_id version
REQUEST_CHANGES ORCH-120 review reviewer changes-requested 2026-06-17 claude-opus-4-8 review ORCH-120 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).