ec02d905c9
Covers all three layers of the salvaged fix: 1. Adapter-side cancellation: /stop, /new, /reset cancel the in-flight adapter task, release the guard, and let follow-up messages through; /new keeps the guard installed until the runner response lands, then drains the queued follow-up in order. 2. Adapter-side self-heal: a split-brain guard (done owner task, lock still live) is healed on the next inbound message and the user gets a reply instead of being trapped in infinite busy acks. A guard with no recorded owner task is NOT auto-healed (protects fixtures that install guards directly). 3. Runner-side generation guard: stale async runs whose generation was bumped by /stop or /new cannot clear a newer run's _running_agents slot on the way out. 11 tests, all green. Refs #11016