R6: the controller writes signed per-node compositions and their digests; plans, pushes and their verbs go (issue 1945) #457

Merged
mesh-tools merged 67 commits from feat/r6 into main 2026-10-24 23:00:31 +00:00
Member

The controller of release 6 (issue 1945): compositions are written per module per node as keys with their digest and move judgement, and signed; credentials and grants.<module>.<fp> are written when a module's newest build is done, not at a send; the bus's user list travels as a composition change; placement stays in assignments. Plans, batches, the merge window, tiers, the plan and node holds, backups before a send, retries, healers and the verbs plans, plan, push, deliver, delivery-stop, delivery-backups-again, delivery-walks and delivery-order are deleted. The bus step stays as a person's step that writes a want.

Tries: try-1792879572084166563 passed on 9c38aed7.

Delivery group feat/r6 (design 47, milestone R6; ADR 0539, ADR 0540): mesh-sdk, mesh-host, mesh-delivery, mesh-catalog, hq, mesh-controller. One Approve for the group; its delivery is the last delivery plan the controller runs, and after it a merged change reaches each machine through its wants alone.

After the delivery: the operator's signing key is set as mesh-host's operator-signers setting, and acceptance test 18 is read live.

Release-switch: 6
Reviewed-by: reviewer-r6m@shanks at 9c38aed789
Pushed-by: lead-47@shanks

The controller of release 6 (issue 1945): compositions are written per module per node as keys with their digest and move judgement, and signed; credentials and `grants.<module>.<fp>` are written when a module's newest build is done, not at a send; the bus's user list travels as a composition change; placement stays in assignments. Plans, batches, the merge window, tiers, the plan and node holds, backups before a send, retries, healers and the verbs `plans`, `plan`, `push`, `deliver`, `delivery-stop`, `delivery-backups-again`, `delivery-walks` and `delivery-order` are deleted. The bus step stays as a person's step that writes a want. Tries: try-1792879572084166563 passed on 9c38aed7. Delivery group feat/r6 (design 47, milestone R6; ADR 0539, ADR 0540): mesh-sdk, mesh-host, mesh-delivery, mesh-catalog, hq, mesh-controller. One Approve for the group; its delivery is the last delivery plan the controller runs, and after it a merged change reaches each machine through its wants alone. After the delivery: the operator's signing key is set as mesh-host's operator-signers setting, and acceptance test 18 is read live. Release-switch: 6 Reviewed-by: reviewer-r6m@shanks at 9c38aed7890532e6f2e8e24418b640f1df6faeb7 Pushed-by: lead-47@shanks
mesh-tools added 67 commits 2026-10-24 22:17:20 +00:00
Every act that sent a declaration now writes compositions instead, by compare-and-set under the lease, and a
module's compositions are kept for its five newest fingerprints and whatever its want or have names (ADR 0539
clauses 1 to 5 and 14). A module the mesh provides itself, which no want can name, rides in the node's own.
Each act that changed what a node runs now writes that node's compositions, and its wants follow by the assigner's
rules; a bus upgrade composes the bus's machines and answers the want the operator writes, since the assigner never
moves the bus (ADR 0539 clauses 5, 7 and 15). A node-engine may ask its own backup holder before a data module moves.
With no plan left to take a done key in, a write of the builder's keys registers the new fingerprint, composes the
module's nodes and the bus's user list, and writes its grant, so the assigner's rules can name it (ADR 0539 clauses
5 and 7). The new controller composes every node at its start, and the controller it replaced at its own
fingerprint, the operator's way back (clause 10); the merge window's, silent sends' and building plans' buckets are
no longer asserted and are deleted once, each said as the event bucket-deleted (clause 13). The assigner may read
the compositions' digests, and a node-engine hears its backup holder's backed-up.
The assigner holds a move of a module of policy record from the judgement beside its digest, so it is judged by ADR
0377 §3's tests against the composition the node's have names, a held one never taking its place, and written again
when the have changes or a person sets the policy (ADR 0539 clauses 2 and 14). The node-engine's own file
operator-keys, from its setting operator-signers, carries the operator's public keys (clause 3).
With no plan left to name a build or a send to keep the plans, a want names what a collection must keep, and the
composition is where the provisioner's plans are composed for the assignments mirror (ADR 0539 clauses 1 and 5);
the assignments no longer name a node's build, so the controller replaced is the newest earlier build of it.
No send is kept any more (ADR 0539 clause 9), so SentBuilds has no last caller and B8 can delete it.
A node away during the switch finds its last declaration on the stream; once every node's have names the
node-engine registered, no node reads one, so the stream and the nodes' consumers on it go, said once, and a raise
leaves them out (ADR 0539 clause 11).
The user list is a file in a directory the bus's container mounts, so it read as moving data and held every new
credential for a person's yes, against ADR 0539 clause 7; mesh-sdk's UserListOnly lets the assigner write such a
revision at once.
A node applies exactly the composition its want names (ADR 0539 clause 1), which may be a revision a newer one
replaced: its files over 64 KiB stay until no want names it.
With no send left nothing else writes a missed grant, so the take-in of a done key returns it and tries again every
half minute under an urgent condition until it is written. plan-moved and sent go with the plans. The controller's
first-start deletions are said on a granted subject, a node hears only its backup holder, and the operator's account
writes the hand path, an object replaced included (ADR 0539 clauses 2, 7, 10 and 13).
The tests no longer call the writer on a bus without permissions: the controller runs as it serves, the builder and
the indexer write their own keys as their own accounts, and the operator's rotate is the real verb, so a subject the
user list does not grant fails them as it would fail the mesh.
Assignments and builds live on the bus (ADR 0408), so a fixture written before the chain was attached was not what
the serving controller read; and push, which the row test used, went with the plans.
Its want names a composition (ADR 0539 clauses 1 and 6), so a module whose needs others meet must still have one at
its fingerprint, or no want could ever be written for it. Found by the served test.
The first want at the switch skips the record hold only where it changes nothing on the node. A slice differing only in
the bus's user list is marked user-list-only, so no yes waits on it at the switch; any other change at the same
fingerprint is judged as any move, against the declaration's digest.
The verdict keeps only a failure's first line (issue 1921), so the trace that names the cause rode on lines it dropped.
Every grant #456 gives was already feat/r6's, by the SDK's names: each conflict takes feat/r6's side, with main's
test of the user list before the switch kept beside feat/r6's, and the duplicate assertion of the digests' bucket
dropped.
A controller served in the test process left it pointing at a closed connection, so the next test's conditions verb
failed with "connection closed".
A merge the controller hears is now kept in the bucket of the merges (ADR 0539 §17); the test that sends one passed
only when an earlier test on the shared bus had made that bucket.
runLine runs the controller's dispatch in the test process, which names every later connection after the line's verb:
the proposals tests left "mesh-controller verb settings", and the conditions verb's test later in the same process
read that name instead of its own.
serve marks the process as handing over once it stops, and refuses every verb from then on; the served tests run it in
the test process, so the connection test's conditions verb was refused without its own process ever starting.
The served mark in the environment made every later test in the process read as the serving controller's: the
registration test was refused as "never through a verb". The fixture now restores the mark, the hand-act log's
connection, the keeper, the status and the event publishers serve sets.
The silent mid-tier plan test main changed stays deleted with the plans (ADR 0539); the SDK is pinned to the feat/r6
head that merged mesh-sdk's main, 748c564c, whose hand path tool is now mesh-hand-compose.
readNode sets ReadsModules, since release 6 composes only for node-engines that read a module per resource (issue 1145);
the failure says the bytes on its first line, the one the verdict keeps (issue 1921).
Read the declaration a served-key test checks from the composition, since the plan verb is gone (issue 1945)
mesh/delivery-group group feat/r6 merged: every member is merged
mesh/delivery delivering: 0 machine step(s) passed
mesh/check checking 9c38aed78905 on bdb8193456e1 | novox/mesh-controller#457 in group feat/r6
9c38aed789
Author
Member

Delivery novox/mesh-controller@9c38aed78905 — delivering since 2026-10-24T23:19:25Z

Delivery plan — builds mesh-controller → novox; no bus step

  • tier 0: mesh-controller
  • novox: receives mesh-controller

Group feat/r6: novox/hq@ba09497092, novox/mesh-catalog@d09cbf1523, novox/mesh-controller@9c38aed789, novox/mesh-delivery@3e863884fd, novox/mesh-host@81758b24a8, novox/mesh-sdk@748c564cdf

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

Transitions

  • 2026-10-24 22:17 (new) → proposed (announced): novox/mesh-controller#457's head announced
  • 2026-10-24 22:59 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-24 22:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-24 23:19 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-24 23:19 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@9c38aed78905` — **delivering** since 2026-10-24T23:19:25Z **Delivery plan** — builds mesh-controller → novox; no bus step - tier 0: mesh-controller - novox: receives mesh-controller **Group** `feat/r6`: novox/hq@ba09497092ec, novox/mesh-catalog@d09cbf152317, novox/mesh-controller@9c38aed78905, novox/mesh-delivery@3e863884fda8, novox/mesh-host@81758b24a8e4, novox/mesh-sdk@748c564cdf7c - composed together: pass — the checker's verdict at the members' heads (d2bc2f317716) **Transitions** - 2026-10-24 22:17 (new) → proposed (announced): novox/mesh-controller#457's head announced - 2026-10-24 22:59 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-24 22:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-24 23:19 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-24 23:19 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-tools merged commit ba4d156573 into main 2026-10-24 23:00:31 +00:00
mesh-tools deleted branch feat/r6 2026-10-24 23:00:32 +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-controller#457