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>
44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
---
|
||
work_item: ORCH-NNN
|
||
stage: analysis
|
||
author_agent: analyst
|
||
status: needs-input
|
||
created_at: <YYYY-MM-DD>
|
||
model_used: <resolve ORCH-41>
|
||
---
|
||
|
||
# 01 — Открытые вопросы (Open Questions): ORCH-NNN — <название>
|
||
|
||
Work Item: **ORCH-NNN** · Repo: **<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).>
|