Assigner: a held module is on the held list, never on neither, and a neither from before a restart is cleared (issue 1945) #44

Merged
jschoubben merged 1 commits from fix/held-is-not-neither into main 2026-10-25 16:11:33 +00:00
Member

Issue 1945.

Live since 16:02: systemd-resolved on shanks, held on purpose by the operator (rule 2, at its newest fingerprint), raised the urgent "on no list" (neither) alarm every hour. A held module is on the held list; its hold is said and answered there.

  • wants.go: a node goes on neither only when it gets no want AND the module is not held (a rule-2 hold at the newest fingerprint, or a hold this pass raises). A real neither (a module the node runs that nothing applies and that is not held, like g14's this morning) is still raised as before.
  • pass.go startClears: the first pass after a start clears the neither condition of every assigned node not on neither list. Before, it cleared only nodes with a want, so a held node's alarm from a previous process stayed for ever (also reviewer-r6p's note 1 on #42).

Tests, each failing first: TestAHeldModuleWithNoWantIsNotOnNeitherList (1945/AC23), TestAHeldModuleRaisesNoNeitherAndClearsAStandingOne (1945/AC24). gofmt, go vet with and without -tags integration, the unit suite.

No try: the operator decided no checks run during the recovery (issue 1945 note 27).

Not in this change (issue 1945 note 32): the neither alarm still opens with "Nothing for you to do." while urgent, because mesh-sdk's Condition.check (ADR 0253 §1) allows only that or "Needs you:".

Reviewed-by: reviewer-held@shanks at 91d041b62a

Issue 1945. Live since 16:02: systemd-resolved on shanks, held on purpose by the operator (rule 2, at its newest fingerprint), raised the urgent "on no list" (neither) alarm every hour. A held module is on the held list; its hold is said and answered there. - **wants.go:** a node goes on neither only when it gets no want AND the module is not held (a rule-2 hold at the newest fingerprint, or a hold this pass raises). A real neither (a module the node runs that nothing applies and that is not held, like g14's this morning) is still raised as before. - **pass.go startClears:** the first pass after a start clears the neither condition of every assigned node not on neither list. Before, it cleared only nodes with a want, so a held node's alarm from a previous process stayed for ever (also reviewer-r6p's note 1 on #42). Tests, each failing first: TestAHeldModuleWithNoWantIsNotOnNeitherList (1945/AC23), TestAHeldModuleRaisesNoNeitherAndClearsAStandingOne (1945/AC24). gofmt, go vet with and without -tags integration, the unit suite. No try: the operator decided no checks run during the recovery (issue 1945 note 27). Not in this change (issue 1945 note 32): the neither alarm still opens with "Nothing for you to do." while urgent, because mesh-sdk's Condition.check (ADR 0253 §1) allows only that or "Needs you:". Reviewed-by: reviewer-held@shanks at 91d041b62a1aca0051abffee63bc0bf8fa3aa023
mesh-tools added 1 commit 2026-10-25 16:11:15 +00:00
mesh-delivery-assigner: a held module is never on neither list (issue 1945)
mesh/check pass 91d041b62a1a on ec76ab77c058 | unit 163 run, 421 kept | integration 173 run, 487 kept | over bound: integration (slowest integration m…
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
91d041b62a
systemd-resolved, held on shanks by the operator under rule 2, was raised
as an urgent "on no list" condition and reminded every hour, although its
hold is already said and answered on the held list. A node now goes on
neither list only when it gets no want and the module is not held, by a
hold read at its fingerprint or one this pass raises. The first pass after
a start clears the neither condition of every assigned node not on neither
list, not only those with a want, so a neither raised before the restart
for a held module (or a move waiting for its record ask) is cleared too.
Author
Member

Delivery novox/mesh-delivery@91d041b62a1a — held since 2026-10-25T16:11:36Z

Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check.

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

Transitions

  • 2026-10-25 16:11 (new) → proposed (announced): novox/mesh-delivery#44's head announced
  • 2026-10-25 16:11 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows

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@91d041b62a1a` — **held** since 2026-10-25T16:11:36Z Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check. **Source** — source.main moved to novox/mesh-delivery@ec76ab77c058. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-25 16:11 (new) → proposed (announced): novox/mesh-delivery#44's head announced - 2026-10-25 16:11 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows 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 merged commit ec76ab77c0 into main 2026-10-25 16:11:33 +00:00
jschoubben deleted branch fix/held-is-not-neither 2026-10-25 16:11:33 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#44