CB-580: fail a ticket when its member reaches a terminal health state #56

Merged
ltms merged 1 commits from worker/cb580-terminal-health-ed6058-21 into main 2026-08-15 08:57:03 +02:00
Owner

Closes #52. Replaces the rejected 3b2f395 (PR #49), which was started from scratch rather than
fixed in place.

Opened by the lead on the worker's behalf: the sonnet profile has no gitTokenEnv until the
daemon restarts, so the member could commit and push but not open its own PR.

The member's own report was lost. It finished (BUSY -> DONE at 07:54) and I failed to poll it
before the idle reaper released it at 08:24. There was no bridge_reply and no completion scrape,
so there are no worker-supplied test counts or notes here — only the code.

Review must confirm the three defects that sank 3b2f395 are absent: failTarget is a required
constructor argument with no defaulting overload, the failure fires on the transition into the
terminal state rather than on every tick, and no collaborator is held behind a reference that can be
silently empty.

Branched from 2f48e08. Not yet verified or reviewed by the lead at the time of opening.

Closes #52. Replaces the rejected `3b2f395` (PR #49), which was started from scratch rather than fixed in place. Opened by the lead on the worker's behalf: the `sonnet` profile has no `gitTokenEnv` until the daemon restarts, so the member could commit and push but not open its own PR. **The member's own report was lost.** It finished (`BUSY -> DONE` at 07:54) and I failed to poll it before the idle reaper released it at 08:24. There was no `bridge_reply` and no completion scrape, so there are no worker-supplied test counts or notes here — only the code. Review must confirm the three defects that sank `3b2f395` are absent: `failTarget` is a **required** constructor argument with no defaulting overload, the failure fires on the transition into the terminal state rather than on every tick, and no collaborator is held behind a reference that can be silently empty. Branched from `2f48e08`. Not yet verified or reviewed by the lead at the time of opening.
ltms added 1 commit 2026-08-15 08:54:54 +02:00
CB-580: fail a ticket when its member reaches a terminal health state
CI / build (pull_request) Successful in 54s
CI / contract (pull_request) Successful in 1m5s
0af902ec43
FleetHealthMonitor now requires a failTarget BiConsumer<String,String>
collaborator (no defaulting overload) and calls it exactly once when a
member transitions into GONE or NEVER_READY, via CB-568's idempotent
target-wide abandon() operation. The reason string names the real
terminal state. failTarget invocation retries up to
MAX_FAIL_TARGET_ATTEMPTS (3) within the same transition if it throws,
and never refires on a later tick where the state is unchanged.

Bridged.java wires messages::abandon as the production failTarget.
ltms merged commit 9088d2b2c5 into main 2026-08-15 08:57:03 +02:00
Sign in to join this conversation.