feat(prep): prep clarification escape hatch#54
Merged
Conversation
… 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>
Owner
Author
|
✅ Full suite: 2936 passed, 27 skipped. The 2 failures ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Gives the
prepphase a first-class way to surface ambiguities and, when warranted, hand genuinely blocking questions back to a human instead of silently guessing.open_questions[]in the prep payload, classifiedblockingvsassume_and_proceed, carried forward intoplan(added toPREP_COMPATIBLE_KEYS+ theprep.jsonschema inschemas/runtime.py).blockingquestion transitions the plan to the existingAWAITING_HUMANstate viaClarificationRecord(newprep → AWAITING_HUMANtransition). Non-blocking questions ride forward as recorded assumptions and never halt.--no-prep-clarifyopts out (also a per-milestonechainfield); blocking questions are then recorded but never pause the run. Documented to opt out on cloud / unattended / CI runs.planprompt 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.override add-note+ resume (no new command).decision_skill.mdupdated 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