EPS
← All tasks·#975Completed

workflow-fix: poll_pipeline synthesized envelope version max+1

kind: infra#daily-auto-filed#wf-fix#wf-fix-fp:5ff6ef7fb425
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 by /daily 2026-07-03 from a recursion-guard-parked workflow-fix candidate.

Goal

the synthesized envelope should omit the version (let task_workflow.post_event derive max+1) or compute max(existing)+1 for the kind; needs its own analysis of multipart/pointer-marker + sentinel-schema interactions

Workflow gap

  • Bug observed: the synthesized-envelope fallback (~lines 846-856) pins 'kind': 'epm:results', 'version': 1 in code; on a follow-up round's re-run or a re-drained sentinel this reproduces the version-collision class (#389/#825) in the poller path
  • Why it is a workflow gap: see candidate note
  • Confidence (emitter): medium

Proposed change (candidate sketch — refine in planning)

the synthesized envelope should omit the version (let task_workflow.post_event derive max+1) or compute max(existing)+1 for the kind; needs its own analysis of multipart/pointer-marker + sentinel-schema interactions

Scope / surfaces

  • Primary target: scripts/poll_pipeline.py
  • Grep the workflow surface for the pattern before editing; list every hit in the plan.

Constraints / invariants

  • Workflow-surface only; scripts/workflow_lint.py --check-asks passes; ruff on touched files passes.

Provenance

  • workflow_fix_target: scripts/poll_pipeline.py
  • fingerprint: 5ff6ef7fb425

routed: parked: EPM_WORKFLOW_FIX_SESSION (recursion guard — this session is a workflow-fix session; candidate LOGGED for the next orchestrator pass, NOT auto-filed) source: prose-followup (planner § Follow-ups + Claude code-reviewer bug-class sweep, both confirmed the line)

target_file: scripts/poll_pipeline.py bug_observed: The synthesized-envelope fallback (~lines 846-856) pins "kind": "epm:results", "version": 1 in code; on a follow-up round's re-run or a re-drained sentinel this reproduces the same version-collision class (#389/#825) in the poller path. why_workflow_gap: The prose surfaces now defer to max+1 (#917), but this code path still hardcodes version 1 — the last checked-in literal for a round-versioned kind, outside #917's declared scope (poll_pipeline.py was must-not-touch). proposed_change: The synthesized envelope should omit the version (let task_workflow.post_event derive max+1) or compute max(existing)+1 for the kind; needs its own analysis of multipart/pointer-marker + sentinel-schema interactions. diff_sketch: |

  • envelope = {"kind": "epm:results", "version": 1, ...}
  • envelope = {"kind": "epm:results", ...} # version omitted -> post_event derives max+1 confidence: medium related_task: #917
Activity