Run each part of a repository's own check in the toolchain it declares (hq issue 302) #125

Merged
mesh-admin merged 1 commits from fix/a-check-runs-each-toolchain-it-declares into main 2026-10-07 22:26:22 +00:00
Contributor

novox/hq issue 302: mesh-lab's merge-check.sh runs in the TypeScript toolchain, which holds no Go compiler, so its replays register was never compiled, vetted or tested before a lab merge (mesh-lab #58's report: "NOT CHECKED HERE: replays/ (Go)"). A broken register would have merged green.

What changes (internal/builder): a merge-check.sh may declare further parts among its first twenty lines, # mesh-check-also: <toolchain> <script>. mesh/repo-check runs the script first, then each part from the repository's root in that toolchain's own container (same environment, no container-runtime socket). The layer passes only when every part does; a failing part fails it by name; a declared script the repository lacks, or one outside it, fails; a part in a toolchain the mesh does not hold is an error, never a pass. A script declaring no part runs exactly as before.

mesh-lab declares its Go part in novox/mesh-lab's companion PR (replays/merge-check.sh: gofmt, go vet, TestEveryReplayIsWhole). Until this build reaches the build seat, that header line is a comment and lab PRs are checked as before.

Checked: TestARepositoryInTwoLanguagesIsCheckedInBoth. Replay R302 in mesh-lab's register (a gate replay of that test) is proved: absent before the fix, passes on it. sh merge-check.sh passes locally (race detector, throwaway PostgreSQL 17).

novox/hq issue 302: mesh-lab's `merge-check.sh` runs in the TypeScript toolchain, which holds no Go compiler, so its replays register was never compiled, vetted or tested before a lab merge (mesh-lab #58's report: "NOT CHECKED HERE: replays/ (Go)"). A broken register would have merged green. **What changes (internal/builder):** a `merge-check.sh` may declare further parts among its first twenty lines, `# mesh-check-also: <toolchain> <script>`. `mesh/repo-check` runs the script first, then each part from the repository's root in that toolchain's own container (same environment, no container-runtime socket). The layer passes only when every part does; a failing part fails it by name; a declared script the repository lacks, or one outside it, fails; a part in a toolchain the mesh does not hold is an error, never a pass. A script declaring no part runs exactly as before. mesh-lab declares its Go part in novox/mesh-lab's companion PR (`replays/merge-check.sh`: gofmt, go vet, `TestEveryReplayIsWhole`). Until this build reaches the build seat, that header line is a comment and lab PRs are checked as before. **Checked:** `TestARepositoryInTwoLanguagesIsCheckedInBoth`. Replay R302 in mesh-lab's register (a `gate` replay of that test) is proved: absent before the fix, passes on it. `sh merge-check.sh` passes locally (race detector, throwaway PostgreSQL 17).
mesh-admin added 1 commit 2026-10-07 22:14:15 +00:00
Run each part of a repository's own check in the toolchain it declares (hq issue 302)
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 covered after its stop: a later walk that contains it was delivered: plan-1791658180097457523 (novox/mesh-controller at a2a671ad into main,…
98ef7bac6e
mesh-lab's merge-check.sh runs in the TypeScript toolchain, which holds no Go
compiler, so its replays register was never compiled before a merge and a
broken one would have merged green. A script now declares a further part with
'# mesh-check-also: <toolchain> <script>'; the build seat runs it in that
toolchain's own container, and mesh/repo-check passes only when every part does.
Author
Contributor

Delivery novox/mesh-controller@98ef7bac6e6a — stopped since 2026-10-08T23:33:03Z

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 cdbbd9ec)

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 22:14 (new) → proposed (announced): novox/mesh-controller#125's head announced
  • 2026-10-07 22:24 proposed → checked (checked): the verdict names this commit
  • 2026-10-07 22:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-07 22:36 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:33 held → stopped (stop): covered: its merge cdbbd9ec4b 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@98ef7bac6e6a` — **stopped** since 2026-10-08T23:33:03Z **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 cdbbd9ec) **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 22:14 (new) → proposed (announced): novox/mesh-controller#125's head announced - 2026-10-07 22:24 proposed → checked (checked): the verdict names this commit - 2026-10-07 22:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-07 22:36 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:33 held → stopped (stop): covered: its merge cdbbd9ec4bd0 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`.
Author
Contributor

Merge check at 98ef7bac

  • 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-1791411269229090361 (builds --log build-1791411269229090361).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T22:06:03Z 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-07T22:06:03Z

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	465.944s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.012s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.016s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.091s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.190s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.028s
ok  	github.com/novox/mesh-controller/internal/broker	2.493s
ok  	github.com/novox/mesh-controller/internal/builder	1.418s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.319s
ok  	github.com/novox/mesh-controller/internal/conditions	2.059s
ok  	github.com/novox/mesh-controller/internal/envfile	1.089s
ok  	github.com/novox/mesh-controller/internal/facts	1.093s
ok  	github.com/novox/mesh-controller/internal/identity	42.146s
ok  	github.com/novox/mesh-controller/internal/inventory	277.147s
ok  	github.com/novox/mesh-controller/internal/lease	17.776s
ok  	github.com/novox/mesh-controller/internal/licences	40.293s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.120s
ok  	github.com/novox/mesh-controller/internal/link	78.807s
ok  	github.com/novox/mesh-controller/internal/lint	1.906s
ok  	github.com/novox/mesh-controller/internal/outward	1.122s
ok  	github.com/novox/mesh-controller/internal/overlay	1.133s
ok  	github.com/novox/mesh-controller/internal/secrets	1.490s
ok  	github.com/novox/mesh-controller/internal/store	10.007s
ok  	github.com/novox/mesh-controller/internal/testbus	1.272s
ok  	github.com/novox/mesh-controller/internal/token	1.018s
**Merge check** at `98ef7bac` - `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-1791411269229090361` (`builds --log build-1791411269229090361`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T22:06:03Z 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-07T22:06:03Z 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 465.944s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.091s ok github.com/novox/mesh-controller/examples/route-proxy 1.190s ok github.com/novox/mesh-controller/internal/artifacts 1.028s ok github.com/novox/mesh-controller/internal/broker 2.493s ok github.com/novox/mesh-controller/internal/builder 1.418s ok github.com/novox/mesh-controller/internal/catalogue 4.319s ok github.com/novox/mesh-controller/internal/conditions 2.059s ok github.com/novox/mesh-controller/internal/envfile 1.089s ok github.com/novox/mesh-controller/internal/facts 1.093s ok github.com/novox/mesh-controller/internal/identity 42.146s ok github.com/novox/mesh-controller/internal/inventory 277.147s ok github.com/novox/mesh-controller/internal/lease 17.776s ok github.com/novox/mesh-controller/internal/licences 40.293s ok github.com/novox/mesh-controller/internal/licences/adapters 1.120s ok github.com/novox/mesh-controller/internal/link 78.807s ok github.com/novox/mesh-controller/internal/lint 1.906s ok github.com/novox/mesh-controller/internal/outward 1.122s ok github.com/novox/mesh-controller/internal/overlay 1.133s ok github.com/novox/mesh-controller/internal/secrets 1.490s ok github.com/novox/mesh-controller/internal/store 10.007s ok github.com/novox/mesh-controller/internal/testbus 1.272s ok github.com/novox/mesh-controller/internal/token 1.018s ```
mesh-admin merged commit cdbbd9ec4b into main 2026-10-07 22:26:22 +00:00
mesh-admin deleted branch fix/a-check-runs-each-toolchain-it-declares 2026-10-07 22:26:22 +00:00
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#125