The private network writes nothing into the runtime's file; generated resources are collision-checked (hq ADR 0222, issue 190 — 3 of 3) #63

Merged
mesh-admin merged 1 commits from fix/190-the-overlay-writes-no-runtime-file into main 2026-10-05 20:42:32 +00:00
Contributor

Stacked on #62 (this branch contains its commit; review the last commit The private network writes nothing into the runtime's file).

  • Overlay: TrustRegistry/registry removed; registry-trust (daemon.json, into json) and registry-trust-reload (docker.service) are no longer generated. network.go no longer looks up the store for the overlay. The "refused when the lookup fails" property stays: renderingFor already fails on an artifactStoreAddress error.
  • Issue 190 step 5: Resolution.generatedHere asks each computed module's generator once per composition and runs checkResources over the catalogue modules plus the generated set, so a generated resource declaring a module's path/unit/name/package is refused by name. The compose loop uses the same answers (the generator is still asked once).
  • Tests: overlay TestTheNetworkWritesNothingOfTheRuntimes; catalogue TestAGeneratedResourceCollidingWithAModulesIsRefused, TestAGeneratedResourceBesideAModulesOwnIsComposed, TestTheRuntimesModuleTrustsTheMeshsRegistry (composes mesh-catalog's real docker manifest beside it).

Merge order (issue 190): 1. #62 → 2. mesh-catalog #72 → 3. this PR, and mesh-host #26 deployed before this one. Merged before mesh-catalog #72, machines would lose the registry trust; TestTheRuntimesModuleTrustsTheMeshsRegistry fails against catalogue main for exactly that reason, and passes with #72 as the sibling.

gofmt/vet clean; go test ./... passes with mesh-catalog #72 as sibling, except internal/broker TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (fails on main too).

**Stacked on #62** (this branch contains its commit; review the last commit `The private network writes nothing into the runtime's file`). - Overlay: `TrustRegistry`/`registry` removed; `registry-trust` (daemon.json, into json) and `registry-trust-reload` (docker.service) are no longer generated. `network.go` no longer looks up the store for the overlay. The "refused when the lookup fails" property stays: `renderingFor` already fails on an `artifactStoreAddress` error. - Issue 190 step 5: `Resolution.generatedHere` asks each computed module's generator once per composition and runs `checkResources` over the catalogue modules plus the generated set, so a generated resource declaring a module's path/unit/name/package is refused by name. The compose loop uses the same answers (the generator is still asked once). - Tests: `overlay TestTheNetworkWritesNothingOfTheRuntimes`; `catalogue TestAGeneratedResourceCollidingWithAModulesIsRefused`, `TestAGeneratedResourceBesideAModulesOwnIsComposed`, `TestTheRuntimesModuleTrustsTheMeshsRegistry` (composes mesh-catalog's real docker manifest beside it). **Merge order (issue 190):** 1. #62 → 2. mesh-catalog #72 → 3. **this PR**, and mesh-host #26 deployed before this one. Merged before mesh-catalog #72, machines would lose the registry trust; `TestTheRuntimesModuleTrustsTheMeshsRegistry` fails against catalogue main for exactly that reason, and passes with #72 as the sibling. gofmt/vet clean; `go test ./...` passes with mesh-catalog #72 as sibling, except `internal/broker TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose` (fails on main too).
mesh-admin added 2 commits 2026-10-05 20:22:57 +00:00
The container runtime's module must state the mesh's registry to the runtime it owns, so the
controller can stop writing that into the runtime's file (hq issue 190). ${seat:<seat>:reach}
answers host:port without a binding: nothing required, granted or minted, and the address is
one the mesh already composes into every reference it built. Only mesh-artifact-store is
answered; another seat is refused by name. Unanswered in a file written into as JSON, the empty
member is dropped, so the runtime is never told to trust "".
daemon.json and docker.service belong to the docker module, which holds node-container-runtime
and now states the registry itself through ${seat:mesh-artifact-store:reach} (hq ADR 0222). The
overlay stops generating registry-trust and registry-trust-reload. A generated resource is now
held to the collision check every module is, so a second writer cannot come back through
computed code; resolution never saw what a generator declares.
mesh-admin merged commit c34b937dd3 into main 2026-10-05 20:42:32 +00:00
mesh-admin deleted branch fix/190-the-overlay-writes-no-runtime-file 2026-10-05 20:42:32 +00:00
Author
Contributor

Delivery novox/mesh-controller@c34b937dd3d8 — held since 2026-10-06T23:05:28Z

Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • tier 2: route-proxy
  • ace: receives build-agent, route-proxy
  • g14: receives build-agent
  • novox: receives mesh-controller, build-agent, route-proxy
  • shanks: receives build-agent
  • build-agent keeps data (ADR 0233): what it holds is backed up before it moves
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#63 merged; its head was not heard by this owner, so it is made from the forge's word
  • 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@c34b937dd3d8` — **held** since 2026-10-06T23:05:28Z Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on. **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#63 merged; its head was not heard by this owner, so it is made from the forge's word - 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
This repo is archived. You cannot comment on pull requests.
No Reviewers
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#63