release(v8.4.2): hard-stop manual-brief /autopilot dead-end - #91
Merged
Conversation
A brief created with chain: off (manual mode) intentionally never receives a per-ticket autopilot-policy.yaml (Step W-8 skips propagation). /autopilot Phase 1 step 3 used to WARN-and-continue claiming "only brief-level policy is in effect", but the three per-ticket Policy guards have no brief-level fallback, so every ticket aborted at the first guard. /autopilot on a manual brief now hard-stops once at the entry with reason=brief_mode_manual + policy_gate_stop and a directive to re-run /create-ticket with chain: on, then re-run /autopilot. /brief Step 3 manual guidance names that re-propagation prerequisite before the switch. Sibling audit (## Modifications): the early hard-stop makes the three per-ticket Policy guards (SKILL.md:163/174/182) unreachable on the manual path, so they stay byte-identical (no fan-out). Step W-8's manual skip is spec-correct and untouched (CT-MODE-12); legacy mode=auto/mode=manual aliases preserved (CT-MODE-1/3/8). The detector hooks/lib/detect-policy-gate-stop.sh keys on the generic [AUTOPILOT-POLICY]...action=stop marker, so reason=brief_mode_manual is honored with zero hook change. Auto-re-propagate-on-switch deferred as a separate feature. CT-MODE-15 (autopilot hard-stop) + CT-MODE-16 (brief guidance) added. test-skill-contracts 826/826, test-path-consistency 144/144, ShellCheck clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Fixes a manual-mode dead-end on the
/autopilotpath, surfaced by the follow-up #2 live/autopilotvalidation.A brief created with
chain: off(manual mode) intentionally never receives a per-ticketautopilot-policy.yaml— Step W-8 skips propagation by design ([POLICY-PROPAGATION] skipped: brief mode=manual, pinned by CT-MODE-12). The original "/create-ticketpolicy-copy is broken" framing was therefore a non-bug. The real defect was downstream:/autopilotPhase 1 step 3 used to[WARN] … only brief-level policy is in effectand continue, but the three per-ticket Policy guards (Pre-scout / Pre-impl / Pre-ship) read only the per-ticket policy with no brief-level fallback — so a manual brief aborted at the first guard on every ticket.Changes
skills/autopilot/SKILL.mdPhase 1 step 3 — manual-mode branch now hard-stops once at the entry withERROR: Brief is in manual mode (chain: off); …,[AUTOPILOT-POLICY] gate=unexpected_error action=stop reason=brief_mode_manual, and## Stop Reasontag: policy_gate_stop, directing the user to re-run/create-ticketwithchain: onthen re-run/autopilot. Parallel## Error Handlingentry added.skills/brief/SKILL.mdStep 3 (chain=off) guidance — now names the re-run-/create-ticket-with-chain: onprerequisite before advertising the/autopilot {slug}switch.tests/test-skill-contracts.sh—CT-MODE-15(autopilot hard-stop) +CT-MODE-16(brief guidance).Sibling audit (
## Modifications)The early hard-stop makes the three per-ticket Policy guards (
SKILL.md:163/174/182) unreachable on the manual path, so they stay byte-identical (no fan-out). Step W-8's manual skip is spec-correct and untouched (CT-MODE-12); legacymode=auto/mode=manualaliases preserved (CT-MODE-1/3/8).hooks/lib/detect-policy-gate-stop.shkeys on the generic[AUTOPILOT-POLICY]…action=stopmarker, soreason=brief_mode_manualis honored with zero hook change.Auto-re-propagating the policy inside
/autopiloton a manual→auto switch (the smoother one-command switch) was deliberately deferred as a separate feature — it would relax the manual/auto contract.Verification
bash tests/test-skill-contracts.sh— 826/826 (+CT-MODE-15, +CT-MODE-16)bash tests/test-path-consistency.sh— 144/144shellcheck -S warning tests/test-skill-contracts.sh— cleanplugin.json8.4.2== newest CHANGELOG[8.4.2](CT-MODE-14), real ISO date (CT-MODE-13)🤖 Generated with Claude Code