daily-fix: state the minimum Step-2 plan-review floor for ki
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the /daily 2026-07-26 problem sweep (route 2). Surfaced by 3 independent miner group(s) over the 2026-07-26 session transcripts.
Goal
State in /issue Step 2 the minimum plan-review floor that binds even for a small
kind: infra task, and require any skip below the full stack — and any carried
verify_plan.py WARN — to be recorded with its reason.
Workflow gap
- Bug observed: three
kind: infradaily-fix tasks got three different Step-2 depths on 2026-07-26 — #1696 ran the full stack (planner skill,verify_plan.py+epm:plan-verify, fact-checker, 3 critics); #1692 spawned the planner and one critic directly, bypassing the skill dispatcher, and never ranverify_plan.py; #1709 spawned nothing at all, the orchestrator authoring the plan itself and self-certifying the skip under the CLAUDE.md bug-fix carve-out. - Why it is a workflow gap:
.claude/skills/issue/SKILL.mdStep 2 states only "Invoke theadversarial-plannerskill" and names no floor, so the CLAUDE.md carve-out ("re-runs …, monitoring, syncing, bug fixes, or explicit override skip it") is self-applied at whatever depth each session judges proportionate, with no record of what was skipped or why. - Confidence (emitter): high
- verified-at-filing: marker state read at compose time via
uv run python scripts/task.py view <N> --json | jq— #1696:kind: infra,epm:plan-verifymarkers 1; #1692:kind: infra,epm:plan-verifymarkers 0; #1709:kind: infra,epm:plan-verifymarkers 0. Absence greps, per target:grep -c 'epm:plan-verify\|verify_plan' .claude/skills/issue/SKILL.md→ 0 (the file that owns Step 2 never names the mechanical pre-pass);grep -n 'Phase 1.5' .claude/skills/issue/SKILL.md→ 0 hits (see the corrected target below). Landed-fix check:git log --oneline --since='7 days ago' -- .claude/skills/issue/SKILL.md→ 6 commits, none adding a Step-2 review floor. (2026-07-26)
Context binding — one target corrected. The related WARN-disposition item was mined
against .claude/skills/issue/SKILL.md "§ Phase 1.5.0". That section does not exist in that
file (0 hits); Phase 1.5.0 lives in .claude/skills/adversarial-planner/SKILL.md (L220), and
its current rule is the direct cause of the observed behaviour: "PASS (with WARNs) →
proceed … copy any OTHER WARN line verbatim into the fact-checker brief (and later the
critic briefs) as 'mechanical pre-pass notes'" (L369-373) — carrying a WARN forward is
already compliant, and no reason is owed. Only c23_goal_currency bounces today. The
WARN-disposition clause therefore belongs in adversarial-planner/SKILL.md § Phase 1.5.0,
while the Step-2 floor belongs in issue/SKILL.md.
Evidence
- #1692 (
kind: infra), sessiona5a4b7bd, 2026-07-26T07:09:28Z, verbatim:"Since this is a small workflow-fix task (0 GPU-h, spec changes to 2-3 markdown files), I'll spawn the planner directly rather than through the /adversarial-planner skill dispatcher". Noepm:plan-verifymarker exists on the task (0, confirmed above). - #1692's single spawned critic returned REVISE. Its
epm:plannote, read at compose time, records:"**Phase 2 Critic (Claude) — REVISE** (verdict at /tmp/issue-1692-critic-v1.md). Two Must-Fix findings addressed in this revised plan"— the first being that a barepython -c 'import <mod>'fires only module-level imports while the #1689 shape was a function-body import. A #1709-shaped path would have shipped both findings unreviewed. - #1709 (
kind: infra), sessione3b70618, 2026-07-26T13:59:12Z,epm:plannote verbatim:"Bug-fix category (CLAUDE.md /adversarial-planner carve-out) — direct plan drafted for a 1-line SPECS widen + a 1-line pin-test update; no critic ensemble needed for a data-widen with pre-existing coverage."Zero agents were spawned; the plan was authored with theWritetool. - Related, WARN disposition — session
6b3fca14, 2026-07-26T07:20:55Z:verify_plan.pyreturned two WARNs, one being"[c34_ratchet_headroom] verbatim insert fits size-ratchet headroom: ... .claude/agents/code-reviewer.md: insert ~7118 B > headroom 82 B ... (#1230: a paragraph larger than code-reviewer.md's headroom forced an un-planned third-file cap-raise deviation)". The orchestrator wrote"Verifier PASSes with 2 WARNs (both benign — carry into critic briefs)". The substance was fixed in plan v2 (clean atn_warn=0), so nothing shipped wrong; the same ratchet pressure the WARN named then produced ascripts/workflow_lint.pymerge conflict in that session at 09:38→09:50Z, roughly 12 min of merge mechanics. - Measured cost: no direct time lost to the Step-2 variance itself. #1709's unreviewed change is the one that later collided at the Step-10d spec-freshness gate, and #1692's ungated plan carried 2 real defects into review.
Proposed change
.claude/skills/issue/SKILL.mdStep 2 — state the MINIMUM plan-review floor that binds for akind: infraworkflow-surface edit, and state explicitly that the CLAUDE.md "bug fixes" carve-out does not reach it. Proposed floor (the planner should confirm each leg is worth its cost): persist the plan vianew-plan-version; runverify_plan.pyand postepm:plan-verify(mechanical, seconds, no agent spawn); spawn at minimum ONEcritic.- Same section — require that any leg skipped BELOW the full stack is recorded in the
epm:plannote with the reason, in the shape #1709 already used, so the skip is auditable rather than invisible. .claude/skills/adversarial-planner/SKILL.md§ Phase 1.5.0 (L369-373) — replace "copy any OTHER WARN line verbatim into the fact-checker brief" with a per-WARN DISPOSITION: each WARN is either resolved in the next plan revision, or carried with a one-line reason naming why it cannot bite. Forbid the bare word "benign" as that reason. Note in the clause thatc34_ratchet_headroomis never benign — it is the deterministic predictor of a same-file cap collision.- Consider, and record the decision either way: whether the floor is better enforced
mechanically as a
verify_plan.pycheck that FAILs awf-fix-tagged plan with noepm:plan-verifymarker, rather than as SKILL.md prose a session can self-certify past.
Scope / surfaces
- Primary target:
.claude/skills/issue/SKILL.md .claude/skills/adversarial-planner/SKILL.md(§ Phase 1.5.0, WARN disposition)scripts/verify_plan.py(only if the plan elects the mechanical-enforcement option)
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. uv run python scripts/workflow_lint.pypasses (no-flags); ruff clean on touched files.- This session runs under a
workflow_fix_target:Provenance line — it MUST NOT auto-route its own subagents' workflow-fix candidates (recursion guard).
Provenance
-
fingerprint: cbb2416258c6
-
workflow_fix_target: .claude/skills/issue/SKILL.md
-
fingerprint: PENDING
/daily 2026-07-26 route-2 filing. Miner refs: J-P3, D-P14, C-P16.