Record the bases a build copies, keep them by the builds that stood on them, copy each image once (hq ADR 0257, issue 321) #144

Merged
mesh-admin merged 3 commits from feat/a-mirror-is-recorded into main 2026-10-08 14:02:48 +00:00
Contributor

hq ADR 0257 / issue 321 (novox/hq#207).

Why. A base copied from a public registry (<module>/on-<arg>) was named only in built_against, and nowhere when the build failed, so the sweep could never let one go: 374 unrecorded manifests in 27 repositories. Letting an index go deleted only the index, and its platform manifests kept every byte.

What.

  • builder: one repository per upstream image, upstream/<host>/<path>; a copy the module's former on- repository holds is copied from the store itself with blobs mounted (MirrorBase), upstream not asked. Result.Mirrored / BuildResult.mirrored is said in every outcome, failed builds too. Source fingerprint unchanged (reads digests).
  • inventory: migration 0081 artifact_mirrored (+ backfill of every on- reference built_against already names, by its earliest build); RecordBuild records copies; keep reason stood-on = a copy one of the five kept builds of a held module stood on; a definition never keeps a copy; a collected copy stays collected; KeptImages. Copies' repositories draw no build edge.
  • artifacts/sweep: LetGo of an index deletes the platform manifests no kept index of the repository names, platforms first, index last; a Spare that cannot be read keeps the index; the sweep stops before deleting if the kept images cannot be read.
  • new verb mirrors (dry run unless confirm + why, hand act): lists recorded copies; records copies no record names, only in a repository the copy step writes and only if the store holds them. Deletes nothing.
  • Cherry-picks d0e0519 (same change as 7df72ed on feat/plain-notifications): the forge tests failed on main since the catalogue's forge builds npm-registry.

Tests. builder (repository naming, mount from former repo with upstream gone, failed build says what it mirrored), inventory (failed-build copy eligible, stood-on keeps / definition does not, module base not a copy, person's record stands, migration backfill, no edge), artifacts (index with platforms, kept index spares, Gone, unreadable spare keeps), verb (composition, refusal, dry vs real record). merge-check.sh passes locally against a throwaway PostgreSQL.

Do not merge before novox/hq#207. No collection, no recording run: each is the operator's.

hq ADR 0257 / issue 321 (novox/hq#207). **Why.** A base copied from a public registry (`<module>/on-<arg>`) was named only in `built_against`, and nowhere when the build failed, so the sweep could never let one go: 374 unrecorded manifests in 27 repositories. Letting an index go deleted only the index, and its platform manifests kept every byte. **What.** - builder: one repository per upstream image, `upstream/<host>/<path>`; a copy the module's former `on-` repository holds is copied from the store itself with blobs mounted (`MirrorBase`), upstream not asked. `Result.Mirrored` / `BuildResult.mirrored` is said in every outcome, failed builds too. Source fingerprint unchanged (reads digests). - inventory: migration 0081 `artifact_mirrored` (+ backfill of every `on-` reference `built_against` already names, by its earliest build); `RecordBuild` records copies; keep reason `stood-on` = a copy one of the five kept builds of a held module stood on; a definition never keeps a copy; a collected copy stays collected; `KeptImages`. Copies' repositories draw no build edge. - artifacts/sweep: `LetGo` of an index deletes the platform manifests no kept index of the repository names, platforms first, index last; a `Spare` that cannot be read keeps the index; the sweep stops before deleting if the kept images cannot be read. - new verb `mirrors` (dry run unless `confirm` + `why`, hand act): lists recorded copies; records copies no record names, only in a repository the copy step writes and only if the store holds them. Deletes nothing. - Cherry-picks d0e0519 (same change as 7df72ed on feat/plain-notifications): the forge tests failed on main since the catalogue's forge builds npm-registry. **Tests.** builder (repository naming, mount from former repo with upstream gone, failed build says what it mirrored), inventory (failed-build copy eligible, stood-on keeps / definition does not, module base not a copy, person's record stands, migration backfill, no edge), artifacts (index with platforms, kept index spares, Gone, unreadable spare keeps), verb (composition, refusal, dry vs real record). `merge-check.sh` passes locally against a throwaway PostgreSQL. **Do not merge before novox/hq#207.** No collection, no recording run: each is the operator's.
Author
Contributor

Delivery novox/mesh-controller@c6e372896b10 — superseded since 2026-10-08T14:09:45Z

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

Machines

  • mesh-controller on novox: passed — healthy 3 times over 3m41s
  • mesh-controller on the rest running it: sent
  • build-agent on ace: judging — 0 healthy judging(s) so far

Transitions

  • 2026-10-08 13:47 (new) → proposed (announced): novox/mesh-controller#144's head announced
  • 2026-10-08 13:53 proposed → checked (checked): the verdict names this commit
  • 2026-10-08 13:53 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-08 14:03 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-08 14:03 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
  • 2026-10-08 14:09 delivering → superseded (superseded): a newer delivery to the same trunk took over its walk

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@c6e372896b10` — **superseded** since 2026-10-08T14:09:45Z **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 **Machines** - mesh-controller on novox: passed — healthy 3 times over 3m41s - mesh-controller on the rest running it: sent - build-agent on ace: judging — 0 healthy judging(s) so far **Transitions** - 2026-10-08 13:47 (new) → proposed (announced): novox/mesh-controller#144's head announced - 2026-10-08 13:53 proposed → checked (checked): the verdict names this commit - 2026-10-08 13:53 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-08 14:03 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-08 14:03 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 - 2026-10-08 14:09 delivering → superseded (superseded): a newer delivery to the same trunk took over its walk The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 56597490

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

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

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T11:31:31Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T11:31:31Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.036s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	174.956s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.024s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.030s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.116s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.055s
ok  	github.com/novox/mesh-controller/internal/broker	2.815s
ok  	github.com/novox/mesh-controller/internal/builder	2.613s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.828s
ok  	github.com/novox/mesh-controller/internal/conditions	2.374s
ok  	github.com/novox/mesh-controller/internal/envfile	1.032s
ok  	github.com/novox/mesh-controller/internal/facts	1.031s
ok  	github.com/novox/mesh-controller/internal/identity	5.045s
ok  	github.com/novox/mesh-controller/internal/inventory	86.747s
ok  	github.com/novox/mesh-controller/internal/lease	17.662s
ok  	github.com/novox/mesh-controller/internal/licences	4.579s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.011s
ok  	github.com/novox/mesh-controller/internal/link	46.965s
ok  	github.com/novox/mesh-controller/internal/lint	2.002s
ok  	github.com/novox/mesh-controller/internal/outward	1.037s
ok  	github.com/novox/mesh-controller/internal/overlay	1.019s
ok  	github.com/novox/mesh-controller/internal/secrets	1.451s
ok  	github.com/novox/mesh-controller/internal/store	3.365s
ok  	github.com/novox/mesh-controller/internal/testbus	1.204s
ok  	github.com/novox/mesh-controller/internal/token	1.022s
**Merge check** at `56597490` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on novox as `build-1791461528390342019` (`builds --log build-1791461528390342019`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T11:31:31Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T11:31:31Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.036s ok github.com/novox/mesh-controller/cmd/mesh-controller 174.956s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.024s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.030s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.023s ok github.com/novox/mesh-controller/examples/route-proxy 1.116s ok github.com/novox/mesh-controller/internal/artifacts 1.055s ok github.com/novox/mesh-controller/internal/broker 2.815s ok github.com/novox/mesh-controller/internal/builder 2.613s ok github.com/novox/mesh-controller/internal/catalogue 4.828s ok github.com/novox/mesh-controller/internal/conditions 2.374s ok github.com/novox/mesh-controller/internal/envfile 1.032s ok github.com/novox/mesh-controller/internal/facts 1.031s ok github.com/novox/mesh-controller/internal/identity 5.045s ok github.com/novox/mesh-controller/internal/inventory 86.747s ok github.com/novox/mesh-controller/internal/lease 17.662s ok github.com/novox/mesh-controller/internal/licences 4.579s ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s ok github.com/novox/mesh-controller/internal/link 46.965s ok github.com/novox/mesh-controller/internal/lint 2.002s ok github.com/novox/mesh-controller/internal/outward 1.037s ok github.com/novox/mesh-controller/internal/overlay 1.019s ok github.com/novox/mesh-controller/internal/secrets 1.451s ok github.com/novox/mesh-controller/internal/store 3.365s ok github.com/novox/mesh-controller/internal/testbus 1.204s ok github.com/novox/mesh-controller/internal/token 1.022s ```
jschoubben force-pushed feat/a-mirror-is-recorded from 565974901a to 80a928e4c1 2026-10-08 12:51:15 +00:00 Compare
Author
Contributor

Merge check at 80a928e4

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

Run by the build seat on g14 as build-1791463903934971450 (builds --log build-1791463903934971450).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T12:46:24Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T12:46:24Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.053s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	185.815s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.020s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.021s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.014s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.172s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.053s
ok  	github.com/novox/mesh-controller/internal/broker	2.567s
ok  	github.com/novox/mesh-controller/internal/builder	2.955s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.881s
ok  	github.com/novox/mesh-controller/internal/conditions	2.353s
ok  	github.com/novox/mesh-controller/internal/envfile	1.022s
ok  	github.com/novox/mesh-controller/internal/facts	1.029s
ok  	github.com/novox/mesh-controller/internal/identity	5.393s
ok  	github.com/novox/mesh-controller/internal/inventory	85.477s
ok  	github.com/novox/mesh-controller/internal/lease	17.619s
ok  	github.com/novox/mesh-controller/internal/licences	4.641s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.015s
ok  	github.com/novox/mesh-controller/internal/link	46.906s
ok  	github.com/novox/mesh-controller/internal/lint	2.257s
ok  	github.com/novox/mesh-controller/internal/outward	1.051s
ok  	github.com/novox/mesh-controller/internal/overlay	1.036s
ok  	github.com/novox/mesh-controller/internal/secrets	1.619s
ok  	github.com/novox/mesh-controller/internal/store	3.523s
ok  	github.com/novox/mesh-controller/internal/testbus	1.208s
ok  	github.com/novox/mesh-controller/internal/token	1.023s
**Merge check** at `80a928e4` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on g14 as `build-1791463903934971450` (`builds --log build-1791463903934971450`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T12:46:24Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T12:46:24Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.053s ok github.com/novox/mesh-controller/cmd/mesh-controller 185.815s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.020s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.021s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s ok github.com/novox/mesh-controller/examples/route-proxy 1.172s ok github.com/novox/mesh-controller/internal/artifacts 1.053s ok github.com/novox/mesh-controller/internal/broker 2.567s ok github.com/novox/mesh-controller/internal/builder 2.955s ok github.com/novox/mesh-controller/internal/catalogue 4.881s ok github.com/novox/mesh-controller/internal/conditions 2.353s ok github.com/novox/mesh-controller/internal/envfile 1.022s ok github.com/novox/mesh-controller/internal/facts 1.029s ok github.com/novox/mesh-controller/internal/identity 5.393s ok github.com/novox/mesh-controller/internal/inventory 85.477s ok github.com/novox/mesh-controller/internal/lease 17.619s ok github.com/novox/mesh-controller/internal/licences 4.641s ok github.com/novox/mesh-controller/internal/licences/adapters 1.015s ok github.com/novox/mesh-controller/internal/link 46.906s ok github.com/novox/mesh-controller/internal/lint 2.257s ok github.com/novox/mesh-controller/internal/outward 1.051s ok github.com/novox/mesh-controller/internal/overlay 1.036s ok github.com/novox/mesh-controller/internal/secrets 1.619s ok github.com/novox/mesh-controller/internal/store 3.523s ok github.com/novox/mesh-controller/internal/testbus 1.208s ok github.com/novox/mesh-controller/internal/token 1.023s ```
jschoubben force-pushed feat/a-mirror-is-recorded from 80a928e4c1 to 1cdd9df581 2026-10-08 13:34:24 +00:00 Compare
Author
Contributor

Merge check at 1cdd9df5

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

Run by the build seat on ace as build-1791466489229891166 (builds --log build-1791466489229891166).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T13:34:12Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T13:34:12Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.035s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	145.343s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.035s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.061s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.044s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.143s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.073s
ok  	github.com/novox/mesh-controller/internal/broker	2.461s
ok  	github.com/novox/mesh-controller/internal/builder	1.826s
ok  	github.com/novox/mesh-controller/internal/catalogue	3.999s
ok  	github.com/novox/mesh-controller/internal/conditions	2.185s
ok  	github.com/novox/mesh-controller/internal/envfile	1.041s
ok  	github.com/novox/mesh-controller/internal/facts	1.061s
ok  	github.com/novox/mesh-controller/internal/identity	4.042s
ok  	github.com/novox/mesh-controller/internal/inventory	68.931s
ok  	github.com/novox/mesh-controller/internal/lease	17.679s
ok  	github.com/novox/mesh-controller/internal/licences	3.683s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.057s
ok  	github.com/novox/mesh-controller/internal/link	43.692s
ok  	github.com/novox/mesh-controller/internal/lint	1.894s
ok  	github.com/novox/mesh-controller/internal/outward	1.071s
ok  	github.com/novox/mesh-controller/internal/overlay	1.058s
ok  	github.com/novox/mesh-controller/internal/secrets	1.436s
ok  	github.com/novox/mesh-controller/internal/store	3.257s
ok  	github.com/novox/mesh-controller/internal/testbus	1.169s
ok  	github.com/novox/mesh-controller/internal/token	1.017s
**Merge check** at `1cdd9df5` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on ace as `build-1791466489229891166` (`builds --log build-1791466489229891166`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T13:34:12Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T13:34:12Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.035s ok github.com/novox/mesh-controller/cmd/mesh-controller 145.343s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.035s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.061s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.044s ok github.com/novox/mesh-controller/examples/route-proxy 1.143s ok github.com/novox/mesh-controller/internal/artifacts 1.073s ok github.com/novox/mesh-controller/internal/broker 2.461s ok github.com/novox/mesh-controller/internal/builder 1.826s ok github.com/novox/mesh-controller/internal/catalogue 3.999s ok github.com/novox/mesh-controller/internal/conditions 2.185s ok github.com/novox/mesh-controller/internal/envfile 1.041s ok github.com/novox/mesh-controller/internal/facts 1.061s ok github.com/novox/mesh-controller/internal/identity 4.042s ok github.com/novox/mesh-controller/internal/inventory 68.931s ok github.com/novox/mesh-controller/internal/lease 17.679s ok github.com/novox/mesh-controller/internal/licences 3.683s ok github.com/novox/mesh-controller/internal/licences/adapters 1.057s ok github.com/novox/mesh-controller/internal/link 43.692s ok github.com/novox/mesh-controller/internal/lint 1.894s ok github.com/novox/mesh-controller/internal/outward 1.071s ok github.com/novox/mesh-controller/internal/overlay 1.058s ok github.com/novox/mesh-controller/internal/secrets 1.436s ok github.com/novox/mesh-controller/internal/store 3.257s ok github.com/novox/mesh-controller/internal/testbus 1.169s ok github.com/novox/mesh-controller/internal/token 1.017s ```
jschoubben added 3 commits 2026-10-08 13:47:45 +00:00
A copied base was named only in what a build stood on, and nowhere when the build failed,
so the store's sweep could never let one go (hq issue 321). One repository per upstream
image stops each module asking the public registry for the same image again, and letting
an index go now takes its own platform manifests, which otherwise kept every byte. A
person can record the copies no record names through the new mirrors verb (hq ADR 0257).

The forge test fix is the same commit as on feat/plain-notifications: main fails without it.
An unrecorded index or a copy in progress can name a platform the records do not see, so
only a person's collect, after its dry run, takes an index's platforms, and only once every
kept index of each repository it touches was read. A copy missing a platform is copied
again, and a copy a build holds again is no longer recorded as collected (review of #144).
Leave an eligible index for a confirmed collect instead of letting it go alone
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery superseded: a newer delivery to the same trunk took over its walk
c6e372896b
Let go of alone after a build, an index's platforms stayed for ever under a record that
said collected, so no later collect could reach them (re-review of #144).
jschoubben force-pushed feat/a-mirror-is-recorded from 1cdd9df581 to c6e372896b 2026-10-08 13:47:45 +00:00 Compare
Author
Contributor

Merge check at c6e37289

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

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

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T13:43:12Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T13:43:12Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.052s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	203.450s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.019s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.024s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.013s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.113s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.047s
ok  	github.com/novox/mesh-controller/internal/broker	2.653s
ok  	github.com/novox/mesh-controller/internal/builder	2.464s
ok  	github.com/novox/mesh-controller/internal/catalogue	5.022s
ok  	github.com/novox/mesh-controller/internal/conditions	2.172s
ok  	github.com/novox/mesh-controller/internal/envfile	1.028s
ok  	github.com/novox/mesh-controller/internal/facts	1.024s
ok  	github.com/novox/mesh-controller/internal/identity	4.880s
ok  	github.com/novox/mesh-controller/internal/inventory	97.853s
ok  	github.com/novox/mesh-controller/internal/lease	17.682s
ok  	github.com/novox/mesh-controller/internal/licences	4.418s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.014s
ok  	github.com/novox/mesh-controller/internal/link	51.050s
ok  	github.com/novox/mesh-controller/internal/lint	2.134s
ok  	github.com/novox/mesh-controller/internal/outward	1.038s
ok  	github.com/novox/mesh-controller/internal/overlay	1.028s
ok  	github.com/novox/mesh-controller/internal/secrets	1.493s
ok  	github.com/novox/mesh-controller/internal/store	3.442s
ok  	github.com/novox/mesh-controller/internal/testbus	1.184s
ok  	github.com/novox/mesh-controller/internal/token	1.015s
**Merge check** at `c6e37289` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on novox as `build-1791467274379131301` (`builds --log build-1791467274379131301`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T13:43:12Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T13:43:12Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.052s ok github.com/novox/mesh-controller/cmd/mesh-controller 203.450s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.019s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.024s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s ok github.com/novox/mesh-controller/examples/route-proxy 1.113s ok github.com/novox/mesh-controller/internal/artifacts 1.047s ok github.com/novox/mesh-controller/internal/broker 2.653s ok github.com/novox/mesh-controller/internal/builder 2.464s ok github.com/novox/mesh-controller/internal/catalogue 5.022s ok github.com/novox/mesh-controller/internal/conditions 2.172s ok github.com/novox/mesh-controller/internal/envfile 1.028s ok github.com/novox/mesh-controller/internal/facts 1.024s ok github.com/novox/mesh-controller/internal/identity 4.880s ok github.com/novox/mesh-controller/internal/inventory 97.853s ok github.com/novox/mesh-controller/internal/lease 17.682s ok github.com/novox/mesh-controller/internal/licences 4.418s ok github.com/novox/mesh-controller/internal/licences/adapters 1.014s ok github.com/novox/mesh-controller/internal/link 51.050s ok github.com/novox/mesh-controller/internal/lint 2.134s ok github.com/novox/mesh-controller/internal/outward 1.038s ok github.com/novox/mesh-controller/internal/overlay 1.028s ok github.com/novox/mesh-controller/internal/secrets 1.493s ok github.com/novox/mesh-controller/internal/store 3.442s ok github.com/novox/mesh-controller/internal/testbus 1.184s ok github.com/novox/mesh-controller/internal/token 1.015s ```
mesh-admin merged commit 056414bc06 into main 2026-10-08 14:02:48 +00:00
mesh-admin deleted branch feat/a-mirror-is-recorded 2026-10-08 14:02:48 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#144