8b2e068d3e
start_agent unconditionally called move_story_to_current at the top of its body, before the agent-stage check. When called for mergemaster (or qa) on a story in 4_merge/ AND a stale 1_backlog/ shadow of the story existed (post-491/492 split-brain artifact), the move would find the shadow and yank it to 2_current/, find_active_story_stage would then report 2_current/, the stage check would expect a Coder agent, and mergemaster would be rejected — leaving the story in 2_current/ to be re-promoted by the next auto-assign tick. Infinite loop. Gate the move so it only fires for Coder-stage agents. QA and Mergemaster now attach to the story at its existing stage. Adds a regression test that reproduces the split-brain scenario by seeding both 4_merge/ and 1_backlog/ copies of the same story and asserting (1) the stage check does not reject mergemaster, and (2) the 4_merge/ copy is preserved (i.e. not demoted to 2_current/). Observed live on 2026-04-09 while story 478 was looping. Filed as bug 502. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>