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).
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).
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.
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`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Stacked on #62 (this branch contains its commit; review the last commit
The private network writes nothing into the runtime's file).TrustRegistry/registryremoved;registry-trust(daemon.json, into json) andregistry-trust-reload(docker.service) are no longer generated.network.gono longer looks up the store for the overlay. The "refused when the lookup fails" property stays:renderingForalready fails on anartifactStoreAddresserror.Resolution.generatedHereasks each computed module's generator once per composition and runscheckResourcesover 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).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;
TestTheRuntimesModuleTrustsTheMeshsRegistryfails 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, exceptinternal/broker TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose(fails on main too).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.Delivery
novox/mesh-controller@c34b937dd3d8— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.mesh-tools referenced this pull request2026-10-21 15:05:53 +00:00