daily-fix: make the implementer NOT-RUN escape pre-emptive f
kind: infra#wf-fix#wf-fix-fp:9ba4711d501b#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 the /daily 2026-07-26 problem sweep (route 2). Surfaced by 3 independent miner group(s) over the 2026-07-26 session transcripts.
Goal
Make the implementer's NOT-RUN escape PRE-EMPTIVE — when the Step 9c selector reports a
selected file in its slow_tests_selected list, route it straight to NOT-RUN + defer to
Step 9c with zero local attempts.
Workflow gap
- Bug observed: Implementers attempted
tests/test_workflow_lint.pylocally under sub-600 s fences at least six times across three sessions on 2026-07-26; every attempt was timeout-killed and every session ended in the same NOT-RUN escape it could have taken at minute zero. - Why it is a workflow gap:
.claude/agents/implementer.mdframes the escape post-hoc ("if a mandatory-set file genuinely cannot finish in-turn … the existing NOT-RUN escape applies"), and cites a stale 319-771 s runtime, while the selector already publishes the machine-readable signal (slow_tests_selected, and a 2400 s surcharge for this exact file) that neither implementer spec reads. - Confidence (emitter): high
- verified-at-filing:
grep -n 'NOT-RUN\|test_workflow_lint\|slow_tests_selected' .claude/agents/implementer.md .claude/agents/experiment-implementer.md→ implementer.md 3 hits (L174 post-hoc escape namingtests/test_workflow_lint.pyat "319-771 s"; L197 generic NOT-RUN escape; L254 report field), experiment-implementer.md 1 hit (L953, generic NOT-RUN, file not named);slow_tests_selectedandrecommended_timeout_s→ 0 hits in BOTH specs.grep -n 'SLOW_TESTS\|slow_tests_selected' scripts/select_step9c_tests.py→ the selector emits"slow_tests_selected"in its--jsonpayload (L1797) and carriesSLOW_TESTS = {"tests/test_workflow_lint.py": 2400}(L740-746) whose comment records the wall growing "771 -> 1819 s max" and a measured 1188.62 s standalone.git log --oneline --since='7 days ago' -- .claude/agents/implementer.md .claude/agents/experiment-implementer.md→ 6 commits, none making the escape pre-emptive (2026-07-26)
Evidence
- Session
0e2c3b21(implementer subagentagent-a2759a68efd2d1b7f), 09:32:52Z→10:23:44Z: four attempts ontests/test_workflow_lint.py(9,088 lines / 531 tests) —timeout 500SIGTERM'd,timeout 850inside a 900 s Bash (harness-converted to background,Terminated), a detachedtimeout 900+ poll loop, plus two interveningpgrep/sleeppoll loops — before taking the documented NOT-RUN escape. Its own report:"rc=124 = timeout hit (900s exceeded …). Made it to ~54% (~380/700+ tests) before the 900s cap. Under this fleet load test_workflow_lint.py needs >900s … The result: NOT-RUN due to timeout."Measured cost ~51 min of implementer wall-time, 4 discarded runs, on a shared VM already running 3 concurrent Step 9c gates. Step 9c covered the file 40 min later with a 5310 s budget. - Session
8571eca6, 12:14:20Z: the #1698 implementer reported the same file"timed out at both 540s foreground and 1400s background under fleet load from 2 concurrent Step 9c gate runs on the shared VM", naming it NOT-RUN in the report. - Session
a5a4b7bd(subagenta510618c), 07:48:25Z→07:57:25Z:timeout --kill-after=30s 540s uv run pytest tests/test_workflow_lint.py -x -qreturnedExit code 143 Terminated; the implementer then ran a-ksubset (29 passed / 535 deselected in 4 s) and deferred the remainder. Measured cost ~9 min on a killed run, and the implementer-side verification of a file it had just edited rested on 29 of 564 tests. - The failure was predictable at dispatch in every case: the file is the sole entry in the selector's
SLOW_TESTSsurcharge table, whose in-tree comment records a measured max of 1819 s — above every fence any of the three sessions could set, since the Bash tool cap is 600 s foreground. - Net information gained across all three sessions: zero. Every run ended at the same NOT-RUN escape, and Step 9c ran the file to completion in each case.
Proposed change
- In
.claude/agents/implementer.md§ "Run tests — gate-matched scope (#1288)" (L174), replace the post-hoc sentence with a pre-emptive rule: any selected file appearing in the selector's--jsonslow_tests_selectedlist is routed to NOT-RUN + Step 9c deferral with ZERO local attempts; report it in(c) How to verifywith the exact copy-pasteable command and the selector'srecommended_timeout_s. - Drop the stale "319-771 s" figure — it is contradicted by the selector's own
SLOW_TESTScomment (max 1819 s, 1188.62 s standalone) and reads as "worth one try". Cite the selector field, not a frozen number, so the spec cannot drift again. - Keep the existing distinction intact: a pin-sweep HIT left NOT-RUN stays presumptively blocker-adjacent for the code-reviewer; the pre-emptive route changes WHEN the escape is taken, not its downstream treatment.
- Add the corollary that a
-ksubset is an acceptable local substitute ONLY when it is named explicitly in theepm:resultsmarker with its deselected count, so a 29-of-564 subset can never read as a full local run. - Mirror the same sentence in
.claude/agents/experiment-implementer.md(its NOT-RUN escape at L953 is generic and names no slow file). - unverified hypothesis — verify at plan time: a fleet-wide single-flight around Step 9c / pre-push lint-gate launches would remove the contention that pushed this file past its historical band (session
8571eca6proposed it). That is a larger change than the pre-emptive escape and should be scoped separately; the escape is correct regardless of contention.
Scope / surfaces
- Primary target:
.claude/agents/implementer.md .claude/agents/experiment-implementer.md(mirror sentence)
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. uv run python scripts/workflow_lint.pypasses (no-flags); ruff clean on touched files.- This session runs under a
workflow_fix_target:Provenance line — it MUST NOT auto-route its own subagents' workflow-fix candidates (recursion guard).
Provenance
-
fingerprint: 9ba4711d501b
-
workflow_fix_target: .claude/agents/implementer.md
-
fingerprint: PENDING
/daily 2026-07-26 route-2 filing. Miner refs: H-P1, E-P15, J-P8.
Activity