Skip to content

feat(prep): prep clarification escape hatch#54

Merged
peteromallet merged 1 commit into
mainfrom
feat/prep-clarify
May 28, 2026
Merged

feat(prep): prep clarification escape hatch#54
peteromallet merged 1 commit into
mainfrom
feat/prep-clarify

Conversation

@peteromallet
Copy link
Copy Markdown
Owner

Summary

Gives the prep phase a first-class way to surface ambiguities and, when warranted, hand genuinely blocking questions back to a human instead of silently guessing.

  • Structured open_questions[] in the prep payload, classified blocking vs assume_and_proceed, carried forward into plan (added to PREP_COMPATIBLE_KEYS + the prep.json schema in schemas/runtime.py).
  • Default-ON "may ask" halt: a blocking question transitions the plan to the existing AWAITING_HUMAN state via ClarificationRecord (new prep → AWAITING_HUMAN transition). Non-blocking questions ride forward as recorded assumptions and never halt.
  • --no-prep-clarify opts out (also a per-milestone chain field); blocking questions are then recorded but never pause the run. Documented to opt out on cloud / unattended / CI runs.
  • Discretion framing: the plan prompt treats prep questions as candidate concerns to weigh on their merits — not every flag is material — mirroring the critique "flags are hypotheses, not verdicts" stance.
  • Resume via the existing override add-note + resume (no new command). decision_skill.md updated with the flag + cloud opt-out guidance.

Reuses existing machinery (STATE_AWAITING_HUMAN, ClarificationRecord, the auto-driver's pause-and-exit) — no new state, type, or interactive loop. The auto-driver stays strictly non-interactive.

Tests

243 passing across test_prep, test_prep_research, test_auto, test_chain, test_schemas, test_profile_smoke. Full suite verification in progress.

🤖 Generated with Claude Code

… to a human

prep now emits a structured open_questions[] (classified blocking vs
assume_and_proceed), carried into the plan. When a blocking question surfaces
and clarify is enabled (default ON), the plan halts at AWAITING_HUMAN via the
existing ClarificationRecord; --no-prep-clarify opts out (documented for
cloud/unattended runs). Non-blocking questions ride forward as recorded
assumptions. The plan prompt frames prep questions as candidate concerns to
weigh with discretion — not every flag is material — mirroring the critique
flags-are-hypotheses stance. Resume via override add-note; decision_skill.md
updated with the flag + cloud opt-out guidance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@peteromallet
Copy link
Copy Markdown
Owner Author

✅ Full suite: 2936 passed, 27 skipped. The 2 failures (test_handle_review_robustness, test_tiny_robustness) are pre-existing on main — confirmed failing on a clean main checkout (3e76e59) without this branch — so this PR introduces zero regressions.

@peteromallet peteromallet merged commit b10c8a4 into main May 28, 2026
@peteromallet peteromallet deleted the feat/prep-clarify branch May 28, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant