Issue 594; decision: novox/hq ADR 0335. Companion to mesh-host#98. Compatible with #280 (a restarted build is said): this touches MachineOptions and the Take loop after the cancel check, not the delivery stamp #280 adds.
What it does
Manifest: a container's busy (command, timeout default 10s, at most 1m) is checked by module check (shape, only on a container that stays up), and composed only for a machine whose health statement says contract 8 (link.BusyContract); an older, strict engine is not sent it and replaces at once, as before.
Pin: mesh-host moved to bb60e7b (mesh-host#98's head) and vendored, so the node-engine's own validator used by the facts and probes knows busy. Re-pin if #98 changes before merging.
Report: busy is kept with the machine's last account (node_report.busy, migration 0096); a wait starting or ending is news. While a container waits, the machine's apply duration is not recorded: the report that says it replaced ends the apply, so the rest's apply phase counts the wait.
Gate: a first-machine gate whose machine reports, on the gate's send, a judged module's container waiting does not judge: no pass, no bound; the walk and plans say "waits for a busy container on " with what it holds. At the report that no longer lists it, the gate's Since moves to that report: the judging starts then. Past the engine's bound plus 5 minutes (an engine silent while it waited), the judging starts anyway and holds the module not healthy while it is still listed waiting, so no walk waits for ever.
Walk phases: a busy-wait phase between send-first and judgement, only in a tier where one waited; measured, counted in the delivery time, never exempted.
mesh-builder: mesh-builder busy writes a drain mark, then exits 0 while a build is in hand (printing what) and 1 when none is. A drained agent fetches nothing and hands back what it fetched (MachineOptions.Claim): each side writes its own mark before it reads the other's, so an ask racing a fetch never misses a build just taken. The marks are cleared when the holder starts.
Migration number: 0096 is also used by the unmerged branches feat/325 and feat/328; whichever lands last renumbers.
Tests (fail on main: the identifiers do not exist there)
cmd/mesh-controller busy_test.go: a gate waits while its module's container waits, says so, and starts at the replaced report; it waits no longer than the engine's bound plus the slack; an engine that never waits starts as before, and a wait reported on an older declaration holds nothing.
internal/inventory busy_test.go: the busy wait is a measured phase between the send and the judging, and the total holds; an open wait is said; a container is its module's by id. Store test TestAReportOfABusyContainerIsKeptAndReadBack (listed in testdata/store-tests; not run here: no store on this machine).
internal/catalogue busy_test.go: busy's shape; sent only to an engine that reads it, and the node-engine's validator accepts it.
cmd/mesh-builder busy_test.go: busy answers while a build is in hand and drains; 200 racing ask/claim rounds never miss a build.
gofmt, go vet and merge-check.sh pass (without MESH_TEST_POSTGRES: store tests skipped).
after: novox/mesh-host
Issue 594; decision: novox/hq ADR 0335. Companion to mesh-host#98. Compatible with #280 (a restarted build is said): this touches `MachineOptions` and the Take loop after the cancel check, not the delivery stamp #280 adds.
**What it does**
- Manifest: a container's `busy` (`command`, `timeout` default 10s, at most 1m) is checked by `module check` (shape, only on a container that stays up), and composed only for a machine whose health statement says contract 8 (`link.BusyContract`); an older, strict engine is not sent it and replaces at once, as before.
- Pin: mesh-host moved to bb60e7b (mesh-host#98's head) and vendored, so the node-engine's own validator used by the facts and probes knows `busy`. Re-pin if #98 changes before merging.
- Report: `busy` is kept with the machine's last account (`node_report.busy`, migration 0096); a wait starting or ending is news. While a container waits, the machine's `apply` duration is not recorded: the report that says it replaced ends the apply, so the rest's apply phase counts the wait.
- Gate: a first-machine gate whose machine reports, on the gate's send, a judged module's container `waiting` does not judge: no pass, no bound; the walk and `plans` say "waits for a busy container on <machine>" with what it holds. At the report that no longer lists it, the gate's Since moves to that report: the judging starts then. Past the engine's bound plus 5 minutes (an engine silent while it waited), the judging starts anyway and holds the module not healthy while it is still listed waiting, so no walk waits for ever.
- Walk phases: a `busy-wait` phase between `send-first` and `judgement`, only in a tier where one waited; measured, counted in the delivery time, never exempted.
- mesh-builder: `mesh-builder busy` writes a drain mark, then exits 0 while a build is in hand (printing what) and 1 when none is. A drained agent fetches nothing and hands back what it fetched (`MachineOptions.Claim`): each side writes its own mark before it reads the other's, so an ask racing a fetch never misses a build just taken. The marks are cleared when the holder starts.
**Migration number**: 0096 is also used by the unmerged branches feat/325 and feat/328; whichever lands last renumbers.
**Tests (fail on main: the identifiers do not exist there)**
- cmd/mesh-controller busy_test.go: a gate waits while its module's container waits, says so, and starts at the replaced report; it waits no longer than the engine's bound plus the slack; an engine that never waits starts as before, and a wait reported on an older declaration holds nothing.
- internal/inventory busy_test.go: the busy wait is a measured phase between the send and the judging, and the total holds; an open wait is said; a container is its module's by id. Store test TestAReportOfABusyContainerIsKeptAndReadBack (listed in testdata/store-tests; not run here: no store on this machine).
- internal/catalogue busy_test.go: busy's shape; sent only to an engine that reads it, and the node-engine's validator accepts it.
- cmd/mesh-builder busy_test.go: busy answers while a build is in hand and drains; 200 racing ask/claim rounds never miss a build.
gofmt, go vet and merge-check.sh pass (without MESH_TEST_POSTGRES: store tests skipped).
mesh/delivery-group group feat/335-a-busy-container-is-replaced-when-idle rejected: its order contradicts itself: novox/mesh-catalog@190608193764, novox/mesh-c…
A merge into mesh-controller replaced every build agent and threw away the
checks in flight (issue 594). The manifest's container busy is checked and
sent only to an engine that reads it; a report's busy waits are kept, the
gate starts at the report that says the container replaced, and the wait is
a phase of the delivery time. mesh-builder busy drains the agent and answers
while a build is in hand (novox/hq ADR 0335).
2026-10-12 22:54 (new) → proposed (announced): novox/mesh-controller#283's head announced
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@b1546ed28a88` — **proposed** since 2026-10-12T22:54:44Z
**Group** `feat/335-a-busy-container-is-replaced-when-idle`, in order: novox/mesh-host@bb60e7b584d8 → novox/mesh-controller@b1546ed28a88
- novox/mesh-host@bb60e7b584d8 before novox/mesh-controller@b1546ed28a88: declared, over built by
**Transitions**
- 2026-10-12 22:54 (new) → proposed (announced): novox/mesh-controller#283's head announced
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
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
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent, route-proxy is judged on its first machine
read by no module's build: cmd/mesh-builder/busy_test.go, cmd/mesh-builder/stdout_test.go, cmd/mesh-controller/busy_test.go, internal/catalogue/busy_test.go, internal/inventory/busy_test.go, testdata/store-tests
Run by the build seat on g14 as build-1791845684393014632 (builds --log build-1791845684393014632).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 58 tool(s); WARNING: merge-window ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); 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
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-12T22:43:48Z 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-12T22:43:48Z
modules the change moves:
- mesh-controller (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
notes:
- cmd/mesh-builder/busy_test.go, cmd/mesh-builder/stdout_test.go, cmd/mesh-controller/busy_test.go, internal/catalogue/busy_test.go, internal/inventory/busy_test.go and testdata/store-tests read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.076s
ok github.com/novox/mesh-controller/cmd/mesh-controller 198.008s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.162s
ok github.com/novox/mesh-controller/internal/artifacts 1.064s
? github.com/novox/mesh-controller/internal/beside [no test files]
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:29: open /var/lib/build-agent/workspace/check/mesh-host/examples/foundation-first-node-nats.lock: no such file or directory
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 3.024s
ok github.com/novox/mesh-controller/internal/builder 35.785s
ok github.com/novox/mesh-controller/internal/catalogue 7.782s
ok github.com/novox/mesh-controller/internal/conditions 2.496s
ok github.com/novox/mesh-controller/internal/envfile 1.032s
ok github.com/novox/mesh-controller/internal/facts 1.041s
ok github.com/novox/mesh-controller/internal/identity 6.121s
--- FAIL: TestAReportOfABusyContainerIsKeptAndReadBack (0.13s)
busy_test.go:120: can't scan into dest[4]: cannot scan NULL into *bool
2026/10/12 22:57:42 the stored manifest of later has a key this controller does not know (a state is either a name or {name, history, ttl-seconds, per-machine}: json: unknown field "a-field-from-later" (read without state[0].a-field-from-later)): a newer controller registered it, and later is left out of every machine until this controller is updated (novox/hq ADR 0262)
FAIL
FAIL github.com/novox/mesh-controller/internal/inventory 35.079s
ok github.com/novox/mesh-controller/internal/lease 17.720s
ok github.com/novox/mesh-controller/internal/licences 5.090s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.013s
ok github.com/novox/mesh-controller/internal/link 59.943s
ok github.com/novox/mesh-controller/internal/lint 2.040s
ok github.com/novox/mesh-controller/internal/outward 1.044s
ok github.com/novox/mesh-controller/internal/overlay 1.029s
ok github.com/novox/mesh-controller/internal/secrets 1.384s
ok github.com/novox/mesh-controller/internal/store 4.622s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
ok github.com/novox/mesh-controller/internal/token 1.014s
FAIL
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:29: open /var/lib/build-agent/workspace/check/mesh-host/examples/foundation-first-node-nats.lock: no such file or directory
FAIL github.com/novox/mesh-controller/internal/broker 3.024s
--- FAIL: TestAReportOfABusyContainerIsKeptAndReadBack (0.13s)
busy_test.go:120: can't scan into dest[4]: cannot scan NULL into *bool
FAIL github.com/novox/mesh-controller/internal/inventory 35.079s
Out of date when it landed: out of date: judged against trunk 56d6313262, the trunk is now cbac703e817d; judged again on a recheck or when it is merged
**Merge check** at `b1546ed2`
Judged: head `b1546ed28a88` merged into trunk `56d6313262e8`; read beside it: mesh-catalog `8f80cd471634`, mesh-controller-main `56d6313262e8`, mesh-host `7a41e120635b`, mesh-tools `954e1a53eef9`
- `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`: **FAIL** — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s); and TestAReportOfABusyContainerIsKeptAndReadBack
**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
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent, route-proxy is judged on its first machine
- read by no module's build: cmd/mesh-builder/busy_test.go, cmd/mesh-builder/stdout_test.go, cmd/mesh-controller/busy_test.go, internal/catalogue/busy_test.go, internal/inventory/busy_test.go, testdata/store-tests
Run by the build seat on g14 as `build-1791845684393014632` (`builds --log build-1791845684393014632`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 58 tool(s); WARNING: merge-window ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); 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
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-12T22:43:48Z 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-12T22:43:48Z
modules the change moves:
- mesh-controller (changed)
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
notes:
- cmd/mesh-builder/busy_test.go, cmd/mesh-builder/stdout_test.go, cmd/mesh-controller/busy_test.go, internal/catalogue/busy_test.go, internal/inventory/busy_test.go and testdata/store-tests read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.076s
ok github.com/novox/mesh-controller/cmd/mesh-controller 198.008s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.162s
ok github.com/novox/mesh-controller/internal/artifacts 1.064s
? github.com/novox/mesh-controller/internal/beside [no test files]
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:29: open /var/lib/build-agent/workspace/check/mesh-host/examples/foundation-first-node-nats.lock: no such file or directory
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 3.024s
ok github.com/novox/mesh-controller/internal/builder 35.785s
ok github.com/novox/mesh-controller/internal/catalogue 7.782s
ok github.com/novox/mesh-controller/internal/conditions 2.496s
ok github.com/novox/mesh-controller/internal/envfile 1.032s
ok github.com/novox/mesh-controller/internal/facts 1.041s
ok github.com/novox/mesh-controller/internal/identity 6.121s
--- FAIL: TestAReportOfABusyContainerIsKeptAndReadBack (0.13s)
busy_test.go:120: can't scan into dest[4]: cannot scan NULL into *bool
2026/10/12 22:57:42 the stored manifest of later has a key this controller does not know (a state is either a name or {name, history, ttl-seconds, per-machine}: json: unknown field "a-field-from-later" (read without state[0].a-field-from-later)): a newer controller registered it, and later is left out of every machine until this controller is updated (novox/hq ADR 0262)
FAIL
FAIL github.com/novox/mesh-controller/internal/inventory 35.079s
ok github.com/novox/mesh-controller/internal/lease 17.720s
ok github.com/novox/mesh-controller/internal/licences 5.090s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.013s
ok github.com/novox/mesh-controller/internal/link 59.943s
ok github.com/novox/mesh-controller/internal/lint 2.040s
ok github.com/novox/mesh-controller/internal/outward 1.044s
ok github.com/novox/mesh-controller/internal/overlay 1.029s
ok github.com/novox/mesh-controller/internal/secrets 1.384s
ok github.com/novox/mesh-controller/internal/store 4.622s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
ok github.com/novox/mesh-controller/internal/token 1.014s
FAIL
--- what failed, picked from the whole of its output (the whole is in the build's log)
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s)
genesis_template_test.go:29: judged against /var/lib/build-agent/workspace/check/mesh-host as cloned beside this check
genesis_template_test.go:29: open /var/lib/build-agent/workspace/check/mesh-host/examples/foundation-first-node-nats.lock: no such file or directory
FAIL github.com/novox/mesh-controller/internal/broker 3.024s
--- FAIL: TestAReportOfABusyContainerIsKeptAndReadBack (0.13s)
busy_test.go:120: can't scan into dest[4]: cannot scan NULL into *bool
FAIL github.com/novox/mesh-controller/internal/inventory 35.079s
```
**Out of date when it landed**: out of date: judged against trunk 56d6313262e8, the trunk is now cbac703e817d; judged again on a recheck or when it is merged
mesh/delivery-group group feat/335-a-busy-container-is-replaced-when-idle rejected: its order contradicts itself: novox/mesh-catalog@190608193764, novox/mesh-c…
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.
after: novox/mesh-host
Issue 594; decision: novox/hq ADR 0335. Companion to mesh-host#98. Compatible with #280 (a restarted build is said): this touches
MachineOptionsand the Take loop after the cancel check, not the delivery stamp #280 adds.What it does
busy(command,timeoutdefault 10s, at most 1m) is checked bymodule check(shape, only on a container that stays up), and composed only for a machine whose health statement says contract 8 (link.BusyContract); an older, strict engine is not sent it and replaces at once, as before.busy. Re-pin if #98 changes before merging.busyis kept with the machine's last account (node_report.busy, migration 0096); a wait starting or ending is news. While a container waits, the machine'sapplyduration is not recorded: the report that says it replaced ends the apply, so the rest's apply phase counts the wait.waitingdoes not judge: no pass, no bound; the walk andplanssay "waits for a busy container on " with what it holds. At the report that no longer lists it, the gate's Since moves to that report: the judging starts then. Past the engine's bound plus 5 minutes (an engine silent while it waited), the judging starts anyway and holds the module not healthy while it is still listed waiting, so no walk waits for ever.busy-waitphase betweensend-firstandjudgement, only in a tier where one waited; measured, counted in the delivery time, never exempted.mesh-builder busywrites a drain mark, then exits 0 while a build is in hand (printing what) and 1 when none is. A drained agent fetches nothing and hands back what it fetched (MachineOptions.Claim): each side writes its own mark before it reads the other's, so an ask racing a fetch never misses a build just taken. The marks are cleared when the holder starts.Migration number: 0096 is also used by the unmerged branches feat/325 and feat/328; whichever lands last renumbers.
Tests (fail on main: the identifiers do not exist there)
gofmt, go vet and merge-check.sh pass (without MESH_TEST_POSTGRES: store tests skipped).
Delivery
novox/mesh-controller@b1546ed28a88— proposed since 2026-10-12T22:54:44ZGroup
feat/335-a-busy-container-is-replaced-when-idle, in order: novox/mesh-host@bb60e7b584 → novox/mesh-controller@b1546ed28aTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
b1546ed2Judged: head
b1546ed28a88merged into trunk56d6313262e8; read beside it: mesh-catalog8f80cd471634, mesh-controller-main56d6313262e8, mesh-host7a41e120635b, mesh-tools954e1a53eef9mesh/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: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.00s); and TestAReportOfABusyContainerIsKeptAndReadBackDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1791845684393014632(builds --log build-1791845684393014632).Out of date when it landed: out of date: judged against trunk
56d6313262, the trunk is now cbac703e817d; judged again on a recheck or when it is mergedView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.