Design 47's last milestones as one release: the contracts for health, control records, provisioning and history leaving the controller (issues 774, 1126, 1952, 1953, 1954, 1955, 1289) #133

Merged
mesh-tools merged 53 commits from feat/774-l3-reland into main 2026-10-30 11:01:40 +00:00
Member

Delivery 2 of design 47's single release (delivery group feat/774-l3-reland: mesh-sdk, mesh-delivery, mesh-catalog, mesh-host, mesh-controller, mesh-tools, hq). Records: ADR 0564 (v47), 0565 (v14), 0570 (v18), 0571 (v35), 0572 (v9).

This member holds the contracts: held modules serve their tools from what runs (L3 re-land, issue 1126); health seats, findings, per-key TTL (L4); hand-acts, mesh-wants, config candidates (L5); provisions and plans on mesh-provisioner, credential forms incl. "none", ErrNotReady, rule 8 (L6); the builder's build-log, mesh-artifact-sweep, seat holders, disk readings, memberships, the node health report (L7); a change's own failing test ends the level (R4c, issue 1289). The release's new manifest words are read by the running parts since delivery 1 (#132).

Quick vs thorough: thorough throughout (each contract lives here once, held to by catalog checks and grant rows); bent rules and drops are listed in the release plan.

Reviewed-by: rev-47@shanks at 2da0de75c3

Delivery 2 of design 47's single release (delivery group feat/774-l3-reland: mesh-sdk, mesh-delivery, mesh-catalog, mesh-host, mesh-controller, mesh-tools, hq). Records: ADR 0564 (v47), 0565 (v14), 0570 (v18), 0571 (v35), 0572 (v9). This member holds the contracts: held modules serve their tools from what runs (L3 re-land, issue 1126); health seats, findings, per-key TTL (L4); hand-acts, mesh-wants, config candidates (L5); provisions and plans on mesh-provisioner, credential forms incl. "none", ErrNotReady, rule 8 (L6); the builder's build-log, mesh-artifact-sweep, seat holders, disk readings, memberships, the node health report (L7); a change's own failing test ends the level (R4c, issue 1289). The release's new manifest words are read by the running parts since delivery 1 (#132). Quick vs thorough: thorough throughout (each contract lives here once, held to by catalog checks and grant rows); bent rules and drops are listed in the release plan. Reviewed-by: rev-47@shanks at 2da0de75c3f0087cff9c2f5ef789ca6dc3c59045
mesh-tools added 53 commits 2026-10-30 00:21:31 +00:00
After the take-over of placement on 2026-10-29, shanks's runtime stopped serving the folded systemd-resolved (the
node-resolver seat's verbs answer "nothing serves") and novox's the folded nats. Neither has a want: each runs inside
its node's own composition at a build of the old form (Scope.InOwn), and is composed as Carried of the indexer's
manifest. That manifest is the catalogue's, which no build resolved, so it has no bundles (catalogue/build.go: Bundles
are set only by a build's resolution), and the runtime's MESH_TOOL_MODULES and MESH_TOOL_ENV are made from bundles
(catalogue/runtime.go). The controller composed them from the resolved manifest its store kept.

The kind: a module composed as what runs of it (Stub, Carried: held, or folded at an old build) contributes to the
others from its manifest, not from what runs. For a held module with a new build it is the other way round: its new
bundles are served, which were never delivered.

- The quick fix: read the old-form build's resolved manifest for a folded module. One instance; a held module still
  hands its new bundles.
- The thorough fix, chosen: compose.ToolsRunning reads what the node's runtime serves as it runs (its process's
  MESH_TOOL_MODULES and MESH_TOOL_ENV, each bundle's archive), frombus gives it as Node.RunsTools, and every stubbed
  module of the machine's runtime (held or carried) contributes those bundles, whatever its manifest says.

Tests: two rows (folded, held) added to TestCompositionsAreTheDeclarationSplitByModule; no new test function.
novox's mongodb and mssql asked a yes for moving their data on a toolchain move: the running side, read back from the
kept declaration, carries no data flag, and judge.go returned moves-data on the flag before it compared the data
directories and files, so a flag mismatch both raised a false ask and hid a real move. Now moves-data only when a
data item (a directory or file within the data places, or a process of a module with data) changes; a flag-only
difference is neither, with a WARNING in its words. One row changed and one added in TestJudgeMove.
rev-held2: ToolsRunning took a carried module's bundles from the runtime's MESH_TOOL_MODULES alone, and shanks had
already applied the drop of systemd-resolved, so its runs stayed empty and the drop permanent. Now every bundle
archive that runs at its module's BundlePath is a running bundle; one the runtime loads nothing of takes its loads and
words from the module's build (its built bundles, else its build's artifacts, by catalogue.BundleLoads, the rule a
build's resolution keeps, now one function). The runtime process and each archive are matched by their owning module
too, not only by id and path. A row added: the runtime already dropped it.
Quick fix chosen (in askrun.go, the one place every build module's check ask runs): own-test packages already ran first, but the rest ran after their failure (issue 1921). 1921 still holds past them.
NetworkPart.Targets: the hub's machine for "hub", the machine whose tunnel address is each resolver's; empty where the
part is the machine's own. Filled by the node-engine from its tunnel's peers. Test: a row in
TestTheControlRecordsReadTheirWritersValues, read back byte-equal.
NodeHealth.Root: each such account's verdict (healthy, unhealthy with its way to root, unknown while the setuid search
runs), the module and resource declaring it. NodeHealth.Contract: the engine's statement contract, so a reader tells an
engine older than the judging. Test: a row in TestTheControlRecordsReadTheirWritersValues, read back byte-equal.
Merge main's parse-only new words into the release, which supersedes them with its full implementation (issue 774)
mesh/check being carried to 2da0de75c3f0 on 044ead7db83e | from mesh-catalog 12c2574c9d54 | novox/mesh-sdk#133 in group feat/774-l3-reland
mesh/delivery merged: source.main moved to novox/mesh-sdk@2b1e148bf58e
mesh/delivery-group group feat/774-l3-reland merged: every member is merged
2da0de75c3
Author
Member

Delivery novox/mesh-sdk@2da0de75c3f0 — merged since 2026-10-30T11:01:43Z

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

Group feat/774-l3-reland: novox/hq@0c450cad25, novox/mesh-catalog@f3a57dcc56, novox/mesh-controller@8b32e04e2f, novox/mesh-delivery@8edc83950c, novox/mesh-host@015334020a, novox/mesh-sdk@2da0de75c3, novox/mesh-tools@250aa73a56

Transitions

  • 2026-10-30 00:21 (new) → proposed (announced): novox/mesh-sdk#133's head announced
  • 2026-10-30 00:21 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-30 11:01 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-sdk@2da0de75c3f0` — **merged** since 2026-10-30T11:01:43Z **Source** — source.main moved to novox/mesh-sdk@2b1e148bf58e. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feat/774-l3-reland`: novox/hq@0c450cad258e, novox/mesh-catalog@f3a57dcc56fb, novox/mesh-controller@8b32e04e2f8b, novox/mesh-delivery@8edc83950cea, novox/mesh-host@015334020ad2, novox/mesh-sdk@2da0de75c3f0, novox/mesh-tools@250aa73a5631 **Transitions** - 2026-10-30 00:21 (new) → proposed (announced): novox/mesh-sdk#133's head announced - 2026-10-30 00:21 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-30 11:01 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`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Author
Member

mesh-delivery: not merged. The merge of this pull request into main at 2da0de75c3 was declined: the operator, via telegram (user id verified), chose Decline. A new head asks the operator again.

mesh-delivery: **not merged.** The merge of this pull request into main at 2da0de75c3f0087cff9c2f5ef789ca6dc3c59045 was declined: the operator, via telegram (user id verified), chose Decline. A new head asks the operator again.
mesh-tools merged commit 2b1e148bf5 into main 2026-10-30 11:01:40 +00:00
mesh-tools deleted branch feat/774-l3-reland 2026-10-30 11:01:41 +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-sdk#133