9088d2b2c5
Verified by the lead on0af902e: mvn -f bridged/pom.xml clean install, unpiped, in a scratch worktree — MVN_EXIT=0, Tests run: 689, Failures: 0, Errors: 0, BUILD SUCCESS. Reviewed by the lead reading the diff. The member's own report was lost to the idle reaper before it was collected, so there was no author write-up to review against. All three defects that sank3b2f395are absent: * failTarget is required — one constructor, Objects.requireNonNull, no defaulting overload anywhere in the repo, and Bridged.java:365 updated to pass messages::abandon. * The failure fires inside reportTransition after its `if (previous == next) return;` guard, so an unchanged tick cannot reach it. * No AtomicReference; MessageService is passed directly, so there is no empty window. abandon(String target, String reason) confirmed as CB-568's target-wide operation that resolves waiters as a failure rather than letting them time out. Known limitation, accepted and covered by its own test: states.put records the new state before the bounded retries run, so if all three attempts throw, the tickets stay pending and no later tick retries. It is logged at WARN, and the retries carry no backoff.