daily-fix: interp-critic degenerate-series lens
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-15 problem sweep (route 2 — behavior/logic change, independent review required).
Goal
Add a mechanical degenerate-series lens to the interpretation-critic: when a figure claims N conditions/series, hash the per-series arrays; byte-identical values across a supposedly-varied axis (especially a null control exactly matching the observed arm) is an automatic FAIL.
Workflow gap
- Bug observed: the #1092 per-turn dynamics figure plotted 8 series that were really 2 — R² byte-identical across all 4 answer-source cells INCLUDING the shuffled null (arrays stored per model_type, the varied axis never varied); only Thomas's distrust ("audit the per turn mapping result again because it doesn't make sense", 09f28ede 05:54-05:55Z) caught it — the interpretation-critic round passed the figure.
- Why it is a workflow gap: the critic's lens set (incl. Lens 6 plot-prose match) verifies the figure against the caption visually but has no mechanical check that supposedly-distinct series actually differ, so a plotting/data-wiring bug that collapses conditions passes review.
- Severity: high
- verified-at-filing:
grep -n 'byte-identical\|byte identical\|degenerate' .claude/agents/interpretation-critic.md→ 0 relevant hits (only an unrelatedgit hash-objectprovenance check at L246) — proposed lens absent; Lens 6 (plot-prose match, L410) and Lens 7 (raw-text plausibility, L411) exist but neither hashes per-series arrays (2026-07-16 UTC).
Proposed change (refine in planning)
Add to .claude/agents/interpretation-critic.md (and thread into the codex-interpretation-critic composer) a mechanical degenerate-series check under/alongside Lens 6: for any figure claiming N conditions/series, load the underlying plotted arrays (from the figure sidecar / eval JSON) and hash each series; byte-identical arrays across a supposedly-varied axis are an automatic FAIL, with a null control exactly matching the observed arm called out as the highest-severity signature.
Scope / surfaces
- Primary target:
.claude/agents/interpretation-critic.md - Secondary: the
codex-interpretation-criticcomposer (lens text is composed from the Claude spec) - Anchor: Lens 6 plot-prose match at interpretation-critic.md:410
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. scripts/workflow_lint.py --check-askspasses; ruff on touched files passes.- This session runs under
EPM_WORKFLOW_FIX_SESSION=1and carries aworkflow_fix_target:Provenance line — it MUST NOT auto-route its own subagents' workflow-fix candidates (recursion guard).
Provenance
-
fingerprint: 9116c1639c7b
-
workflow_fix_target: .claude/agents/interpretation-critic.md
Mined from 2026-07-15 session transcripts by the /daily problem sweep. Evidence: 09f28ede 05:54-05:55Z, issue1092_figures.py / issue1092_gpu_phase.py (batch 08 P2).