5206679efd
An async delegation ticket (bridge_send wait:false) resolves on MessageService.reply's rendezvous fast path, which returns before onReplyQueued. So CB-307's push loop only ever heard about the durable-inbox case, and the mode CLAUDE.md tells leads to prefer never nudged anyone. Closes gitea #72. Adds a second, independent reminder schedule keyed by the lead terminal, so several tickets finishing together coalesce into one nudge. The CB-307 path is untouched. Three defects were found in review and fixed before merge: * a pendingTickets entry outlived the ticket it named. poll() returns null once pruneTerminalTickets drops a ticket, so ticketCollected was never reached and the entry leaked for the daemon's life, riding along on every later nudge and sending the lead after a ticket bridge_poll can no longer find. * a lost nudge: a ticket landing between decideTickets returning STOP and activeLeads.remove coalesced onto a schedule that was about to die. That is the exact failure this ticket exists to remove, reintroduced in a narrow window. * the success direction was unpinned in tests, and the comment listing the paths that complete the future was short by several. The obvious fix for the second one was wrong: restarting on any pending ticket defeats the reminder cap, because a never-collected ticket at cap is expected to still be there. The fix diffs against a snapshot taken before the decision, so only a ticket that truly arrived during the window restarts the schedule. Verified on my own unpiped build: 802 tests, 0 failures, BUILD SUCCESS. Two reviewers on the diff; the loop-gating finding they raised is split out as CB-590.