Issue 596; decision hq ADR 0190 (builder retired for build-agent).
What: genesis.ts checks the catalogue for build-agent/module.json before it runs the installer, no longer builder. genesis-keeps-its-bus, whole-mesh-full and one-node-mesh name build-agent among the modules genesis needs and a raised mesh holds. The step name builder stays as it is: it is the installer's word for the step.
Why: on main every genesis bed stops at "preparing the catalogue: the catalogue has no builder/module.json" (seen in the genesis-keeps-its-bus run, 2026-10-13).
Tested: npm run typecheck and npm test pass (168). With mesh-host's issue 596 and 597 changes, the genesis-keeps-its-bus bed got past this check and the installer ran to step 13. There it skipped (NOT REACHED) on issue 121: the controller refuses build-agent, saying nothing provides npm-package-registry. No unit test covers these names: they are parameters of the integration beds, and the bed run above is the test that fails on main.
Fixes the lab's part of issue 596.
Issue 596; decision hq ADR 0190 (`builder` retired for `build-agent`).
**What**: `genesis.ts` checks the catalogue for `build-agent/module.json` before it runs the installer, no longer `builder`. genesis-keeps-its-bus, whole-mesh-full and one-node-mesh name `build-agent` among the modules genesis needs and a raised mesh holds. The step name `builder` stays as it is: it is the installer's word for the step.
**Why**: on main every genesis bed stops at "preparing the catalogue: the catalogue has no builder/module.json" (seen in the genesis-keeps-its-bus run, 2026-10-13).
**Tested**: `npm run typecheck` and `npm test` pass (168). With mesh-host's issue 596 and 597 changes, the genesis-keeps-its-bus bed got past this check and the installer ran to step 13. There it skipped (NOT REACHED) on issue 121: the controller refuses build-agent, saying nothing provides npm-package-registry. No unit test covers these names: they are parameters of the integration beds, and the bed run above is the test that fails on main.
Fixes the lab's part of issue 596.
mesh/repo-check head abc022eece61 merged into trunk 383176a7eab3 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
The beds checked the catalogue for builder/module.json before running genesis and the mesh beds held
'builder' among a raised mesh's modules; the catalogue retired builder for build-agent on 2026-10-03
(ADR 0190), so every genesis bed stopped before the installer ran.
Deliverynovox/mesh-lab@abc022eece61 — delivered since 2026-10-13T00:57:18Z
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-13 00:29 (new) → proposed (announced): novox/mesh-lab#93's head announced
2026-10-13 00:35 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-13 00:35 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-13 00:38 ready → proposed (trunk moved): out of date: judged against trunk e5ccf48468, the trunk is now b7f46559f053; judged again on a recheck or when it is merged
2026-10-13 00:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-13 00:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-13 00:45 ready → proposed (trunk moved): out of date: judged against trunk b7f46559f0, the trunk is now 383176a7eab3; judged again on a recheck or when it is merged
2026-10-13 00:52 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-13 00:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-13 00:57 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-13 00:57 published → delivered (done): nothing for a walk to move
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-lab@abc022eece61` — **delivered** since 2026-10-13T00:57:18Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-13 00:29 (new) → proposed (announced): novox/mesh-lab#93's head announced
- 2026-10-13 00:35 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-13 00:35 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-13 00:38 ready → proposed (trunk moved): out of date: judged against trunk e5ccf484684d, the trunk is now b7f46559f053; judged again on a recheck or when it is merged
- 2026-10-13 00:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-13 00:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-13 00:45 ready → proposed (trunk moved): out of date: judged against trunk b7f46559f053, the trunk is now 383176a7eab3; judged again on a recheck or when it is merged
- 2026-10-13 00:52 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-13 00:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-13 00:57 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-13 00:57 published → delivered (done): nothing for a walk to move
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Independent review, read-only from a worktree at this sha.
Completeness. I grepped the whole repository (src/, scripts/, scenarios/, asks/, provisioners/, test/, replays/, README) for builder. Every place a bed names the retired catalogue module now names build-agent: genesis.ts default catalogueModules, genesis-keeps-its-bus catalogueModules, whole-mesh-full CATALOGUE_MODULES, and one-node-mesh MUST_HOLD plus its carried-in exclusion. No modules/builder, builder/module.json or other module-name use remains. The remaining hits are a different thing and rightly unchanged: the installer's step name builder in genesis-keeps-its-bus BEFORE_BROKER, the mesh-builder binary and MESH_LAB_BUILDER (src/rebuild.ts, builds.test.ts, mesh.test.ts), the base image name in src/lifecycle/base.ts, Go package paths internal/builder in replays/, and prose comments. The catalogue main (827b89d) has modules/build-agent/module.json and no modules/builder.
Honesty. The PR body says what was run and where it stopped: the genesis-keeps-its-bus bed got past the catalogue check and stopped (NOT REACHED) at step 13 on issue 121, where the controller refuses build-agent because nothing provides npm-package-registry. It also says that no unit test covers these names. That matches the change.
Work-arounds. None. The change renames the module in four lists. It does not stub the manifest or skip the check.
Checks run here. npm ci, npm run typecheck (clean) and npm test: 170 tests, 168 pass, 2 skipped, 0 fail.
Nits (not blocking): two comments still say "the registry's and the builder's" (genesis.ts:113) and "the registry and the builder" (one-node-mesh.test.ts:109) for this list. They read fine as prose about the role, but "the build agent" would match the code.
Commit statuses at review time: mesh/merge-gate pending (in the build queue since 02:29), mesh/delivery pending, mesh/repo-check missing. Do not merge until both required checks are green.
Verdict: approve at abc022eece6177e4af42ac17c215534b91b0e2f8
Independent review, read-only from a worktree at this sha.
1. Completeness. I grepped the whole repository (src/, scripts/, scenarios/, asks/, provisioners/, test/, replays/, README) for `builder`. Every place a bed names the retired catalogue module now names `build-agent`: genesis.ts default catalogueModules, genesis-keeps-its-bus catalogueModules, whole-mesh-full CATALOGUE_MODULES, and one-node-mesh MUST_HOLD plus its carried-in exclusion. No `modules/builder`, `builder/module.json` or other module-name use remains. The remaining hits are a different thing and rightly unchanged: the installer's step name `builder` in genesis-keeps-its-bus BEFORE_BROKER, the `mesh-builder` binary and MESH_LAB_BUILDER (src/rebuild.ts, builds.test.ts, mesh.test.ts), the base image name in src/lifecycle/base.ts, Go package paths internal/builder in replays/, and prose comments. The catalogue main (827b89d) has modules/build-agent/module.json and no modules/builder.
2. Honesty. The PR body says what was run and where it stopped: the genesis-keeps-its-bus bed got past the catalogue check and stopped (NOT REACHED) at step 13 on issue 121, where the controller refuses build-agent because nothing provides npm-package-registry. It also says that no unit test covers these names. That matches the change.
3. Work-arounds. None. The change renames the module in four lists. It does not stub the manifest or skip the check.
4. Checks run here. `npm ci`, `npm run typecheck` (clean) and `npm test`: 170 tests, 168 pass, 2 skipped, 0 fail.
Nits (not blocking): two comments still say "the registry's and the builder's" (genesis.ts:113) and "the registry and the builder" (one-node-mesh.test.ts:109) for this list. They read fine as prose about the role, but "the build agent" would match the code.
Commit statuses at review time: mesh/merge-gate pending (in the build queue since 02:29), mesh/delivery pending, mesh/repo-check missing. Do not merge until both required checks are green.
Independent review. I read the diff in a fresh clone at the head and read ADR 0190 through knowledge-base.get (section 5: the builder module is retired, and build-agent holds node-build-agent).
No blocking findings in the change. The checks at this head are out of date, though. The PR needs a mesh-delivery.recheck and a green verdict on the new trunk before it merges (see the statuses below).
What I checked:
The four edits replace the catalogue module name builder with build-agent: genesis.ts's default catalogueModules, genesis-keeps-its-bus's catalogueModules, one-node-mesh's MUST_HOLD and its carried-in exclusion, and whole-mesh-full's CATALOGUE_MODULES. modules/build-agent/module.json exists in mesh-catalog main, and modules/builder does not, so on main these beds ask the installer for a manifest the catalogue no longer has. No other bed or source names the builder module. The remaining "builder" strings are the mesh-builder binary and image, the rebuild target, and genesis's step name builder (mesh-host's StepBuilder), which this change correctly leaves alone.
npm run typecheck passes. npm test passes: 170 tests, 168 passed, 0 failed, 2 skipped. merge-check.sh passes. Its Go parts ran here: the replays register is fine, and the asks proof did not run because no mesh-tools clone was beside it, which the script says.
The PR merges cleanly with the current trunk b7f4655, which adds only replays/register.go. Typecheck and the unit suite pass on that merge too (168 passed, 0 failed).
Tests failing on main: this PR adds no unit test, and the beds it changes are integration beds that need a lab, so neither npm test nor merge-check.sh exercises them. I did not run a lab. The evidence that the beds fail on main and move on at this head is the builder's lab run on g14 described in mesh-host #101: genesis reached step 13 and registered build-agent, then stopped on issue 121. So these beds cannot pass end to end until issue 121 is decided. This PR only removes the earlier, wrong failure.
Non-blocking: comments beside the edits still say "the builder" (genesis.ts "The registry's and the builder's", one-node-mesh's MUST_HOLD comment and HAS_BUILDER text). They describe the role and are not wrong, but "the build agent" would match the code below them.
Gitea statuses at this head: mesh/merge-gate pending, "out of date: judged against trunk e5ccf48468, the trunk is now b7f46559f053; judged again on a recheck or when it is merged". mesh/repo-check pending, with the same text. mesh/delivery pending, "checking". Merge only after a recheck turns both required checks green at this head.
Verdict: approve at abc022eece6177e4af42ac17c215534b91b0e2f8
Independent review. I read the diff in a fresh clone at the head and read ADR 0190 through knowledge-base.get (section 5: the `builder` module is retired, and `build-agent` holds `node-build-agent`).
No blocking findings in the change. The checks at this head are out of date, though. The PR needs a mesh-delivery.recheck and a green verdict on the new trunk before it merges (see the statuses below).
What I checked:
1. The four edits replace the catalogue module name `builder` with `build-agent`: genesis.ts's default catalogueModules, genesis-keeps-its-bus's catalogueModules, one-node-mesh's MUST_HOLD and its carried-in exclusion, and whole-mesh-full's CATALOGUE_MODULES. modules/build-agent/module.json exists in mesh-catalog main, and modules/builder does not, so on main these beds ask the installer for a manifest the catalogue no longer has. No other bed or source names the `builder` module. The remaining "builder" strings are the mesh-builder binary and image, the rebuild target, and genesis's step name `builder` (mesh-host's StepBuilder), which this change correctly leaves alone.
2. npm run typecheck passes. npm test passes: 170 tests, 168 passed, 0 failed, 2 skipped. merge-check.sh passes. Its Go parts ran here: the replays register is fine, and the asks proof did not run because no mesh-tools clone was beside it, which the script says.
3. The PR merges cleanly with the current trunk b7f4655, which adds only replays/register.go. Typecheck and the unit suite pass on that merge too (168 passed, 0 failed).
Tests failing on main: this PR adds no unit test, and the beds it changes are integration beds that need a lab, so neither npm test nor merge-check.sh exercises them. I did not run a lab. The evidence that the beds fail on main and move on at this head is the builder's lab run on g14 described in mesh-host #101: genesis reached step 13 and registered build-agent, then stopped on issue 121. So these beds cannot pass end to end until issue 121 is decided. This PR only removes the earlier, wrong failure.
Non-blocking: comments beside the edits still say "the builder" (genesis.ts "The registry's and the builder's", one-node-mesh's MUST_HOLD comment and HAS_BUILDER text). They describe the role and are not wrong, but "the build agent" would match the code below them.
Gitea statuses at this head: mesh/merge-gate pending, "out of date: judged against trunk e5ccf484684d, the trunk is now b7f46559f053; judged again on a recheck or when it is merged". mesh/repo-check pending, with the same text. mesh/delivery pending, "checking". Merge only after a recheck turns both required checks green at this head.
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.
Issue 596; decision hq ADR 0190 (
builderretired forbuild-agent).What:
genesis.tschecks the catalogue forbuild-agent/module.jsonbefore it runs the installer, no longerbuilder. genesis-keeps-its-bus, whole-mesh-full and one-node-mesh namebuild-agentamong the modules genesis needs and a raised mesh holds. The step namebuilderstays as it is: it is the installer's word for the step.Why: on main every genesis bed stops at "preparing the catalogue: the catalogue has no builder/module.json" (seen in the genesis-keeps-its-bus run, 2026-10-13).
Tested:
npm run typecheckandnpm testpass (168). With mesh-host's issue 596 and 597 changes, the genesis-keeps-its-bus bed got past this check and the installer ran to step 13. There it skipped (NOT REACHED) on issue 121: the controller refuses build-agent, saying nothing provides npm-package-registry. No unit test covers these names: they are parameters of the integration beds, and the bed run above is the test that fails on main.Fixes the lab's part of issue 596.
Delivery
novox/mesh-lab@abc022eece61— delivered since 2026-10-13T00:57:18ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
e5ccf48468, the trunk is now b7f46559f053; judged again on a recheck or when it is mergedb7f46559f0, the trunk is now 383176a7eab3; judged again on a recheck or when it is mergedThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Verdict: approve at
abc022eeceIndependent review, read-only from a worktree at this sha.
Completeness. I grepped the whole repository (src/, scripts/, scenarios/, asks/, provisioners/, test/, replays/, README) for
builder. Every place a bed names the retired catalogue module now namesbuild-agent: genesis.ts default catalogueModules, genesis-keeps-its-bus catalogueModules, whole-mesh-full CATALOGUE_MODULES, and one-node-mesh MUST_HOLD plus its carried-in exclusion. Nomodules/builder,builder/module.jsonor other module-name use remains. The remaining hits are a different thing and rightly unchanged: the installer's step namebuilderin genesis-keeps-its-bus BEFORE_BROKER, themesh-builderbinary and MESH_LAB_BUILDER (src/rebuild.ts, builds.test.ts, mesh.test.ts), the base image name in src/lifecycle/base.ts, Go package paths internal/builder in replays/, and prose comments. The catalogue main (827b89d) has modules/build-agent/module.json and no modules/builder.Honesty. The PR body says what was run and where it stopped: the genesis-keeps-its-bus bed got past the catalogue check and stopped (NOT REACHED) at step 13 on issue 121, where the controller refuses build-agent because nothing provides npm-package-registry. It also says that no unit test covers these names. That matches the change.
Work-arounds. None. The change renames the module in four lists. It does not stub the manifest or skip the check.
Checks run here.
npm ci,npm run typecheck(clean) andnpm test: 170 tests, 168 pass, 2 skipped, 0 fail.Nits (not blocking): two comments still say "the registry's and the builder's" (genesis.ts:113) and "the registry and the builder" (one-node-mesh.test.ts:109) for this list. They read fine as prose about the role, but "the build agent" would match the code.
Commit statuses at review time: mesh/merge-gate pending (in the build queue since 02:29), mesh/delivery pending, mesh/repo-check missing. Do not merge until both required checks are green.
Verdict: approve at
abc022eeceIndependent review. I read the diff in a fresh clone at the head and read ADR 0190 through knowledge-base.get (section 5: the
buildermodule is retired, andbuild-agentholdsnode-build-agent).No blocking findings in the change. The checks at this head are out of date, though. The PR needs a mesh-delivery.recheck and a green verdict on the new trunk before it merges (see the statuses below).
What I checked:
builderwithbuild-agent: genesis.ts's default catalogueModules, genesis-keeps-its-bus's catalogueModules, one-node-mesh's MUST_HOLD and its carried-in exclusion, and whole-mesh-full's CATALOGUE_MODULES. modules/build-agent/module.json exists in mesh-catalog main, and modules/builder does not, so on main these beds ask the installer for a manifest the catalogue no longer has. No other bed or source names thebuildermodule. The remaining "builder" strings are the mesh-builder binary and image, the rebuild target, and genesis's step namebuilder(mesh-host's StepBuilder), which this change correctly leaves alone.b7f4655, which adds only replays/register.go. Typecheck and the unit suite pass on that merge too (168 passed, 0 failed).Tests failing on main: this PR adds no unit test, and the beds it changes are integration beds that need a lab, so neither npm test nor merge-check.sh exercises them. I did not run a lab. The evidence that the beds fail on main and move on at this head is the builder's lab run on g14 described in mesh-host #101: genesis reached step 13 and registered build-agent, then stopped on issue 121. So these beds cannot pass end to end until issue 121 is decided. This PR only removes the earlier, wrong failure.
Non-blocking: comments beside the edits still say "the builder" (genesis.ts "The registry's and the builder's", one-node-mesh's MUST_HOLD comment and HAS_BUILDER text). They describe the role and are not wrong, but "the build agent" would match the code below them.
Gitea statuses at this head: mesh/merge-gate pending, "out of date: judged against trunk
e5ccf48468, the trunk is now b7f46559f053; judged again on a recheck or when it is merged". mesh/repo-check pending, with the same text. mesh/delivery pending, "checking". Merge only after a recheck turns both required checks green at this head.