Problem
Independent review of #1127 found two P1 action-ownership gaps after #1125:
- Composer captures only a run ID but branches on live
run.canSteer; stale A steer may fall through to project.submit().
- ToolWalk polls
currentRunID after submit and can capture B if external B replaces A first; timeout/automatic approval/input can then act on B.
Acceptance criteria
Scope
Native Composer/ToolWalk run-identity ownership only, stacked after #1127; blocks stack promotion.
Problem
Independent review of #1127 found two P1 action-ownership gaps after #1125:
run.canSteer; stale A steer may fall through toproject.submit().currentRunIDafter submit and can capture B if external B replaces A first; timeout/automatic approval/input can then act on B.Acceptance criteria
Scope
Native Composer/ToolWalk run-identity ownership only, stacked after #1127; blocks stack promotion.