Fixes issue 1369; half of the delivery group fix/r3e-before-the-gate with mesh-sdk (issue 1370), delivered before design 47's release R3e.
When the node-engine applies a declaration that no longer holds a module it reported, it writes that module's have key once with phase removed (compare-and-set at the revision read; never deletes, ADR 0408 §4). Candidates are the modules this process wrote, the previous applied declaration's modules (report.Before, read from the kept declaration before it is replaced, so a restart loses nothing), and the last noted ones, minus the new declaration; a key that does not exist is never created. Why: ADR 0450 ¦ (as corrected) has the gate hold the seat only once every have key of today's mesh-delivery says removed; until now such a key stayed running for ever (R3e review finding G1b).
Pins mesh-sdk v0.1.14-0.20261020011849-ba684e54976b (this group's mesh-sdk head, for PhaseRemoved).
Tests: internal/link have_test.go (AC1-AC3, a refused removal retried, and TestARestartedNodeEngineWritesTheRemovalFromTheReportsBefore). Tries build-1792459399854697279 (6a2fb63b) and build-1792459609321068487 (150fadfe) passed; an earlier try failed only on the known flake issue 604.
Fixes issue 1369; half of the delivery group fix/r3e-before-the-gate with mesh-sdk (issue 1370), delivered before design 47's release R3e.
When the node-engine applies a declaration that no longer holds a module it reported, it writes that module's have key once with phase `removed` (compare-and-set at the revision read; never deletes, ADR 0408 §4). Candidates are the modules this process wrote, the previous applied declaration's modules (`report.Before`, read from the kept declaration before it is replaced, so a restart loses nothing), and the last noted ones, minus the new declaration; a key that does not exist is never created. Why: ADR 0450 ¦ (as corrected) has the gate hold the seat only once every have key of today's mesh-delivery says removed; until now such a key stayed `running` for ever (R3e review finding G1b).
Pins mesh-sdk v0.1.14-0.20261020011849-ba684e54976b (this group's mesh-sdk head, for PhaseRemoved).
Tests: internal/link have_test.go (AC1-AC3, a refused removal retried, and TestARestartedNodeEngineWritesTheRemovalFromTheReportsBefore). Tries build-1792459399854697279 (6a2fb63b) and build-1792459609321068487 (150fadfe) passed; an earlier try failed only on the known flake issue 604.
Hardening found in review, not here: issue 1372.
Reviewed-by: review-r3e-pre@shanks at 150fadfe8bed4765cc83beeb9ed83f4acfc5f62d
A module that left a node kept its have key at running for ever, so nothing could tell it stopped and the gate would never take the seat. The key is written once with the phase removed over the revision read, never deleted. Pins mesh-sdk to the commit that adds the phase.
mesh/merge-gate head 150fadfe8bed merged into trunk 619e14aa8e57 — pass: group fix/r3e-before-the-gate composed: every machine composes with the change as …
The set of modules this process wrote lives in memory, so a node-engine restarted before the apply that drops a module never wrote that module's removal. The report now names the modules the kept declaration held before, and they are removal candidates.
Deliverynovox/mesh-host@150fadfe8bed — delivered since 2026-10-20T06:30:25Z
Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
tier 0: mesh-host
ace: receives mesh-host
g14: receives mesh-host
novox: receives mesh-host
shanks: receives mesh-host
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 mesh-host is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-host on every machine running it: sent
mesh-sdk on every machine running it: sent
mesh-tools on every machine running it: sent
audit-logger on every machine running it: sent
confluence on every machine running it: sent
gitlab on every machine running it: sent
jira on every machine running it: sent
mesh-catalog on every machine running it: sent
model-usage on every machine running it: sent
openai-consumer on every machine running it: sent
route-adapter on every machine running it: sent
showcase on every machine running it: sent
Transitions
2026-10-20 01:28 (new) → proposed (announced): novox/mesh-host#121's head announced
2026-10-20 01:29 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-20 01:29 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-20 01:34 ready → proposed (recheck): Exception (issue 1373): its check passed at 01:29:46, but a second check asked 01:29:08 while the first ran ended in error at 01:30:13 (artifact store novox:5100 refused for a moment) and overwrote the passing mesh/merge-gate and mesh/repo-check with error on the forge; the delivery counts it ready while the forge says error, so its group fix/r3e-before-the-gate is never asked and nothing asks this check again. lead-47@shanks
2026-10-20 01:36 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-20 01:36 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-20 05:57 ready → proposed (trunk moved): out of date: judged against trunk 2474bf2833, the trunk is now 619e14aa8e57; judged again on a recheck or when it is merged
2026-10-20 05:58 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-20 05:58 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-20 06:03 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-20 06:03 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-20 06:30 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-host@150fadfe8bed` — **delivered** since 2026-10-20T06:30:25Z
**Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step
- tier 0: mesh-host
- ace: receives mesh-host
- g14: receives mesh-host
- novox: receives mesh-host
- shanks: receives mesh-host
- 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 mesh-host is judged on its first machine
**Group** `fix/r3e-before-the-gate`: novox/mesh-host@150fadfe8bed, novox/mesh-sdk@ba684e54976b
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-host on every machine running it: sent
- mesh-sdk on every machine running it: sent
- mesh-tools on every machine running it: sent
- audit-logger on every machine running it: sent
- confluence on every machine running it: sent
- gitlab on every machine running it: sent
- jira on every machine running it: sent
- mesh-catalog on every machine running it: sent
- model-usage on every machine running it: sent
- openai-consumer on every machine running it: sent
- route-adapter on every machine running it: sent
- showcase on every machine running it: sent
**Transitions**
- 2026-10-20 01:28 (new) → proposed (announced): novox/mesh-host#121's head announced
- 2026-10-20 01:29 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-20 01:29 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-20 01:34 ready → proposed (recheck): Exception (issue 1373): its check passed at 01:29:46, but a second check asked 01:29:08 while the first ran ended in error at 01:30:13 (artifact store novox:5100 refused for a moment) and overwrote the passing mesh/merge-gate and mesh/repo-check with error on the forge; the delivery counts it ready while the forge says error, so its group fix/r3e-before-the-gate is never asked and nothing asks this check again. lead-47@shanks
- 2026-10-20 01:36 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-20 01:36 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-20 05:57 ready → proposed (trunk moved): out of date: judged against trunk 2474bf28330f, the trunk is now 619e14aa8e57; judged again on a recheck or when it is merged
- 2026-10-20 05:58 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-20 05:58 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-20 06:03 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-20 06:03 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-20 06:30 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: ERROR — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refused
mesh/repo-check: ERROR — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refused
Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
tier 0: mesh-host
ace: receives mesh-host
g14: receives mesh-host
novox: receives mesh-host
shanks: receives mesh-host
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 mesh-host is judged on its first machine
read by no module's build: internal/link/have_test.go
Run by the build seat on ace as build-1792459746942960332 (builds --log build-1792459746942960332).
**Merge check** at `150fadfe`
- `mesh/merge-gate`: **ERROR** — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refused
- `mesh/repo-check`: **ERROR** — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refused
**Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step
- tier 0: mesh-host
- ace: receives mesh-host
- g14: receives mesh-host
- novox: receives mesh-host
- shanks: receives mesh-host
- 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 mesh-host is judged on its first machine
- read by no module's build: internal/link/have_test.go
Run by the build seat on ace as `build-1792459746942960332` (`builds --log build-1792459746942960332`).
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 issue 1369; half of the delivery group fix/r3e-before-the-gate with mesh-sdk (issue 1370), delivered before design 47's release R3e.
When the node-engine applies a declaration that no longer holds a module it reported, it writes that module's have key once with phase
removed(compare-and-set at the revision read; never deletes, ADR 0408 §4). Candidates are the modules this process wrote, the previous applied declaration's modules (report.Before, read from the kept declaration before it is replaced, so a restart loses nothing), and the last noted ones, minus the new declaration; a key that does not exist is never created. Why: ADR 0450 ¦ (as corrected) has the gate hold the seat only once every have key of today's mesh-delivery says removed; until now such a key stayedrunningfor ever (R3e review finding G1b).Pins mesh-sdk v0.1.14-0.20261020011849-ba684e54976b (this group's mesh-sdk head, for PhaseRemoved).
Tests: internal/link have_test.go (AC1-AC3, a refused removal retried, and TestARestartedNodeEngineWritesTheRemovalFromTheReportsBefore). Tries build-1792459399854697279 (
6a2fb63b) and build-1792459609321068487 (150fadfe) passed; an earlier try failed only on the known flake issue 604.Hardening found in review, not here: issue 1372.
Reviewed-by: review-r3e-pre@shanks at
150fadfe8bDelivery
novox/mesh-host@150fadfe8bed— delivered since 2026-10-20T06:30:25ZDelivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
Group
fix/r3e-before-the-gate: novox/mesh-host@150fadfe8b, novox/mesh-sdk@ba684e5497Machines
Transitions
2474bf2833, the trunk is now 619e14aa8e57; 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
150fadfemesh/merge-gate: ERROR — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refusedmesh/repo-check: ERROR — the check could not run: the facts snapshot cannot be read, and a check without it judges nothing: cannot reach the artifact store at novox.internal:5100: Get "http://novox.internal:5100/v2/facts/manifests/latest": dial tcp 10.10.0.1:5100: connect: connection refusedDelivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792459746942960332(builds --log build-1792459746942960332).