Fixes hq issue 712 (a mailu change built and pushed is not registered in the catalogue).
Cause. Since the build role moved to the node-scoped node-build-agent seat (hq ADR 0190), every build outcome is published on mesh.seat.node-build-agent.event.built. mesh-catalog still consumed only the retired mesh-build-machine.built (module.json consumes, index.ts on(...)), so builds reached its graph only through the replay it asks for at start (catching-up -> the controller's built-before). The controller's journal shows the last replay at 2026-10-14 19:00:03 (4782 builds); mailu e1c8965d was built and registered by the controller at 19:02:28, so the catalogue never heard of it and catalog_module still serves cb7bf94a. Everything built after 19:00 (mesh-controller 4af9f114 too) is missing for the same reason.
Change.
consumes gains node-build-agent.built (a seat event the seat declares, so the composer grants it as a watch).
index.ts subscribes to every event in BUILD_EVENTS (heard.ts).
placeable (heard.ts) passes over what the new seat also says and the old never did: merge checks and tries (check-outcome/check), dry runs and failures, the same rule the controller keeps in builds.Built. Without it a pull request's check would become the catalogue's current version.
test/heard.test.ts: the manifest consumes every subscribed event; a walk's build is placed; check, try, dry run and failure are passed over; a body naming no module or commit is said as a fault.
Not changed. The controller's severity judgement (ADR 0355) reads its own module table (inventory.Catalogue, select manifest from module), not mesh-catalog, and already holds mailu e1c8965d with unhealthy: urgent.
Checks: test run locally (4 pass); mesh-controller.try build-1792001012840321268 on the build seat.
Fixes hq issue 712 (a mailu change built and pushed is not registered in the catalogue).
**Cause.** Since the build role moved to the node-scoped `node-build-agent` seat (hq ADR 0190), every build outcome is published on `mesh.seat.node-build-agent.event.built`. mesh-catalog still consumed only the retired `mesh-build-machine.built` (module.json `consumes`, index.ts `on(...)`), so builds reached its graph only through the replay it asks for at start (`catching-up` -> the controller's `built-before`). The controller's journal shows the last replay at 2026-10-14 19:00:03 (4782 builds); mailu e1c8965d was built and registered by the controller at 19:02:28, so the catalogue never heard of it and `catalog_module` still serves cb7bf94a. Everything built after 19:00 (mesh-controller 4af9f114 too) is missing for the same reason.
**Change.**
- `consumes` gains `node-build-agent.built` (a seat event the seat declares, so the composer grants it as a watch).
- index.ts subscribes to every event in `BUILD_EVENTS` (heard.ts).
- `placeable` (heard.ts) passes over what the new seat also says and the old never did: merge checks and tries (`check-outcome`/`check`), dry runs and failures, the same rule the controller keeps in `builds.Built`. Without it a pull request's check would become the catalogue's current version.
- test/heard.test.ts: the manifest consumes every subscribed event; a walk's build is placed; check, try, dry run and failure are passed over; a body naming no module or commit is said as a fault.
**Not changed.** The controller's severity judgement (ADR 0355) reads its own module table (`inventory.Catalogue`, `select manifest from module`), not mesh-catalog, and already holds mailu e1c8965d with `unhealthy: urgent`.
Checks: test run locally (4 pass); `mesh-controller.try` build-1792001012840321268 on the build seat.
mesh/merge-gate head 0b74c04aa89f merged into trunk e1c8965ddbf1 — pass: builds mesh-catalog → novox; no bus step; every machine composes with the change a…
Since the build role moved to node-build-agent (ADR 0190), the catalogue consumed only the retired
mesh-build-machine.built, so builds reached it only through the replay it asks for at its start: mailu
e1c8965d, built two minutes after the last replay, was never registered. Consume node-build-agent.built,
and pass over the seat's merge checks, tries, dry runs and failures, which the old seat never said.
Deliverynovox/mesh-catalog@dbe2949f8456 — delivered since 2026-10-14T19:39:15Z
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Machines
mesh-catalog on every machine running it: sent
Transitions
2026-10-14 18:10 (new) → proposed (announced): novox/mesh-catalog#298's head announced
2026-10-14 18:16 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-14 18:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-14 18:20 ready → proposed (trunk moved): out of date: judged against trunk e223262408, the trunk is now 482232e8c51c; judged again on a recheck or when it is merged
2026-10-14 19:31 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-14 19:31 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-14 19:35 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-14 19:35 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-14 19:39 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@dbe2949f8456` — **delivered** since 2026-10-14T19:39:15Z
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
**Machines**
- mesh-catalog on every machine running it: sent
**Transitions**
- 2026-10-14 18:10 (new) → proposed (announced): novox/mesh-catalog#298's head announced
- 2026-10-14 18:16 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-14 18:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-14 18:20 ready → proposed (trunk moved): out of date: judged against trunk e22326240833, the trunk is now 482232e8c51c; judged again on a recheck or when it is merged
- 2026-10-14 19:31 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-14 19:31 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-14 19:35 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-14 19:35 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-14 19:39 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/merge-gate head 7ee2869d60eb merged into trunk e1c8965ddbf1 — pass: builds mesh-catalog → novox; no bus step; every machine composes with the change a…
mesh/repo-check head 7ee2869d60eb merged into trunk e1c8965ddbf1 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
Merge check at 0b74c04a
Judged: head 0b74c04aa89f merged into trunk e1c8965ddbf1; read beside it: mesh-controller 4af9f1147de6, mesh-controller-main 4af9f1147de6, mesh-host 1a2677882380, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
mesh/repo-check: FAIL — merge-check.sh (go) passed; its merge-check-typescript.sh failed: TypeScript modules that failed: mesh-catalog
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Run by the build seat on ace as build-1792001034402490240 (builds --log build-1792001034402490240).
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46933 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.010s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.198s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
index.ts(40,17): error TS2339: Property 'fault' does not exist on type '{ place: true; module: string; commit: string; } | { place: false; why: string; fault: boolean; }'.
Property 'fault' does not exist on type '{ place: true; module: string; commit: string; }'.
index.ts(40,93): error TS2339: Property 'why' does not exist on type '{ place: true; module: string; commit: string; } | { place: false; why: string; fault: boolean; }'.
Property 'why' does not exist on type '{ place: true; module: string; commit: string; }'.
TypeScript modules that failed: mesh-catalog
**Merge check** at `0b74c04a`
Judged: head `0b74c04aa89f` merged into trunk `e1c8965ddbf1`; read beside it: mesh-controller `4af9f1147de6`, mesh-controller-main `4af9f1147de6`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
- `mesh/repo-check`: **FAIL** — merge-check.sh (go) passed; its merge-check-typescript.sh failed: TypeScript modules that failed: mesh-catalog
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
Run by the build seat on ace as `build-1792001034402490240` (`builds --log build-1792001034402490240`).
```
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46933 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.010s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.198s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
index.ts(40,17): error TS2339: Property 'fault' does not exist on type '{ place: true; module: string; commit: string; } | { place: false; why: string; fault: boolean; }'.
Property 'fault' does not exist on type '{ place: true; module: string; commit: string; }'.
index.ts(40,93): error TS2339: Property 'why' does not exist on type '{ place: true; module: string; commit: string; } | { place: false; why: string; fault: boolean; }'.
Property 'why' does not exist on type '{ place: true; module: string; commit: string; }'.
TypeScript modules that failed: mesh-catalog
```
Merge check at 7ee2869d
Judged: head 7ee2869d60eb merged into trunk e1c8965ddbf1; read beside it: mesh-controller 4af9f1147de6, mesh-controller-main 4af9f1147de6, mesh-host 1a2677882380, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Run by the build seat on shanks as build-1792001097786743790 (builds --log build-1792001097786743790).
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 46941 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.014s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.014s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.208s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.727326ms)
✔ a walk's build is placed, under its module and commit (0.643859ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.235194ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.138042ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 90.220917
**Merge check** at `7ee2869d`
Judged: head `7ee2869d60eb` merged into trunk `e1c8965ddbf1`; read beside it: mesh-controller `4af9f1147de6`, mesh-controller-main `4af9f1147de6`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
Run by the build seat on shanks as `build-1792001097786743790` (`builds --log build-1792001097786743790`).
```
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 46941 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.014s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.014s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.208s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.727326ms)
✔ a walk's build is placed, under its module and commit (0.643859ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.235194ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.138042ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 90.220917
```
mesh/merge-gate head dbe2949f8456 merged into trunk 482232e8c51c — pass: builds mesh-catalog → novox; no bus step; every machine composes with the change a…
mesh/repo-check head dbe2949f8456 merged into trunk 482232e8c51c — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
A branch built through the build verb is a real build, and placing it would make it the catalogue's
current version though the controller never registers it. Say which of the controller's rules are
mirrored and which need its records.
Merge check at dbe2949f
Judged: head dbe2949f8456 merged into trunk e1c8965ddbf1; read beside it: mesh-controller 4af9f1147de6, mesh-controller-main 622fb1e9cbac, mesh-host 1a2677882380, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Run by the build seat on ace as build-1792001410492337898 (builds --log build-1792001410492337898).
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46945 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.011s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.204s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.350772ms)
✔ a walk's build is placed, under its module and commit (0.595652ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.203754ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.155793ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.139573ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 77.417652
Out of date when it landed: out of date: judged against trunk e1c8965ddb, the trunk is now e22326240833; judged again on a recheck or when it is merged
**Merge check** at `dbe2949f`
Judged: head `dbe2949f8456` merged into trunk `e1c8965ddbf1`; read beside it: mesh-controller `4af9f1147de6`, mesh-controller-main `622fb1e9cbac`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
Run by the build seat on ace as `build-1792001410492337898` (`builds --log build-1792001410492337898`).
```
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T17:56:50Z 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-14T17:56:50Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46945 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.011s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.204s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.350772ms)
✔ a walk's build is placed, under its module and commit (0.595652ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.203754ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.155793ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.139573ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 77.417652
```
**Out of date when it landed**: out of date: judged against trunk e1c8965ddbf1, the trunk is now e22326240833; judged again on a recheck or when it is merged
Merge check at dbe2949f
Judged: head dbe2949f8456 merged into trunk e22326240833; read beside it: mesh-controller 622fb1e9cbac, mesh-controller-main 622fb1e9cbac, mesh-host 1a2677882380, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Run by the build seat on shanks as build-1792001587345752147 (builds --log build-1792001587345752147).
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T18:13:10Z 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-14T18:13:10Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 46950 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.014s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.013s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.313s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.954588ms)
✔ a walk's build is placed, under its module and commit (0.712751ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.247994ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.201293ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.176893ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 95.022552
**Merge check** at `dbe2949f`
Judged: head `dbe2949f8456` merged into trunk `e22326240833`; read beside it: mesh-controller `622fb1e9cbac`, mesh-controller-main `622fb1e9cbac`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
Run by the build seat on shanks as `build-1792001587345752147` (`builds --log build-1792001587345752147`).
```
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T18:13:10Z 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-14T18:13:10Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words and 70 daemons' lines, none in the 46950 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.014s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.013s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.313s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.954588ms)
✔ a walk's build is placed, under its module and commit (0.712751ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.247994ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.201293ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.176893ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 95.022552
```
Merge check at dbe2949f
Judged: head dbe2949f8456 merged into trunk 482232e8c51c; read beside it: mesh-controller c2ec0a601acb, mesh-controller-main c2ec0a601acb, mesh-host 1a2677882380, mesh-tools 954e1a53eef9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-catalog → novox; no bus step
tier 0: mesh-catalog
novox: receives mesh-catalog
Run by the build seat on ace as build-1792006194663422919 (builds --log build-1792006194663422919).
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T19:10:09Z 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-14T19:10:09Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46950 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.011s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.197s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.92187ms)
✔ a walk's build is placed, under its module and commit (0.699003ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.243458ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.184086ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.171442ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 74.507525
**Merge check** at `dbe2949f`
Judged: head `dbe2949f8456` merged into trunk `482232e8c51c`; read beside it: mesh-controller `c2ec0a601acb`, mesh-controller-main `c2ec0a601acb`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-catalog → novox; no bus step
- tier 0: mesh-catalog
- novox: receives mesh-catalog
Run by the build seat on ace as `build-1792006194663422919` (`builds --log build-1792006194663422919`).
```
--- the gate: mesh-catalog
mesh-catalog: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
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-14T19:10:09Z 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-14T19:10:09Z
modules the change moves:
- mesh-catalog (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 1 module(s) in 1 tier(s): mesh-catalog
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words and 70 daemons' lines, none in the 46950 strings of 720 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.011s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.197s
modules/mesh-catalog is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.92187ms)
✔ a walk's build is placed, under its module and commit (0.699003ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.243458ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.184086ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.171442ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 74.507525
```
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.
Fixes hq issue 712 (a mailu change built and pushed is not registered in the catalogue).
Cause. Since the build role moved to the node-scoped
node-build-agentseat (hq ADR 0190), every build outcome is published onmesh.seat.node-build-agent.event.built. mesh-catalog still consumed only the retiredmesh-build-machine.built(module.jsonconsumes, index.tson(...)), so builds reached its graph only through the replay it asks for at start (catching-up-> the controller'sbuilt-before). The controller's journal shows the last replay at 2026-10-14 19:00:03 (4782 builds); mailue1c8965dwas built and registered by the controller at 19:02:28, so the catalogue never heard of it andcatalog_modulestill servescb7bf94a. Everything built after 19:00 (mesh-controller 4af9f114 too) is missing for the same reason.Change.
consumesgainsnode-build-agent.built(a seat event the seat declares, so the composer grants it as a watch).BUILD_EVENTS(heard.ts).placeable(heard.ts) passes over what the new seat also says and the old never did: merge checks and tries (check-outcome/check), dry runs and failures, the same rule the controller keeps inbuilds.Built. Without it a pull request's check would become the catalogue's current version.Not changed. The controller's severity judgement (ADR 0355) reads its own module table (
inventory.Catalogue,select manifest from module), not mesh-catalog, and already holds mailue1c8965dwithunhealthy: urgent.Checks: test run locally (4 pass);
mesh-controller.trybuild-1792001012840321268 on the build seat.Delivery
novox/mesh-catalog@dbe2949f8456— delivered since 2026-10-14T19:39:15ZDelivery plan — builds mesh-catalog → novox; no bus step
Machines
Transitions
e223262408, the trunk is now 482232e8c51c; 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.Merge check at
0b74c04aJudged: head
0b74c04aa89fmerged into trunke1c8965ddbf1; read beside it: mesh-controller4af9f1147de6, mesh-controller-main4af9f1147de6, mesh-host1a2677882380, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)mesh/repo-check: FAIL — merge-check.sh (go) passed; its merge-check-typescript.sh failed: TypeScript modules that failed: mesh-catalogDelivery plan — builds mesh-catalog → novox; no bus step
Run by the build seat on ace as
build-1792001034402490240(builds --log build-1792001034402490240).Merge check at
7ee2869dJudged: head
7ee2869d60ebmerged into trunke1c8965ddbf1; read beside it: mesh-controller4af9f1147de6, mesh-controller-main4af9f1147de6, mesh-host1a2677882380, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-catalog → novox; no bus step
Run by the build seat on shanks as
build-1792001097786743790(builds --log build-1792001097786743790).Merge check at
dbe2949fJudged: head
dbe2949f8456merged into trunke1c8965ddbf1; read beside it: mesh-controller4af9f1147de6, mesh-controller-main622fb1e9cbac, mesh-host1a2677882380, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-catalog → novox; no bus step
Run by the build seat on ace as
build-1792001410492337898(builds --log build-1792001410492337898).Out of date when it landed: out of date: judged against trunk
e1c8965ddb, the trunk is now e22326240833; judged again on a recheck or when it is mergedMerge check at
dbe2949fJudged: head
dbe2949f8456merged into trunke22326240833; read beside it: mesh-controller622fb1e9cbac, mesh-controller-main622fb1e9cbac, mesh-host1a2677882380, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-catalog → novox; no bus step
Run by the build seat on shanks as
build-1792001587345752147(builds --log build-1792001587345752147).Merge check at
dbe2949fJudged: head
dbe2949f8456merged into trunk482232e8c51c; read beside it: mesh-controllerc2ec0a601acb, mesh-controller-mainc2ec0a601acb, mesh-host1a2677882380, mesh-tools954e1a53eef9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-catalog)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-catalog → novox; no bus step
Run by the build seat on ace as
build-1792006194663422919(builds --log build-1792006194663422919).