CB-577: correlate async questions to their turns #49

Closed
agent wants to merge 1 commits from worker/cb577-f36fdc-18 into main
Member

Bind each async question to the Task registered for its exact forward rendezvous waiter. On an unanswered question, keep the ticket PENDING but remove stale target tracking so a later send can proceed. Tests run: 683, Failures: 0, Errors: 0, Skipped: 0; BUILD SUCCESS.

Bind each async question to the Task registered for its exact forward rendezvous waiter. On an unanswered question, keep the ticket PENDING but remove stale target tracking so a later send can proceed. Tests run: 683, Failures: 0, Errors: 0, Skipped: 0; BUILD SUCCESS.
agent added 4 commits 2026-08-15 06:25:52 +02:00
ltms added 1 commit 2026-08-15 06:28:56 +02:00
CB-577: remove obsolete async target tracking
CI / contract (pull_request) Successful in 43s
CI / build (pull_request) Successful in 56s
c884802b13
ltms added 2 commits 2026-08-15 06:32:05 +02:00
The criterion required the token to bind the session turn number. Three
independent refusals from the implementer showed why that is not
implementable at this layer: MessageService owns acceptance but never
learns of delivery, and CompletionResolver.onDelivered runs before
SessionManager.onDelivered, so the turn number does not exist yet at the
only point the token could capture it.

Records both rejected alternatives and why, so the next reader does not
re-derive them: a target-keyed registry restores the ambiguity the token
exists to remove, and injecting a turn counter couples layers to fill a
field nothing reads yet.
M4: fail tickets on terminal health states
CI / contract (pull_request) Successful in 44s
CI / build (pull_request) Successful in 57s
3b2f395d3d
Owner

Closing — this is the one PR whose code is genuinely not in main, and that is deliberate.

The CB-577 work itself landed: main has 74b0087, 927e015, merge 5f5573a, plus the follow-up c884802 / 2f48e08. What is left on worker/cb577-f36fdc-18 is exactly one commit, 3b2f395 ("M4: fail tickets on terminal health states"), which was rejected on review. Three defects, none fixed:

  1. The silent-default trap, a sixth time. It adds a 6-argument FleetHealthMonitor overload defaulting failTarget to (_, _) -> { }, so every existing caller keeps the no-op and the feature ships turned off. The commit adds zero tests — the tell that the overload exists only so old tests still compile.
  2. It fires every tick, not on transition. failTarget.accept sits outside reportTransition, so a member that stays GONE has abandon called every interval. The brief asked for a bounded retry.
  3. A duplicate AtomicReference import, and an AtomicReference<MessageService> null window — a turn failing before messagesRef.set(messages) is silently skipped.

Worth recording: CI passed on this commit (run #1162, 3b2f395, conclusion success). A green build cannot see any of the three defects — defect 1 is precisely "no tests were added", which a build does not measure.

Re-briefed as a fresh unit in #52 (CB-580). Do not start from this commit; it will carry the overload back in. Verified 2026-08-15.

Closing — **this is the one PR whose code is genuinely not in `main`, and that is deliberate.** The CB-577 work itself landed: `main` has `74b0087`, `927e015`, merge `5f5573a`, plus the follow-up `c884802` / `2f48e08`. What is left on `worker/cb577-f36fdc-18` is exactly one commit, `3b2f395` ("M4: fail tickets on terminal health states"), which was **rejected on review**. Three defects, none fixed: 1. **The silent-default trap, a sixth time.** It adds a 6-argument `FleetHealthMonitor` overload defaulting `failTarget` to `(_, _) -> { }`, so every existing caller keeps the no-op and the feature ships turned off. The commit adds **zero tests** — the tell that the overload exists only so old tests still compile. 2. **It fires every tick, not on transition.** `failTarget.accept` sits *outside* `reportTransition`, so a member that stays `GONE` has `abandon` called every interval. The brief asked for a bounded retry. 3. A duplicate `AtomicReference` import, and an `AtomicReference<MessageService>` null window — a turn failing before `messagesRef.set(messages)` is silently skipped. Worth recording: **CI passed on this commit** (run #1162, `3b2f395`, conclusion `success`). A green build cannot see any of the three defects — defect 1 is precisely "no tests were added", which a build does not measure. Re-briefed as a fresh unit in **#52 (CB-580)**. Do not start from this commit; it will carry the overload back in. Verified 2026-08-15.
ltms closed this pull request 2026-08-15 07:12:54 +02:00
Some checks are pending
CI / contract (pull_request) Successful in 44s
CI / build (pull_request) Successful in 57s

Pull request closed

Sign in to join this conversation.