workflow-fix: plans enumerate off-pod phase file reads
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 workflow-fix-on-bug protocol from a prose workflow-fix follow-up raised on task #1526 (emitting agent: round-1 Alternatives critic; parked under the recursion guard, routed by the 2026-07-18 /daily Step C parked-candidate sweep).
Goal
Extend the planner spec (§9/§10) and/or the upload-verifier so every OFF-POD phase's file reads must be ENUMERATED in the plan — making them plan-named and thus Step-2.8-gated — as the mechanical-enforcement complement to #1526's docs bullet.
Workflow gap
- Bug observed: an off-pod phase's file reads are not required to be enumerated in the plan, so an off-pod read of a file the pod upload set does not carry is only caught at run time (#1526's incident class: off-pod phase reads vs the pod upload set).
- Why it is a workflow gap: the gotchas rule ("check off-pod phase reads against the pod upload set") is docs-only guidance with no plan-time enforcement hook; enumerating off-pod reads in §9/§10 makes them plan-named and gate-checkable, closing the docs-vs-enforcement gap the CLAUDE.md "describes a rule but the implementing file doesn't enforce it" criterion names.
- Confidence (emitter): low-medium
- verified-at-filing:
grep -cin 'off-pod' .claude/agents/planner.md .claude/agents/upload-verifier.md→ 0 hits in both targets (absence-of-duty claim confirmed: neither file carries an off-pod read-enumeration requirement);git log --oneline --since='7 days ago' -- .claude/agents/planner.md→ 4 commits (00e1d8e42d reuse-fitness (l), 29da7c891d out-root mount binding, f5b533aff2, 86e8e1a988), none adds off-pod read enumeration (2026-07-19)
Proposed change (candidate diff sketch — refine in planning)
(none — synthesized from prose follow-up)
Sketch for the planner: add to planner.md §9 (compute/phase sizing) a per- OFF-POD-phase requirement to enumerate the files the phase READS (with their producing phase / upload destination), and to upload-verifier.md a reconciliation arm: every plan-enumerated off-pod read must resolve against the verified upload set before the pod is released.
Merged concern — VM-side phase pre-declaration to the verifier (from #1426, /daily 2026-07-18 c0-P4)
Same two target files, complementary gap: #1426's planned F4 VM-side phase was
STRUCTURALLY outside the pod dispatch chain, so upload-verifier r1 FAILed BY
CONSTRUCTION twice (initial + follow-up round), each needing auto-recover +
re-verify. The verifier expects the phase's outputs on the pod / in the upload
set, but a legitimately VM-side phase produces them off-pod. Fix (same
surface): a plan that declares a VM-side / off-pod PHASE either (a) includes it
in the pod dispatch chain, OR (b) PRE-DECLARES it to the verifier via a
declared-off-pod-phase (or declared-VM-side-phase) plan slot, so the
verifier reconciles that phase's outputs against the VM-side / off-pod
destination instead of FAILing by construction on their absence from the pod.
This pairs with the off-pod-READS enumeration above: reads are enumerated for
input-availability, the phase itself is declared so its OUTPUTS are not
mis-expected on-pod.
verified-at-filing (merge leg): grep -cin 'vm-side\|VM side\|off-pod\|declared.*phase' .claude/agents/upload-verifier.md → 0 hits for a declared-off-pod-phase slot (the verifier has no way to know a phase is legitimately off-pod, so it FAILs r1 by construction) (2026-07-19)
Scope / surfaces
- Primary target:
.claude/agents/planner.md, .claude/agents/upload-verifier.md - Grep the workflow surface for the pattern before editing
(
grep -rln 'upload set\|off-pod' .claude/ CLAUDE.md scripts/) — the gotchas.md "check off-pod phase reads against the pod upload set" entry is the docs sibling this mechanizes; list every hit in the plan.
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. - The enumeration duty must not bloat plans for pod-free tasks — scope it to plans with a pod + a subsequent off-pod phase.
scripts/workflow_lint.py --check-askspasses;verify_plan.pystays consistent if it gains a check.- This session runs under
EPM_WORKFLOW_FIX_SESSION=1and carries aworkflow_fix_target:Provenance line — it MUST NOT auto-route any of its own subagents' workflow-fix candidates (recursion guard, § Recursion guard).
Provenance
- workflow_fix_target: .claude/agents/planner.md, .claude/agents/upload-verifier.md
- fingerprint: 53d6679bbee6
Verbatim surfaced prose (task #1526 events.jsonl, 2026-07-19T02:08:29Z): "Candidate (from round-1 Alternatives critic, confidence low-medium): extend the planner spec (§9/§10) and/or upload-verifier so every OFF-POD phase's file reads must be ENUMERATED in the plan (making them plan-named and thus Step-2.8-gated) — the mechanical-enforcement complement to #1526's docs bullet. target_file: .claude/agents/planner.md, .claude/agents/upload-verifier.md."