The node answers a placement candidate once, retries a read the bus did not answer, and keeps a file's secrets entry by entry (issue 1126; group fix/1126-seed-same-3) #160

Merged
mesh-tools merged 7 commits from fix/1126-seed-same-3 into main 2026-10-28 11:40:39 +00:00
Member

Delivery group fix/1126-seed-same-3 (mesh-sdk, mesh-host); pins mesh-sdk 8520a4c.

The bus outage of 2026-10-28 10:45-10:56Z (issue 1126 note 66): the shadow re-answered every candidate group on any write to the node's own module haves (health words alone) and on any rewrite of a placement/module/config key with the same value; each answer took 13-17 s of bus reads, which made health tools time out, which changed health words, which re-answered.

  • A candidate revision is answered once; again only when an input really changed (what runs, the folded modules, a value that differs, a node record, a want); its own write never wakes it.
  • A read the bus did not answer is retried after a bound (LaterWait 5 s to 5 min), never kept as an answer: the shadow's reads, the own composer, ownresync (running and hand), Env.Held and ReadNodeHaveErr; BusFailed tells a failed read from the run's own cancellation.
  • keepRunning keeps a file's secrets entry by entry (the SDK's slots).
  • Test globals (composeAgain, laterAgain, notReadyAfter, slowAfter) are set through setFor with t.Cleanup; an unplaced node no longer re-arms its retry (review round 1).

Quick vs thorough: thorough (the kind 'a failed read kept as an answer' fixed in every place found, the second time it was met).
Tests: rows only (1269 Test functions, unchanged); the named integration test TestNatsANodeThePlacementNamesComposesAndAppliesItsOwn with its subtest one_answer_per_candidate_revision passes locally against an embedded bus (it fails on main: 'answered 2 more time(s) at the same revision'); -race -count=3 on selfcompose.
Notes kept for later (issue 1126 note 67): the shadow does not hear the vault's secret-changed event; a permission refusal is retried like a bus failure.

Reviewed-by: rev-seed-same-3@shanks at 1e01868d92

Delivery group fix/1126-seed-same-3 (mesh-sdk, mesh-host); pins mesh-sdk 8520a4c. The bus outage of 2026-10-28 10:45-10:56Z (issue 1126 note 66): the shadow re-answered every candidate group on any write to the node's own module haves (health words alone) and on any rewrite of a placement/module/config key with the same value; each answer took 13-17 s of bus reads, which made health tools time out, which changed health words, which re-answered. - A candidate revision is answered once; again only when an input really changed (what runs, the folded modules, a value that differs, a node record, a want); its own write never wakes it. - A read the bus did not answer is retried after a bound (LaterWait 5 s to 5 min), never kept as an answer: the shadow's reads, the own composer, ownresync (running and hand), Env.Held and ReadNodeHaveErr; BusFailed tells a failed read from the run's own cancellation. - keepRunning keeps a file's secrets entry by entry (the SDK's slots). - Test globals (composeAgain, laterAgain, notReadyAfter, slowAfter) are set through setFor with t.Cleanup; an unplaced node no longer re-arms its retry (review round 1). Quick vs thorough: thorough (the kind 'a failed read kept as an answer' fixed in every place found, the second time it was met). Tests: rows only (1269 Test functions, unchanged); the named integration test TestNatsANodeThePlacementNamesComposesAndAppliesItsOwn with its subtest one_answer_per_candidate_revision passes locally against an embedded bus (it fails on main: 'answered 2 more time(s) at the same revision'); -race -count=3 on selfcompose. Notes kept for later (issue 1126 note 67): the shadow does not hear the vault's secret-changed event; a permission refusal is retried like a bus failure. Reviewed-by: rev-seed-same-3@shanks at 1e01868d92c38870bafcbb6282563e499afd624e
mesh-tools added 7 commits 2026-10-28 11:28:31 +00:00
On shanks probe/1126-seed-7 was answered at revision 84 every 13-17 s: each look rewrote
the haves of its unhealthy modules with new words, and the shadow took any write of its
own module haves, placement, modules or config values as a change. Each answer loaded
the bus, the health tools timed out, the words moved again. Now only what an answer is
composed from wakes it (what runs, folded modules, a changed value), and each group is
answered again only when its keys' revisions or the node's inputs moved.
Met twice on 2026-10-28: shanks kept 'want.shanks.brother could not be read ... no
responders' as the own-secret step's last word, and ace kept 'the vault's own: not yet
... no responders' as its answer to seed-7, each until another input moved. Every bus
read of the composer (manifests, builds, archives, served values, the vault's own and
credentials, the have of what runs) is noted (BusFailed); an answer or a pass that met
one is made again after a growing bound (5 s to 5 min), and a pass is not handed when
the have of its sealed values did not answer. The own-secret step tells a read or an
ask that did not answer (Retry, taken again) from a key absent or the vault's word.
An unplaced node owes no pass, so no timer is armed again; every wait a test sets is put back when it ends; pin mesh-sdk 8520a4c, whose masking splits only a file's secrets (issue 1126; review of seed-same-3, round 1)
mesh/delivery merged: source.main moved to novox/mesh-host@df878ba1f780
mesh/delivery-group group fix/1126-seed-same-3 merged: every member is merged
mesh/check pass 1e01868d92c3 on c3a2ffde6755 | carried from mesh-catalog 774fcdfa93ad | unit 2188 run, 1064 kept, 36 skipped | integration 2197 run, 1…
1e01868d92
Author
Member

Delivery novox/mesh-host@1e01868d92c3 — merged since 2026-10-28T11:40:40Z

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

Group fix/1126-seed-same-3: novox/mesh-host@1e01868d92, novox/mesh-sdk@8520a4c099

  • composed together: pass — the checker's verdict at the members' heads (8ad62a745898)

Transitions

  • 2026-10-28 11:28 (new) → proposed (announced): novox/mesh-host#160's head announced
  • 2026-10-28 11:28 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 11:40 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-host@1e01868d92c3` — **merged** since 2026-10-28T11:40:40Z **Source** — source.main moved to novox/mesh-host@df878ba1f780. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1126-seed-same-3`: novox/mesh-host@1e01868d92c3, novox/mesh-sdk@8520a4c09960 - composed together: pass — the checker's verdict at the members' heads (8ad62a745898) **Transitions** - 2026-10-28 11:28 (new) → proposed (announced): novox/mesh-host#160's head announced - 2026-10-28 11:28 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 11:40 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-tools merged commit df878ba1f7 into main 2026-10-28 11:40:39 +00:00
mesh-tools deleted branch fix/1126-seed-same-3 2026-10-28 11:40:39 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#160