The checker and the builder end or re-ask what the build seat gave up, and a try can be ended by hand (issue 734) #73

Merged
mesh-tools merged 4 commits from fix/734-lost-ask into main 2026-10-26 13:54:17 +00:00
Member

Issue 734. Group fix/734-lost-ask with mesh-sdk #92 and mesh-controller #472, which merged at 14:40 (local) while this member was refused (the forge answered 405, then feat/890-placement #72 changed the checker's go.mod; issue 1275 reopened for that). Rebased onto main 1cbae7d4: the checker, the builder and mesh-grants pin mesh-sdk main 21252194 (#91 and #92).

  • Checker: a try whose ask was given up ends as error with the seat's words (its place is freed; checker_try of the same head asks anew); a try whose ask no node takes within the step bound ends the same way; a merge check whose ask was given up is asked again, up to 3 times, then fails as not heard and is judged again when the nodes change. Merge checks get no not-taken bound (ADR 0525 §9). New tool checker_try_end {id, why}.
  • Builder: a given-up part of a build is asked again at once with the seat's words, within its usual number of askings.
  • Both keep whether they hear dead letters in a new state hearing and show it as dead_letters {heard, why} in checker_status and builder_stuck.
  • mesh-grants pins the same mesh-sdk, so the grants part's shadow list composes the dead-letter reads the controller grants since #472's delivery: today the take-over was refused because 6 users differ by exactly those reads; this change makes the lists equal again.

Tests: lostask_test.go, a row in TestATryIsJudgedAndItsEndWrittenWithNoStatusOwed against a real bus, builder and status rows. Suites and vet clean (review round 3 re-ran them at this head).

Reviewed-by: review-734@shanks at 3993175e45

Issue 734. Group fix/734-lost-ask with mesh-sdk #92 and mesh-controller #472, which merged at 14:40 (local) while this member was refused (the forge answered 405, then feat/890-placement #72 changed the checker's go.mod; issue 1275 reopened for that). Rebased onto main 1cbae7d4: the checker, the builder and mesh-grants pin mesh-sdk main 21252194 (#91 and #92). - Checker: a try whose ask was given up ends as error with the seat's words (its place is freed; checker_try of the same head asks anew); a try whose ask no node takes within the step bound ends the same way; a merge check whose ask was given up is asked again, up to 3 times, then fails as not heard and is judged again when the nodes change. Merge checks get no not-taken bound (ADR 0525 §9). New tool `checker_try_end {id, why}`. - Builder: a given-up part of a build is asked again at once with the seat's words, within its usual number of askings. - Both keep whether they hear dead letters in a new state `hearing` and show it as `dead_letters {heard, why}` in checker_status and builder_stuck. - mesh-grants pins the same mesh-sdk, so the grants part's shadow list composes the dead-letter reads the controller grants since #472's delivery: today the take-over was refused because 6 users differ by exactly those reads; this change makes the lists equal again. Tests: lostask_test.go, a row in TestATryIsJudgedAndItsEndWrittenWithNoStatusOwed against a real bus, builder and status rows. Suites and vet clean (review round 3 re-ran them at this head). Reviewed-by: review-734@shanks at 3993175e457f94270721657784a2065e6f18e6b0
Author
Member

Delivery novox/mesh-delivery@3993175e457f — merged since 2026-10-26T13:54:20Z

Source — source.main moved to novox/mesh-delivery@4174e23c04. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/734-lost-ask: novox/mesh-controller@ccc7ba334c, novox/mesh-delivery@3993175e45, novox/mesh-sdk@3203358c4c

  • composed together: fail — the checker's verdict at the members' heads (cbad4d52b5dc): g14

Transitions

  • 2026-10-26 13:45 (new) → proposed (announced): novox/mesh-delivery#73's head announced
  • 2026-10-26 13:46 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-10-26 13:54 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-delivery@3993175e457f` — **merged** since 2026-10-26T13:54:20Z **Source** — source.main moved to novox/mesh-delivery@4174e23c0492. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/734-lost-ask`: novox/mesh-controller@ccc7ba334c82, novox/mesh-delivery@3993175e457f, novox/mesh-sdk@3203358c4cb5 - composed together: fail — the checker's verdict at the members' heads (cbad4d52b5dc): g14 **Transitions** - 2026-10-26 13:45 (new) → proposed (announced): novox/mesh-delivery#73's head announced - 2026-10-26 13:46 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-10-26 13:54 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
jschoubben added 4 commits 2026-10-26 13:45:36 +00:00
A check ask handed out five times during a bus reload was given up into DEAD_LETTERS and no build node wrote a step for it,
so try-1793017340003993788 stayed running for ever, held one of the four try places, and checker_try of its head kept
answering its id. The checker now hears the copies DEAD_LETTERS keeps of the build seats' given-up asks (an ordered
consumer from its start; the grant is mesh-sdk/mesh-controller DeadLetterReads, branch fix/734-lost-ask) and ends the
step it waits for: a try ends as error saying why, a check is asked again under its claim, up to three times, then fails
as not heard. A try whose ask no node takes within the step bound ends the same way (a check's backlog stays no fault,
ADR 0525 §9). checker_try_end ends a try by hand, freeing its place and stopping its judging.
The waiter moved to mesh-sdk buildrun (fix/734-lost-ask, d96b9fd6), where every asker of the build seats shares it.
The builder hears DEAD_LETTERS for the go, node and image seats and asks a given-up part of a build again at once, with
the seat's words as why, instead of waiting for the check bound. The checker keeps what it does with a lost ask (a try
ends as error, a check is asked again) and its verdict words.
mesh-grants moves to the same mesh-sdk (3203358c), so its shadow user list grants the checker and the builder the
DEAD_LETTERS reads the controller's list will, and the take-over is not blocked by a difference. The checker and the
builder hear DEAD_LETTERS through buildrun.DeadLetterHearing: in the background, again at every reconnect and every ask
waited for while deaf, and keep whether they hear it in their new state hearing, which checker_status and builder_stuck
say as dead_letters. checker_try says that a try ended by the not-taken bound leaves its ask in the stream.

Not done as asked: a module health tool. The catalogue refuses a tool check on a module with no runtime of its own and no
other check beside it (ADR 0227 rule 8, ADR 0366 §1), so the deaf state is said in the status tools and the log.
Checker, builder and grants part: pin mesh-sdk main, which holds both the dead-letter hearing (#92) and the placement (#91) (issue 734)
mesh/delivery merged: source.main moved to novox/mesh-delivery@4174e23c0492
mesh/delivery-group group fix/734-lost-ask merged: every member is merged
mesh/check checking 3993175e457f on 4174e23c0492
3993175e45
jschoubben force-pushed fix/734-lost-ask from bf57417215 to 3993175e45 2026-10-26 13:45:36 +00:00 Compare
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head bf57417215 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head bf574172154a is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit 4174e23c04 into main 2026-10-26 13:54:17 +00:00
mesh-tools deleted branch fix/734-lost-ask 2026-10-26 13:54:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#73