EPS
← All tasks·#729Completed

workflow-fix: analyzer.md — cross-check inherited figure .meta.json on follow-up re-fold

kind: infra#wf-fix#wf-fix-fp:stale-inherited-figure-on-followup-001
track:

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.png plotting #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.json points 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.json points mismatch 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.json points ↔ 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).

Activity