daily-fix: corpus-replay gate test reds stale branches on fl
kind: infra#wf-fix#wf-fix-fp:d1e4befaaa2d#daily-auto-filed
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-08-01 (route 2: behavior/logic change → independent review) from consolidated problem sweep entry C12 (miner 7, P5; sessions 4a1a7d1f (#1917), 6dbf040f (#1895 sibling)).
Goal
Decouple test_corpus_replay_all_historical_markers from stale-branch parser vintage: replay through the MAIN-resident parser (or pin the corpus at the branch's merge-base snapshot), OR fold the parser+test pair into the Step 5a spec-freshness sync family so a live fleet marker cannot red a branch forked before a parser fix.
Workflow gap
- Bug observed: #1917's gate round 1 red:
FAILED tests/test_workflow_followup_labels.py::test_corpus_replay_all_historical_markers— "Left contains one more item: (1900, '2026-08-01T03:30:56Z')". The branch forked at9cc4a47487, BEFORE main's #1984 parser fix0aad8f32c7("widen leading version-stamp stripper (dash-led form)"); a #1900 dash-led marker in the livetasks/corpus failed the stale branch's parser while root-main passed. Cost: one ~30-min gate round + diagnosis + merge origin/main + a second ~40-min gate round. Same-family same-morning: #1895'stest_no_new_torch_before_dotenv_vm_entrypointsred until main-side322c519ab7synced. - Why it is a workflow gap: The test replays LIVE fleet task state (
_corpus_events_by_task()walkstasks/) through the BRANCH-residentparse_followup_note_field, coupling every stale branch to fleet-wide marker churn — any branch forked before a parser fix goes red the moment a new-form marker lands anywhere in the fleet, with no code defect on the branch. - Confidence: high (mechanism read directly from the test source + verified commits; incident chain miner-read from the transcript)
- verified-at-filing:
grep -rn 'test_corpus_replay_all_historical_markers' tests/→ 1 hit,tests/test_workflow_followup_labels.py:1206(target CONFIRMED — the consolidated entry's named file is the real site; the test body reads_corpus_events_by_task()over livetasks/and calls the branch-localparse_followup_note_field, construction site confirmed per clause (g));git rev-parse→9cc4a47487,0aad8f32c7,322c519ab7all resolve;git log --oneline --since='7 days ago' -- tests/test_workflow_followup_labels.py→ 0aad8f32c7 (the stripper widen — fixes the PARSER, not the stale-branch coupling), 6eb0866aa2; Step 5a family-atomic sync block confirmed at.claude/skills/issue/SKILL.md~line 2451 (2026-08-02).
Proposed change (refine in planning)
Two candidate designs, same intent — planner picks:
- (a) Test-side: pin the replayed corpus at the branch's merge-base with origin/main (or import the parser from the fetched origin/main tree for this test only), so branch runs validate the branch-vintage corpus/parser pair; or
- (b) Sync-side: add
tests/test_workflow_followup_labels.py+ the parser module (src/explore_persona_space/task_workflow.pyfollowup-label functions, or whereverparse_followup_note_fieldlives) to the Step 5a family-atomic spec-freshness list, so the pre-gate sync freshens the pair from origin/main (the #1742-class mechanism already runs before the selector). Option (b) is likely smaller and matches the existing family-atomicity machinery (test_step10d_family_atomicity_matches_step5a).
Scope / surfaces
- Primary target:
tests/test_workflow_followup_labels.py, .claude/skills/issue/SKILL.md - If (b): update the Step 5a FAMILY_OF map + its drift-guard pin tests atomically (the de974d95ce precedent). If (a): keep the KNOWN_MALFORMED_RUN_MARKERS allowlist semantics intact.
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. scripts/workflow_lint.py --check-askspasses; ruff/bash -n on touched files passes.- Recursion guard: this task's session carries the workflow_fix_target Provenance line and MUST NOT auto-route its own subagents' workflow-fix candidates.
Provenance
- fingerprint: d1e4befaaa2d
- workflow_fix_target: tests/test_workflow_followup_labels.py, .claude/skills/issue/SKILL.md
- origin: /daily 2026-08-01 problem sweep, CONSOLIDATED.md entry C12.
Activity