Feature 57 (config and provisioning): release mesh-host #115

Closed
mesh-tools wants to merge 15 commits from feat/57-config-and-provisioning into main
Member

Feature 57's release of mesh-host (the node-engine): the release branch feat/57-config-and-provisioning (reviewed and merged there: #114) into main. Delivery group 57 bundle A with mesh-sdk, mesh-controller and hq.

Feature 57's release of mesh-host (the node-engine): the release branch feat/57-config-and-provisioning (reviewed and merged there: #114) into main. Delivery group 57 bundle A with mesh-sdk, mesh-controller and hq.
mesh-tools added 15 commits 2026-10-16 08:16:57 +00:00
So the packages of hq design 57 meet here, reviewed one by one, and reach main as one delivery group.
Say who owns a placed file at runtime, and which files the provisioner fills
mesh/merge-gate head 1cc588ebc060 merged into trunk 1203f96a24c8 — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 1cc588ebc060 merged into trunk 1203f96a24c8 — pass: its merge-check.sh passed
mesh/delivery delivered
1cc588ebc0
The provisioner (ADR 0349 §5) needs each file it places to say whether it is
owned, a seed or managed, and the node-engine needs to know which paths it
fills. The words map onto today's forms (drift written back, create-once,
into), so no write changes; the reader accepts the fields and states
OwnershipContract before any controller sends them. Issue 667.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Let genesis's controller write its record mirrors
mesh/merge-gate head c89206225165 merged into trunk 6b54fed706f0 — pass: the change touches no module of the mesh's graph
mesh/repo-check head c89206225165 merged into trunk 6b54fed706f0 — pass: its merge-check.sh passed
mesh/delivery delivered
c892062251
The controller now keeps the assignments and each registered module's declared
config on the bus (hq issue 652, design 57 F3), so its composed grant gains the
two buckets and their two events. The installer's first user list must equal
that composition, or the controller is refused at genesis; mesh-controller's
genesis template test holds the two to each other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The local write of a filled file (ADR 0349 §4) accepts only the provisioner client's account, which the declaration names; the reader takes provisioner_account before any controller sends it (contract 10). The apply's record and its rule for what moved become helpers the write uses too. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The provisioner's client (ADR 0349 §4) fills a module's templates and needs the node-engine to write them: it must not hold the right to write the machine's files itself. A second local socket accepts a write only from the account the declaration names as the provisioner client's (SO_PEERCRED, same namespaces), only for a clean path the declaration names as filled, under the apply's own locks, and writes it through the apply as the declared file would be, firing restart-on, reload-on and container reads. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A filled file is the declared file with the client's content: applied through applyFile, applyInto or applyBlock by who owns it at runtime, with the apply's guards, Keep and record, then restart-on, reload-on and container reads applied as an apply does. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Serve the local write of a filled file on its own socket
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate head 499a687149be merged into trunk 6b54fed706f0 — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 499a687149be merged into trunk 6b54fed706f0 — pass: its merge-check.sh passed
499a687149
A second unix socket beside mesh-cli's: the kernel's word on the asking account (SO_PEERCRED, same namespaces), that account judged against the declaration before its request is read, the path judged clean, absolute and filled, and the write done under the apply's lock. The journal has the path and digest, never the content. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hold a library's containers through the write verb, as a full apply does
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate head 76dc93c421bf merged into trunk 6b54fed706f0 — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 76dc93c421bf merged into trunk 6b54fed706f0 — pass: its merge-check.sh passed
76dc93c421
Review 11959 of mesh-host#111: a write through the verb recreated a container that reads the filled file over a library whose disk was missing (ADR 0328 §9). Also refuses a filled path two resources declare, with a test. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Judge a caller before it holds the socket, and keep accepting after a failed accept
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate out of date: judged against trunk 6b54fed706f0, the trunk is now c18d5a8ff38d; judged again on a recheck or when it is merged
mesh/repo-check out of date: judged against trunk 6b54fed706f0, the trunk is now c18d5a8ff38d; judged again on a recheck or when it is merged
0c17c76493
Review 11959 of mesh-host#111: any account could hold the four slots for a second each and starve the provisioner's client, and one failed accept ended the socket until the engine restarted. A caller is judged from the kernel's word before it holds a slot and, refused, is answered and closed at once; busy refusals that wait are bounded as mesh-cli's are; a failed accept is said, backed off and retried. The request refuses unknown fields, and the socket's directory is given its mode. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Say every refusal kind at once and never lose a count; bound the waiting and the busy per socket
mesh/merge-gate head 2767278228bc merged into trunk c18d5a8ff38d — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 2767278228bc merged into trunk c18d5a8ff38d — pass: its merge-check.sh passed
mesh/delivery delivered
2767278228
Review 12004 of mesh-host#111: refusals counted after a said one reached the journal only if the same account was refused again a minute later, and a refusal of another kind hid behind it. The first of each (account, kind) is said at once, and what is counted is said on a timer and when the socket stops. Connections waiting to be judged are bounded below the open-file limit, the busy refusals belong to one Serve, and the tests' ask has a deadline. Issue 668.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Land feature 57's node-engine work on its release branch
mesh/merge-gate head 5a7ec3775b98 merged into trunk 53fd32618916 beside mesh-controller#346@c711e622 — pass: builds mesh-host → ace, g14, novox, shanks; no…
mesh/repo-check head 5a7ec3775b98 merged into trunk 53fd32618916 beside mesh-controller#346@c711e622 — pass: [release feat/57-config-and-provisioning, judg…
mesh/delivery stopped: its walk plan-1792114347281764422 was stopped by a person (mesh-controller): mesh-host#114 merged into the release branch feat/57-…
mesh/delivery-group group 57-config-and-provisioning stopped: a member was stopped
5a7ec3775b
The node-engine renders the feature's templates, collections and moved
providers' files, on the SDK the feature's modules build on (feature 57,
config and provisioning).
Merge pull request 'Feature 57 (config and provisioning): the node-engine's part, into its release branch' (#114) from 57-config-and-provisioning into feat/57-config-and-provisioning
mesh/merge-gate head b546d4316c3b merged into trunk 49c9002c04d3 — fail: builds mesh-host → ace, g14, novox, shanks; no bus step; head b546d4316c3b does no…
mesh/repo-check head b546d4316c3b merged into trunk 49c9002c04d3 — fail: head b546d4316c3b does not merge cleanly into trunk 49c9002c04d3: in conflict exam…
mesh/delivery-group group feat/57-config-and-provisioning rejected: a member's own check failed
mesh/delivery stopped: the pull request closed unmerged
b546d4316c
Author
Member

Merge check at b546d431
Judged: head b546d4316c3b merged into trunk 49c9002c04d3

  • mesh/merge-gate: FAIL — head b546d4316c does not merge cleanly into trunk 49c9002c04: in conflict examples/foundation-first-node.lock (modules: mesh-host)
  • mesh/repo-check: FAIL — head b546d4316c does not merge cleanly into trunk 49c9002c04: in conflict examples/foundation-first-node.lock

Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-host
  • ace: receives mesh-host
  • g14: receives mesh-host
  • novox: receives mesh-host
  • shanks: receives mesh-host
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
  • read by no module's build: RELEASE-57.md, cmd/mesh-host/filling_test.go, cmd/mesh-host/movesecret_test.go, cmd/mesh-host/nodekey_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/foundation-first-node.lock, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/ownership_test.go, internal/apply/vault_sealed_test.go, internal/declaration/ownership_test.go, internal/declaration/provisioner_test.go, internal/filling/filling.go, internal/filling/filling_test.go, internal/link/movesecret_test.go, internal/liveness/liveness_test.go, internal/units/units_test.go, validate/validate_test.go

Run by the build seat on novox as build-1792138621792444111 (builds --log build-1792138621792444111).

head b546d4316c3b does not merge cleanly into trunk 49c9002c04d3: in conflict examples/foundation-first-node.lock
**Merge check** at `b546d431` Judged: head `b546d4316c3b` merged into trunk `49c9002c04d3` - `mesh/merge-gate`: **FAIL** — head b546d4316c3b does not merge cleanly into trunk 49c9002c04d3: in conflict examples/foundation-first-node.lock (modules: mesh-host) - `mesh/repo-check`: **FAIL** — head b546d4316c3b does not merge cleanly into trunk 49c9002c04d3: in conflict examples/foundation-first-node.lock **Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step - tier 0: mesh-host - ace: receives mesh-host - g14: receives mesh-host - novox: receives mesh-host - shanks: receives mesh-host - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine - read by no module's build: RELEASE-57.md, cmd/mesh-host/filling_test.go, cmd/mesh-host/movesecret_test.go, cmd/mesh-host/nodekey_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/foundation-first-node.lock, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/ownership_test.go, internal/apply/vault_sealed_test.go, internal/declaration/ownership_test.go, internal/declaration/provisioner_test.go, internal/filling/filling.go, internal/filling/filling_test.go, internal/link/movesecret_test.go, internal/liveness/liveness_test.go, internal/units/units_test.go, validate/validate_test.go Run by the build seat on novox as `build-1792138621792444111` (`builds --log build-1792138621792444111`). ``` head b546d4316c3b does not merge cleanly into trunk 49c9002c04d3: in conflict examples/foundation-first-node.lock ```
Author
Member

Delivery novox/mesh-host@b546d4316c3b — stopped since 2026-10-16T08:27:26Z

Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-host
  • ace: receives mesh-host
  • g14: receives mesh-host
  • novox: receives mesh-host
  • shanks: receives mesh-host
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine

Group feat/57-config-and-provisioning, in order: novox/hq@110bb7d1d7 → novox/mesh-controller@6a6628a769 → novox/mesh-host@b546d4316c → novox/mesh-sdk@67ee945af5

Transitions

  • 2026-10-16 08:17 (new) → proposed (announced): novox/mesh-host#115's head announced
  • 2026-10-16 08:17 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-16 08:17 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
  • 2026-10-16 08:27 rejected → stopped (closed): the pull request closed unmerged

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@b546d4316c3b` — **stopped** since 2026-10-16T08:27:26Z **Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step - tier 0: mesh-host - ace: receives mesh-host - g14: receives mesh-host - novox: receives mesh-host - shanks: receives mesh-host - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine **Group** `feat/57-config-and-provisioning`, in order: novox/hq@110bb7d1d7e1 → novox/mesh-controller@6a6628a76961 → novox/mesh-host@b546d4316c3b → novox/mesh-sdk@67ee945af5d1 - novox/mesh-controller@6a6628a76961 before novox/mesh-host@b546d4316c3b: built by, over engine before controller - novox/mesh-controller@6a6628a76961 before novox/mesh-sdk@67ee945af5d1: built by **Transitions** - 2026-10-16 08:17 (new) → proposed (announced): novox/mesh-host#115's head announced - 2026-10-16 08:17 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-16 08:17 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed - 2026-10-16 08:27 rejected → stopped (closed): the pull request closed unmerged The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Member

Closed: it did not merge cleanly into main (examples/foundation-first-node.lock). Feature 57's release goes from branch release/57-config-and-provisioning: the release branch merged with main (tree db310999, the same as the release branch's, whose lock line already held main's one addition), as one commit on top of main.

Closed: it did not merge cleanly into main (examples/foundation-first-node.lock). Feature 57's release goes from branch release/57-config-and-provisioning: the release branch merged with main (tree db310999, the same as the release branch's, whose lock line already held main's one addition), as one commit on top of main.
mesh-tools closed this pull request 2026-10-16 08:24:53 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
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#115