The controller (lease holder) composes the facts snapshot every 10 min and keeps it in the artifact store as facts:latest when it moved or is a day old; the manifest it replaced is deleted by digest so the nightly collector takes it (the store keeps one).
Holds: every machine under a same-length pseudonym (roles, system, libc, arch, builds, capabilities, assignments, pins, settings, names of given secrets, how its declaration composes today), seats and holders, every module as the mesh holds it with source and build edges, the bus/store/node-engine versions as they run.
No secret, no address, no name: scrubber withholds secret-looking keys/values, maps addresses to documentation ranges, replaces machine/site/account/domain names everywhere.
facts, facts show, facts compose, facts export.
S14 facts-stale past two days (row moved from deferred to watched, with its suppression in the generated signals test).
Tests: no-secret/no-address/no-name test over a mesh with secrets, settings and a made credential; scrubber tests; live registry test (put, read by tag, replaced snapshot collected by the store's own collector run as the nightly runs it). Full suite green with postgres + nats (-p 1).
Merge first of the Phase 5 controller PRs. Rollout: a controller build; nothing to migrate.
hq to-be 45 §9 / ADR 0237 decision 1.
- The controller (lease holder) composes the facts snapshot every 10 min and keeps it in the artifact store as `facts:latest` when it moved or is a day old; the manifest it replaced is deleted by digest so the nightly collector takes it (the store keeps one).
- Holds: every machine under a same-length pseudonym (roles, system, libc, arch, builds, capabilities, assignments, pins, settings, names of given secrets, how its declaration composes today), seats and holders, every module as the mesh holds it with source and build edges, the bus/store/node-engine versions as they run.
- No secret, no address, no name: scrubber withholds secret-looking keys/values, maps addresses to documentation ranges, replaces machine/site/account/domain names everywhere.
- `facts`, `facts show`, `facts compose`, `facts export`.
- S14 `facts-stale` past two days (row moved from deferred to watched, with its suppression in the generated signals test).
Tests: no-secret/no-address/no-name test over a mesh with secrets, settings and a made credential; scrubber tests; live registry test (put, read by tag, replaced snapshot collected by the store's own collector run as the nightly runs it). Full suite green with postgres + nats (-p 1).
Merge first of the Phase 5 controller PRs. Rollout: a controller build; nothing to migrate.
Every check the mesh had was right about the world it was given and none was given
the mesh's: a real machine's name made an identity too long (263), the node-engine
refused what the catalogue check passed (236). The controller now composes what a
check needs - every machine under a pseudonym of its name's length, its roles,
system, builds, capabilities, assignments, pins, settings and how its declaration
composes; every seat, module and source; the bus, store and node-engine versions it
runs - with no secret, no address and no name, and keeps it in the artifact store
as facts:latest when it moved, or daily. The replaced snapshot's manifest is let go
of, so the nightly collector takes it. S14 raises facts-stale past two days.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#95 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@042874e0ce9a` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#95 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
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.
hq to-be 45 §9 / ADR 0237 decision 1.
facts:latestwhen it moved or is a day old; the manifest it replaced is deleted by digest so the nightly collector takes it (the store keeps one).facts,facts show,facts compose,facts export.facts-stalepast two days (row moved from deferred to watched, with its suppression in the generated signals test).Tests: no-secret/no-address/no-name test over a mesh with secrets, settings and a made credential; scrubber tests; live registry test (put, read by tag, replaced snapshot collected by the store's own collector run as the nightly runs it). Full suite green with postgres + nats (-p 1).
Merge first of the Phase 5 controller PRs. Rollout: a controller build; nothing to migrate.
Delivery
novox/mesh-controller@042874e0ce9a— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.