2fb46f670f
An off-sub worker's review of CB-113 (delegated through the bridge) surfaced two real gaps in the readiness gate: - A worker that herdr reports idle but whose Claude never connects the bridge MCP (crashed during boot, or wedged on a startup prompt) left its message queued forever: ready.test() never passed, the target was polled indefinitely, and the caller's future never completed (async waiter hung for the full 30-min window). Injector now counts injectable-but-not-ready samples and, after a ~60s grace (READINESS_GRACE_POLLS, deliberately longer than the UNKNOWN stall grace since a first boot is slower than an in-turn blip), fails the queued messages, fires onTurnFailed so blocking/async waiters resolve WORKER_FAILED, and reclaims the target. Mirrors the CB-109 UNKNOWN-stall path. - WorkerPresence.forget had no caller, so a worker's readiness lingered past its life. Injector now clears presence via a forget callback on drop() (pane crash) and on the readiness timeout. +3 InjectorTest cases (never-ready failure, ready-within-grace delivery, drop clears presence). 105 tests green.