The facts snapshot promises no address. Every module's repository, its reads, and every sources entry still carried the clone URL, including the forge's private host and port. They are now kept as owner/repository (facts.RepositoryName, which handles http, ssh and scp-like forms).
Nothing the gate reads is lost: sameRepository matches by owner/name suffix. I checked this on the live facts with mesh-controller#104's controller. The facts were rewritten the same way and judged against a mesh-host change: the verdict and reach were identical (4 of 4 compose; rebuilds mesh-host, 1 tier).
This PR does not fix the rest of issue 288. Owners (one is a person's forge login), whole manifests (which name machines and domains) and a login in a settings value need a design answer, because a check reads them as they are.
Tests: TestARepositoryIsNamedWithoutTheForge; the facts, gate, check and plan tests pass.
novox/hq issue 288.
The facts snapshot promises no address. Every module's `repository`, its `reads`, and every `sources` entry still carried the clone URL, including the forge's private host and port. They are now kept as `owner/repository` (`facts.RepositoryName`, which handles http, ssh and scp-like forms).
Nothing the gate reads is lost: `sameRepository` matches by owner/name suffix. I checked this on the live facts with mesh-controller#104's controller. The facts were rewritten the same way and judged against a mesh-host change: the verdict and reach were identical (4 of 4 compose; rebuilds mesh-host, 1 tier).
This PR does not fix the rest of issue 288. Owners (one is a person's forge login), whole manifests (which name machines and domains) and a login in a settings value need a design answer, because a check reads them as they are.
Tests: `TestARepositoryIsNamedWithoutTheForge`; the facts, gate, check and plan tests pass.
novox/hq issue 288.
mesh/merge-gate error: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; the check could not run: a throwaway postgr…
mesh/repo-check error: the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198…
The snapshot promises no address, and every module's repository, reads and sources carried the URL the
mesh clones from. A check matches repositories by owner and name, so nothing it reads is lost (novox/hq
issue 288).
Deliverynovox/mesh-controller@ec3769a8a669 — stopped since 2026-10-08T23:32:59Z
Covered: covered after its stop: a later walk that contains it was delivered: plan-1791658180097457523 (novox/mesh-controller at a2a671ad into main, done, contains its merge 099c176f)
Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
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-07 00:18 (new) → proposed (announced): novox/mesh-controller#105's head announced
2026-10-07 00:26 proposed → checked (checked): the verdict names this commit
2026-10-07 00:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-07 00:37 ready → held (hold): something holds it for a person: its group's composed check did not pass for the heads that merged, or it merged and no walk was opened for it
2026-10-08 23:32 held → stopped (stop): covered: its merge 099c176fa9 is contained in cec797e996 which is delivered (walk plan-1791499975016484055); closed on the operator's word 2026-10-09; the held state came from no walk being opened for it — see hq issue to follow
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@ec3769a8a669` — **stopped** since 2026-10-08T23:32:59Z
**Covered**: covered after its stop: a later walk that contains it was delivered: plan-1791658180097457523 (novox/mesh-controller at a2a671ad into main, done, contains its merge 099c176f)
**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-07 00:18 (new) → proposed (announced): novox/mesh-controller#105's head announced
- 2026-10-07 00:26 proposed → checked (checked): the verdict names this commit
- 2026-10-07 00:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-07 00:37 ready → held (hold): something holds it for a person: its group's composed check did not pass for the heads that merged, or it merged and no walk was opened for it
- 2026-10-08 23:32 held → stopped (stop): covered: its merge 099c176fa9a1 is contained in cec797e996b2 which is delivered (walk plan-1791499975016484055); closed on the operator's word 2026-10-09; the held state came from no walk being opened for it — see hq issue to follow
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/merge-gate: ERROR — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125 (modules: build-agent, mesh-controller, route-proxy)
mesh/repo-check: ERROR — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125
Change plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
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-1791331512096605198 (builds --log build-1791331512096605198).
**Merge check** at `3d7ccc8a`
- `mesh/merge-gate`: **ERROR** — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125 (modules: build-agent, mesh-controller, route-proxy)
- `mesh/repo-check`: **ERROR** — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125
**Change 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-1791331512096605198` (`builds --log build-1791331512096605198`).
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/delivery covered after its stop: a later walk that contains it was delivered: plan-1791658180097457523 (novox/mesh-controller at a2a671ad into main,…
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 shanks as build-1791332298911091525 (builds --log build-1791332298911091525).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T00:11:01Z 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-07T00:11:01Z
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-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 378.039s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.041s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.030s
ok github.com/novox/mesh-controller/examples/route-proxy 1.227s
ok github.com/novox/mesh-controller/internal/artifacts 1.081s
ok github.com/novox/mesh-controller/internal/broker 2.595s
ok github.com/novox/mesh-controller/internal/builder 1.481s
ok github.com/novox/mesh-controller/internal/catalogue 4.177s
ok github.com/novox/mesh-controller/internal/conditions 2.012s
ok github.com/novox/mesh-controller/internal/envfile 1.055s
ok github.com/novox/mesh-controller/internal/facts 1.059s
ok github.com/novox/mesh-controller/internal/identity 26.089s
ok github.com/novox/mesh-controller/internal/inventory 238.214s
ok github.com/novox/mesh-controller/internal/lease 17.689s
ok github.com/novox/mesh-controller/internal/licences 28.837s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.061s
ok github.com/novox/mesh-controller/internal/link 83.469s
ok github.com/novox/mesh-controller/internal/lint 1.923s
ok github.com/novox/mesh-controller/internal/outward 1.085s
ok github.com/novox/mesh-controller/internal/overlay 1.075s
ok github.com/novox/mesh-controller/internal/secrets 1.537s
ok github.com/novox/mesh-controller/internal/store 10.099s
ok github.com/novox/mesh-controller/internal/testbus 1.227s
ok github.com/novox/mesh-controller/internal/token 1.014s
**Merge check** at `ec3769a8`
- `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
**Change 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 shanks as `build-1791332298911091525` (`builds --log build-1791332298911091525`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T00:11:01Z 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-07T00:11:01Z
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-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 378.039s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.041s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.030s
ok github.com/novox/mesh-controller/examples/route-proxy 1.227s
ok github.com/novox/mesh-controller/internal/artifacts 1.081s
ok github.com/novox/mesh-controller/internal/broker 2.595s
ok github.com/novox/mesh-controller/internal/builder 1.481s
ok github.com/novox/mesh-controller/internal/catalogue 4.177s
ok github.com/novox/mesh-controller/internal/conditions 2.012s
ok github.com/novox/mesh-controller/internal/envfile 1.055s
ok github.com/novox/mesh-controller/internal/facts 1.059s
ok github.com/novox/mesh-controller/internal/identity 26.089s
ok github.com/novox/mesh-controller/internal/inventory 238.214s
ok github.com/novox/mesh-controller/internal/lease 17.689s
ok github.com/novox/mesh-controller/internal/licences 28.837s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.061s
ok github.com/novox/mesh-controller/internal/link 83.469s
ok github.com/novox/mesh-controller/internal/lint 1.923s
ok github.com/novox/mesh-controller/internal/outward 1.085s
ok github.com/novox/mesh-controller/internal/overlay 1.075s
ok github.com/novox/mesh-controller/internal/secrets 1.537s
ok github.com/novox/mesh-controller/internal/store 10.099s
ok github.com/novox/mesh-controller/internal/testbus 1.227s
ok github.com/novox/mesh-controller/internal/token 1.014s
```
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.
The facts snapshot promises no address. Every module's
repository, itsreads, and everysourcesentry still carried the clone URL, including the forge's private host and port. They are now kept asowner/repository(facts.RepositoryName, which handles http, ssh and scp-like forms).Nothing the gate reads is lost:
sameRepositorymatches by owner/name suffix. I checked this on the live facts with mesh-controller#104's controller. The facts were rewritten the same way and judged against a mesh-host change: the verdict and reach were identical (4 of 4 compose; rebuilds mesh-host, 1 tier).This PR does not fix the rest of issue 288. Owners (one is a person's forge login), whole manifests (which name machines and domains) and a login in a settings value need a design answer, because a check reads them as they are.
Tests:
TestARepositoryIsNamedWithoutTheForge; the facts, gate, check and plan tests pass.novox/hq issue 288.
Delivery
novox/mesh-controller@ec3769a8a669— stopped since 2026-10-08T23:32:59ZCovered: covered after its stop: a later walk that contains it was delivered: plan-1791658180097457523 (novox/mesh-controller at
a2a671adinto main, done, contains its merge099c176f)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
099c176fa9is contained incec797e996which is delivered (walk plan-1791499975016484055); closed on the operator's word 2026-10-09; the held state came from no walk being opened for it — see hq issue to followThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
3d7ccc8amesh/merge-gate: ERROR — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125 (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: ERROR — the check could not run: a throwaway postgres:17-alpine could not be raised: docker run --label mesh.build=build-1791331512096605198 -d --rm --name build-1791331512096605198-store -p 127.0.0.1::5432 -e POSTGRES_PASSWORD=check postgres:17-alpine: exit status 125Change plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791331512096605198(builds --log build-1791331512096605198).Merge check at
ec3769a8mesh/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 passedChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791332298911091525(builds --log build-1791332298911091525).