The checker and the builder use it; checker_ask_again asks a lost check again; the checker's integration bed writes a node record (issue 734's kind) #103

Merged
mesh-tools merged 7 commits from fix/lost-check into main 2026-10-28 20:41:02 +00:00
Member

Delivery group fix/lost-check, with mesh-sdk fix/lost-check (both modules pin mesh-sdk f91340fe).

Symptom. mesh-catalog #553's verdict stayed running after its step mvsgthyjed5786 passed on shanks at 19:09:31Z; the ask's own watch went deaf. A step the build module's next process ended after a delivery replaced it (RestartReason) failed the change.

Change.

  • The checker and mesh-delivery-builder wait through mesh-sdk's HearEnds: a deaf watch loses no step end, read at the next step end of its build module or a reconnect.
  • A step ended with RestartReason counts as a lost ask: asked again under its claim, at most LostAskTries, then failed as not heard, judged again when the nodes change.
  • checker_ask_again {group, why} ends a running verdict as asked again by hand; the checker hears its verdicts, ends the wait and asks anew. It is refused for a verdict that is not running, while a step of the pull requests runs, and while an ask of the check waits in its build seat's stream (the checker keeps each running check's asks in a new state, asks, deleted at the check's end; issue 1791's kind). It does not re-put under the same ask id: the stream drops a second put of an id within its de-duplication window and keeps both past it.
  • checker_status names such checks under lost, and each step's what.
  • Cherry-picked 58362b3: the checker's integration bed writes n1's node record, so the 8 integration tests failing on main since D14 pass.

Quick or thorough. Quick: the hand tool only. Thorough, chosen: the shared asker in mesh-sdk plus the tool.

Tests. One table replaces the given-up test (given up, replaced under it, deaf and nudged, deaf and asked by hand, refused while queued or running, the asks key gone at every end); one row in the builder's ask table. Counts unchanged: checker 147 unit / 10 integration, builder 77 / 17, repository 588 / 76. The checker's integration level passes locally.

Review. The two required changes of the re-review made: both modules pin mesh-sdk f91340fe, and the asks key is deleted at a check's end (e788802).

Pushed-by: fix-lost@shanks
Reviewed-by: rev-l2@shanks at e7888024a8

Delivery group fix/lost-check, with mesh-sdk fix/lost-check (both modules pin mesh-sdk f91340fe). **Symptom.** mesh-catalog #553's verdict stayed running after its step mvsgthyjed5786 passed on shanks at 19:09:31Z; the ask's own watch went deaf. A step the build module's next process ended after a delivery replaced it (RestartReason) failed the change. **Change.** - The checker and mesh-delivery-builder wait through mesh-sdk's `HearEnds`: a deaf watch loses no step end, read at the next step end of its build module or a reconnect. - A step ended with RestartReason counts as a lost ask: asked again under its claim, at most LostAskTries, then failed as not heard, judged again when the nodes change. - `checker_ask_again {group, why}` ends a running verdict as asked again by hand; the checker hears its verdicts, ends the wait and asks anew. It is refused for a verdict that is not running, while a step of the pull requests runs, and while an ask of the check waits in its build seat's stream (the checker keeps each running check's asks in a new state, asks, deleted at the check's end; issue 1791's kind). It does not re-put under the same ask id: the stream drops a second put of an id within its de-duplication window and keeps both past it. - `checker_status` names such checks under `lost`, and each step's `what`. - Cherry-picked 58362b3: the checker's integration bed writes n1's node record, so the 8 integration tests failing on main since D14 pass. **Quick or thorough.** Quick: the hand tool only. Thorough, chosen: the shared asker in mesh-sdk plus the tool. **Tests.** One table replaces the given-up test (given up, replaced under it, deaf and nudged, deaf and asked by hand, refused while queued or running, the asks key gone at every end); one row in the builder's ask table. Counts unchanged: checker 147 unit / 10 integration, builder 77 / 17, repository 588 / 76. The checker's integration level passes locally. **Review.** The two required changes of the re-review made: both modules pin mesh-sdk f91340fe, and the asks key is deleted at a check's end (e788802). Pushed-by: fix-lost@shanks Reviewed-by: rev-l2@shanks at e7888024a8264f5d1e6ac46a2e9cc0d112ff60be
mesh-tools added 6 commits 2026-10-28 19:38:59 +00:00
mesh-catalog #553's verdict stayed running after its step mvsgthyjed5786
passed on shanks at 19:09:31Z: the watch of that one step key, opened at
18:46:05Z, heard neither its start nor its end and never closed, so the
wait had no bound running and nothing would ever judge it.

- HeardEnds stands between the asker and each ask's watch: at every step
  end of the same build module (one watch per steps state), at a
  reconnect, the asks waited on read their keys now and are judged; a
  watch that closes is opened again, at most 3 times.
- A step the build module's next process ended (RestartReason, a delivery
  replacing it) counts as a lost ask: asked again under the claim, at most
  LostAskTries, then failed as not heard, judged again when the nodes change.
- checker_ask_again {group, why} ends a running verdict as asked again by
  hand; the checker hears its verdicts, ends the wait and claims it anew.
  Refused while a step of its pull requests runs, or for a verdict that
  is not running.
- checker_status names such checks under lost, and each step's what.

Tests: one table replaces the given-up test (rows for given up, replaced,
deaf and nudged, deaf and asked by hand); counts unchanged (147 unit, 10
integration in the checker).
The checker's HeardEnds moved to mesh-sdk buildrun (fix/lost-check,
6aeb401): both modules pin it, and the builder, which waits on the same
Asker, now reads an ask's step at each step end of its build module too.
checker_ask_again and checker_status's lost stay in the checker.

Tests: one row in the builder's ask table (its watch deaf, read at a
nudge, done with no new ask); counts unchanged.
Review of fix/lost-check: an ask no node took yet has no step key, so
asking again then would run the check twice (issue 1791's kind). The
checker keeps the asks each running check put in a new state asks, and the
tool refuses unless every one of them has a step key. Asking again under the
same ask id is not done: the stream drops a second put of an id within its
de-duplication window and keeps both past it, so the waiting copy is never
replaced.

Tests: the hand row of the lost-ask table refuses while its ask waits;
counts unchanged.
Since 9db9499 the checker asks no check while no node record is on the bus; the bed wrote none, so eight integration tests failed on main (PR #101's check). The fake build module now records the names an ask carries, and the first test asserts n1 is named.
The new state asks (checker_ask_again's record of each running check's
asks) is kept and not readable, as hearing is.
Checker and builder pin mesh-sdk f91340f, which opens a silent steps watch again
mesh/delivery-group group fix/lost-check checking: 1 of 2 member(s) ready
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 2007a79c45c3 on a3a0d8f2ceb3 | novox/mesh-delivery#103 in group fix/lost-check
2007a79c45
Author
Member

Delivery novox/mesh-delivery@e7888024a826 — merged since 2026-10-28T20:41:04Z

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

Group fix/lost-check: novox/mesh-delivery@e7888024a8, novox/mesh-sdk@f91340fe82

Transitions

  • 2026-10-28 19:39 (new) → proposed (announced): novox/mesh-delivery#103's head announced
  • 2026-10-28 19:39 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-28 20:41 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@e7888024a826` — **merged** since 2026-10-28T20:41:04Z **Source** — source.main moved to novox/mesh-delivery@1f6f4eda3208. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/lost-check`: novox/mesh-delivery@e7888024a826, novox/mesh-sdk@f91340fe82ef **Transitions** - 2026-10-28 19:39 (new) → proposed (announced): novox/mesh-delivery#103's head announced - 2026-10-28 19:39 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-28 20:41 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 1 commit 2026-10-28 19:39:52 +00:00
Checker: delete a check's asks key at its end, so the state asks holds only the checks that run
mesh/delivery merged: source.main moved to novox/mesh-delivery@1f6f4eda3208
mesh/delivery-group group fix/lost-check merged: every member is merged
mesh/check checking e7888024a826 on 769815ac0fea | novox/mesh-delivery#103 in group fix/lost-check
e7888024a8
Re-review of fix/lost-check: writing an empty list at the end kept one key
for every verdict key ever checked. Tests: every row of the lost-ask table
proves the key gone at the end; one row more (deaf after its build module
replaced it, asked again by hand); counts unchanged.
mesh-tools merged commit 1f6f4eda32 into main 2026-10-28 20:41:02 +00:00
mesh-tools deleted branch fix/lost-check 2026-10-28 20:41:04 +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#103