daily-fix: settle whether consistency-checker runs for paren
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 1 independent miner group(s) over the 2026-07-26 session transcripts.
Goal
State explicitly whether the consistency-checker runs for a parentless kind: infra
task, and — if it is skipped — that the skip is recorded with that reason.
Workflow gap
- Bug observed: #1697 (
kind: infra, no parent) spawned the consistency-checker, which returned PASS while recording "Parent experiment(s): N/A"; #1711 (kind: infra, no parent, same day) skipped it with the note "Consistency-checker also skipped (kind:infra, no parent experiment)" — the same task shape given two different treatments in the plan-review gate. - Why it is a workflow gap: no rule states which treatment is correct. The one "no parent" clause that exists is experiment-shaped and gives an answer that cannot apply to an infra task, so each session decides for itself and the coverage of the gate is unpredictable.
- Confidence (emitter): high
- verified-at-filing: task state read at compose time via
uv run python scripts/task.py view <N> --json | jq— #1697:kind: infra, no parent,epm:consistencymarkers 1; #1711:kind: infra, no parent,epm:consistencymarkers 0. Absence greps, per target:grep -niE 'kind: ?infra|no parent|parentless|skip' .claude/agents/consistency-checker.md→ 1 hit (L334), and its context is experiment-shaped, not infra (quoted below);grep -n 'consistency-checker' .claude/skills/adversarial-planner/SKILL.md→ 9 hits (L465, L472, L502, L668, L672, L804, L807, L921, L949) — none conditions the spawn onkindor on the presence of a parent;sed -n '1704,1745p' .claude/skills/issue/SKILL.md | grep -niE 'kind|parent'(Step 2b) → 3 hits, every one naming the parent recipe/task as an INPUT or as a check row ("needs only the drafted plan + the parent recipe"; "Related tasks (cited in the plan's prior work, parent task, …)"; "| Single variable change from parent | BLOCK: …") — none a precondition onkindor on the presence of a parent. Landed-fix check:git log --oneline --since='7 days ago' -- .claude/agents/consistency-checker.md→ 0 commits. (2026-07-26)
Context binding. The single existing no-parent clause,
.claude/agents/consistency-checker.md:334, reads: "If the experiment has no parent (first in
a new direction), check against the project's standard baseline (Qwen-2.5-7B, standard eval
suite)." That instruction is unexecutable for a workflow-surface infra task — there is no
model, no eval suite and no recipe to compare — which is why #1697's checker fell back to
recording "N/A" for every row instead. The clause exists; it does not cover this case, so the
change extends it rather than duplicating it.
Evidence
- #1697, session
7df6ce4c, 2026-07-26T09:53:06Z: the checker ran and itsepm:consistencynote reads"## Consistency Check: #1697 vs related experiments\n\n**Verdict: PASS**\n\n### Parent experiment(s): N/A — \kind: infra` workflow-fix task, no experimental parent. Related: #1682, #1675 …"`. - #1711, session
67cf175e, 2026-07-26T14:39:13Z: the checker was skipped —"[codex-quota-outage] codex composers skipped — quota sentinel live until 2026-08-06T13:26:00Z (#1204 pre-spawn check); single-Claude per no-show fallback for all 3 Phase-2 lens critics. Consistency-checker also skipped (kind:infra, no parent experiment)."Noepm:consistencymarker exists on the task (0, confirmed above). - Measured cost: none directly. The cost is a coverage inconsistency in a plan-review gate,
and — on the skip path — a missing
epm:consistencymarker, which makes "was this gate run?" unanswerable from the task record alone.
Proposed change
.claude/agents/consistency-checker.md— extend the no-parent clause (L334) with the parentless non-experiment case: state whether akind: infratask with no experimental parent is in scope, and what the checker compares against when it is (the plausible answer, for the plan to confirm or reject: the sibling/prior tasks that touched the same target file, which is precisely what #1697's checker did on its own initiative when it listed #1682, #1675, #1646, #1634, #865)..claude/skills/adversarial-planner/SKILL.mdPhase 2 spawn list (the consistency-checker row at L921 and the spawn snippet at L804-807) — record the same precondition so the spawn decision is not re-derived per session..claude/skills/issue/SKILL.mdStep 2b — mirror the precondition in one line where the step describes the checker's inputs.- Whichever way the decision goes, require the SKIP to be recorded: an
epm:consistencymarker (or anepm:progressnote) naming the reason, so a reader of the task record can tell a deliberate skip from a gate that silently did not run. #1711's note already has the right shape — the change makes it obligatory rather than incidental. - Prefer ONE decision over a per-session judgement call; the value of this fix is uniformity, and either answer is defensible as long as it is written down.
Scope / surfaces
- Primary target:
.claude/agents/consistency-checker.md .claude/skills/adversarial-planner/SKILL.md(Phase 2 spawn list + spawn snippet).claude/skills/issue/SKILL.md(Step 2b)
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: fcd200fd6757
-
workflow_fix_target: .claude/agents/consistency-checker.md
-
fingerprint: PENDING
/daily 2026-07-26 route-2 filing. Miner refs: G-P9.