fix: delete AskUserQuestion fallback (root cause of forever war)

The /plan-eng-review skill failed to fire AskUserQuestion on a real
plan review and surfaced 4 calibration decisions via prose instead.
Investigation traced this to a "fallback when neither variant is
callable" clause in the preamble that the model rationalizes around
as a general escape hatch from "fanning out round-trip AUQs," even
when an AUQ variant IS callable. Codex review confirmed the fallback
exists in 8 inline sites with 2 surviving escape hatches the original
narrowing missed (a "genuinely trivial" exception duplicated across
all 4 plan-* templates, and a "outside plan mode, output as prose
and stop" branch in the preamble itself).

Net deletion in skill text. Closes both branches of the deleted
fallback (plan-file write AND prose-and-stop) and the trivial-fix
exception with a single hard rule:

  If no AskUserQuestion variant appears in your tool list, this
  skill is BLOCKED. Stop, report `BLOCKED — AskUserQuestion
  unavailable`, and wait for the user.

Honest about being a model directive, not a runtime guard — none of
the PTY harness helpers enforce BLOCKED today. The architectural
improvement is that the model has fewer alternatives to obey it
against. Runtime enforcement is a follow-up TODO.

Sources changed:
- scripts/resolvers/preamble/generate-ask-user-format.ts: delete both
  fallback branches; replace with 1-line BLOCKED rule
- scripts/resolvers/preamble/generate-completion-status.ts: delete
  fallback in generatePlanModeInfo
- plan-eng-review/SKILL.md.tmpl: delete fallback at Step 0 + Sections
  1-4 (5 instances) + delete trivial-fix exception
- office-hours/SKILL.md.tmpl: delete fallback in approach-selection
- plan-ceo-review/SKILL.md.tmpl: delete trivial-fix exception
- plan-design-review/SKILL.md.tmpl: delete trivial-fix exception
- plan-devex-review/SKILL.md.tmpl: delete trivial-fix exception

Generated SKILL.md regen lands in a follow-up commit per the bisect
convention (template changes separate from regenerated output).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-05-08 15:26:13 -07:00
co-authored by Claude Opus 4.7
parent 33aab2ac77
commit b5c65c70cc
7 changed files with 15 additions and 16 deletions
+4 -5
View File
@@ -669,11 +669,10 @@ DX reviews:
* **Map to DX First Principles above.** One sentence connecting your recommendation
to a specific principle (e.g., "This violates 'zero friction at T0' because
[persona] needs 3 extra config steps before their first API call").
* **Escape hatch (tightened):** If a section has zero findings, state "No issues,
moving on" and proceed. If it has findings, use AskUserQuestion for each — a
gap with an "obvious fix" is still a gap and still needs user approval before
any change lands in the plan. Only skip AskUserQuestion when the fix is
genuinely trivial AND there are no meaningful DX alternatives. When in doubt, ask.
* **Zero findings:** if a section has zero findings, state "No issues, moving on"
and proceed. Otherwise, use AskUserQuestion for each gap — a gap with an
"obvious fix" is still a gap and still needs user approval before any change
lands in the plan.
* Assume the user hasn't looked at this window in 20 minutes. Re-ground every question.
## Required Outputs