os-sdlc Runner: two implementations opened in one Claude session collide #1447
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1447
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The os-sdlc Runner finds the active implementation by the Claude session ID. Two implementations that one session opens in parallel subagents therefore share one active run. The second
implementation-openmakes the first run stale, and dispatches of one ticket get recorded on the run of another ticket.Observed
On 2026-10-27, session 9f415790-a6bd-4850-8d70-3dd45004ce2b ran AFK units for #1364 (implementation 199) and #1357 (implementation 200) in parallel. Opening 200 made 199 stale. The #1364 change-auditor submit for dispatch 1763 failed:
Run 199 then showed finished after 28 s. Implementation 201 then recorded dispatch 1769 (a #1357 programmer) and unrelated change-auditor and finding-builder dispatches. Both tickets were hand-finished.
Reproduce
In one Claude session, start two subagents that each run
os-sdlc-implementation-open <same SESSION_ID> <ticket> poodr-ticket-implementation, then let both dispatch their change-auditor.Origin
/os-sdlc:implement 1364in a coordinator session that also ran #1357VERDICT: CREATE
Occurrence: os-sdlc: implementation-open in one session abandons a concurrent implementation and steals its dispatches
Seen: plugins/os-sdlc/lib/os_sdlc/implementation.rb (abandon_unfinished!(session_id), lines 43-54)
Run: session 9f415790-a6bd-4850-8d70-3dd45004ce2b; #1357 implementation 200 (opened 17:32) abandoned when #1364 opened implementation 201 (17:36)
Adds: the victim side. #1357 programmer dispatch 1769 was recorded on implementation 201 with empty gate_steps, os-sdlc-next returned 201's await_completion to the #1357 orchestrator, and the ungated programmer change carried 6 rubocop offenses plus a nil crash. #1357 was hand-finished (main
49e185f1).Occurrence from #1337 (same session 9f415790):
os-sdlc-implementation-open 9f415790-... 1337 poodr-ticket-implementation --target os-sdlcreturned implementation 201 at 2026-10-27 17:36 EDT. Its change-auditor (dispatch 1770) calledos-sdlc-subagent-stopfrom worktree.claude/worktrees/ticket-1337and got exit 3:harness error: Sequel::Error: No database associated with Sequel::Model; no next_step came back. The coordinator reports that 201 also holds foreign dispatch 1769 (#1357 programmer). #1337 was hand-finished outside the Runner; 201 is to be abandoned after the merge. The Sequel error may be a separate defect (unbound model in subagent-stop), or a result of the collision; not diagnosed.Occurrence 2026-10-28 (session 9f415790): the collision is wider than parallel implement runs. A fast-batch for #1455 ran in the same session as implement run 208 (#1449). Its finding-builder subagent was recorded by the SubagentStart hook as dispatch 1851 on implementation 208, after change-auditor 1850 passed. The Runner then answered await_completion for about 15 minutes, then reported stalled dispatch 1851 at node change-auditor with directive re-dispatch. Fast-batch subagents are not part of any implementation, but the hook attaches them to the session's open implementation. Evidence: os-sdlc-implementation-report 208 lists dispatch 1851 agent_type finding-builder, stalled true.