Activates and completes the previously dead "analyst asks BLOCKING questions -> 01-questions.md -> Needs Input" path. Four coordinated changes, additive, under kill-switch, self-hosting scope, never-raise; STAGE_TRANSITIONS / QG_CHECKS / check_* / machine-verdict keys / DB schema are byte-for-byte UNCHANGED (the flow is a pre-gate engine branch, NOT a Quality Gate; 01-questions.md is a SIGNAL artifact, NOT a machine-verdict). - D1 contract + canon: analyst.md documents the 01-questions.md channel (blocking questions -> Needs Input, do NOT fabricate deliverables) + resume behaviour; new skeleton docs/_templates/01-questions.md; PIPELINE_DOCS.md manifest row + 01- prefix note. - D2 freshness-supersede (DQ-2): pure offline mtime predicate questions_active in the new leaf src/analyst_questions.py (a full FRESH package supersedes a stale untouched 01-questions.md -> no Needs-Input loop, AC-6). - D3 priority: questions take priority over "files ready" in _handle_analysis_approved_flow (_decide_analysis_outcome + _emit_analysis_*); off/out-of-scope runs the ORIGINAL byte-for-byte order (AC-9). - D4 auto-park: set_task_paused on Needs Input via the ORCH-124 pause axis so the repo serial-gate FIFO is not wedged while waiting for a human (AC-4); D5 resume + unpark (clear_task_paused) in handle_status_start (analysis branch). Flags (config.py, safe defaults): analyst_questions_gate_enabled / analyst_questions_gate_repos (empty -> self-hosting only) / analyst_needs_input_autopause_enabled. Tests: test_orch120_analyst_needs_input.py (TC-01 regress + TC-02/03/06/09/10), test_orch120_serial_gate_needs_input.py (TC-04), test_orch120_resume_unpark.py (TC-05), test_orch120_questions_artifact_canon.py (TC-08), assert in test_agent_prompts_canon.py (TC-07). Full suite green (2205 passed). Refs: ORCH-120 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.8 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-NNN | analysis | analyst | needs-input | <YYYY-MM-DD> | <resolve ORCH-41> |
01 — Открытые вопросы (Open Questions): ORCH-NNN — <название>
Work Item: ORCH-NNN · Repo: · Стадия: analysis
Сигнальный when-applicable артефакт (ORCH-120, adr-0053). Пишется аналитиком через Write tool ТОЛЬКО при блокирующей неоднозначности бизнес-запроса, когда выпустить корректные 4 deliverables нельзя без ответа заказчика. Наличие этого файла с активными вопросами уводит задачу в Needs Input (приоритет над «файлы готовы»). Не machine-verdict: гейтом (
check_analysis_complete/check_analysis_approved) НЕ парсится — это сигнал движку (_handle_analysis_approved_flow).⚠️ Если блокирующих вопросов НЕТ — не создавай этот файл; выпускай полный пакет (
01-brd.md/02-trz.md/03-acceptance-criteria.md/04-test-plan.yaml). Не фабрикуй требования ради сдачи 4 файлов.
1. Контекст
<Что именно в бизнес-запросе (00-business-request.md) блокирует выпуск корректного пакета. Какие
факты установлены, а какие — нет. На какой код src/ это влияет.>
2. Блокирующие вопросы
Каждый вопрос — конкретный, отвечаемый, с вариантами (где уместно) и указанием, почему ответ блокирует анализ. Нумеруй (Q-1, Q-2, …).
- Q-1 — <вопрос>
- Вариант A: <…> (последствие)
- Вариант B: <…> (последствие)
- Почему блокирует: <без ответа нельзя выпустить BR/TRZ, т.к. …>
- Q-2 — …
3. Что разблокирует анализ
<Какие ответы переводят задачу из Needs Input обратно в работу: после ответов заказчика в Plane аналитик перезапускается (resume), читает свежие комментарии и выпускает полный пакет. Если часть вопросов снята, а часть осталась — перепиши этот файл (оставь только актуальные блокеры), иначе выпусти 4 deliverables (свежий пакет supersede’ит этот файл по mtime, DQ-2).>