d5f33f0c6e
Injector.drop knew the precise cause (herdr agent_not_found) but the sender was told only 'worker unreachable or stuck', so a lead could not tell a dead pane from a stalled model. TurnListener.onTurnFailed gains a reason, defaulting to the old one-arg form. CompletionResolver prefers that reason, then the pane scrape, then the old fixed text. drop now fires onTurnFailed unconditionally. That is the substantive fix: the sender blocks on the rendezvous waiter, not on the delivered future, so failing delivered() alone never woke it and a queued send sat until its timeout.