b469be8cc3
The previous commit claims every outbox before delivering and runs deliveries per target profile, but `drainBusy` still spanned the delivery phase: a `bot_relay.outbox.pending` push that arrived while one lane ran a long turn (up to RELAY_DELIVER_TIMEOUT_MS) only set `drainRerun`, and the new envelope was claimed after that turn — the reporter's step 3 (bot C mails D while A→B runs) still ended in `queued_expired`, because the gateway checks the TTL at the claim. Scope `drainBusy` to the claim phase and make the delivery lanes module state: `relayLanes` maps `target_connection::target_profile` to the tail of that target's in-flight deliveries, so a later drain appends to the running lane (same target stays ordered, one turn at a time) or starts a new one (other targets run now). Lane entries drop once idle; stopBotRelay clears them so a restart begins fresh. Tests: keep the contributor's red-on-base test (claims every outbox first, delivers to different targets concurrently) and replace the ordering-only test — green on base — with one that pins the mid-delivery claim plus the same-target ordering (red on base AND on the previous commit alone). Docs: bot-mode.md states the delivery concurrency contract. Part of #111587 (with the previous commit: Fixes #111587)