workflow-fix: analyzer.md — cross-check inherited figure .meta.json on follow-up re-fold
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 from a workflow-fix candidate raised by the analyzer on task
#667 (same-issue follow-up a36 round): an upload-fix re-committed
fig_a36_forest.png/fig_a36_scatter.png with a byte-diff but the
figure-gen script still read the OLD result JSON, so the inherited
figures plotted the round-1 base-rᴮ values, not the new r⁺ values. The
analyzer caught it post-hoc by reading the .meta.json points and
regenerated. The workflow gap is that the upload-verifier's
HF-presence + byte-diff check passes such a stale-data figure.
Goal
Add a Step 3.5 sub-check to .claude/agents/analyzer.md for same-issue
follow-up re-folds: before embedding an INHERITED figure (one the
analyzer did NOT generate this pass), confirm its .meta.json
points / panel-annotation values match the NEW round's result JSON,
NOT the prior round's. If stale, regenerate from the new JSON.
Workflow gap
- Bug observed: upload-fix committed
fig_a36_forest.png/fig_a36_scatter.pngplotting #667's round-1 base-rᴮ values (−0.35 / −0.03 / −0.41 partial-ρ) while the new r⁺ result JSON carries different values. The figure-gen script had not been repointed at the new JSON. - Why workflow gap: analyzer.md Step 3.5 covers figures the
analyzer ITSELF generates. On a same-issue follow-up re-fold the
analyzer inherits figures committed by the implementer/upload-fix,
but no instruction tells it to cross-check inherited figures'
.meta.jsonpoints against the new result JSON before embedding. - Confidence (emitter): medium
Proposed change (candidate diff sketch — refine in planning)
In analyzer.md Step 3.5 (plot-verification), add:
+ For a same-issue follow-up re-fold, an INHERITED figure (committed
+ by the implementer/upload-fix, not generated by you this pass) MUST
+ be cross-checked before embedding: load its `.meta.json` `points`
+ and confirm the plotted values match the NEW round's result JSON,
+ not the prior round's. A figure re-committed with a trivial
+ byte-diff can still plot stale data (the gen script read the old
+ JSON). If stale, regenerate from the new JSON before embedding.
Scope / surfaces
- Primary target:
.claude/agents/analyzer.md(Step 3.5) - Possibly also:
.claude/agents/upload-verifier.md(the HF-presence + byte-diff check should not pass a figure whose.meta.jsonpointsmismatch the result JSON — fail-loud at upload-verify time, not just at analyzer re-fold).
Constraints / invariants
- Workflow-surface only.
- The new check is a
.meta.jsonpoints↔ result-JSON cross-check; the analyzer already loads both for its own figures, so the affordance exists.
Provenance
- workflow_fix_target: .claude/agents/analyzer.md
- fingerprint: stale-inherited-figure-on-followup-001
Related task: #667 a36-readout-reextract-cos round 3 (figures fixed inline at commit 771cbbdb on main).