Design 32: what shipped today, and the records it rests on #163

Merged
mesh-admin merged 1 commits from design/28-and-32-what-shipped into main 2026-09-28 14:50:44 +00:00
@@ -1,11 +1,20 @@
--- ---
layer: to-be layer: to-be
status: proposed status: in-progress
code: [] code:
- mesh-controller internal/catalogue/declaration.go
- mesh-controller internal/catalogue/manifest.go
- mesh-controller internal/link/serve.go
- mesh-controller internal/link/bus.go
- mesh-controller internal/broker/nats.go
- mesh-controller internal/inventory/nodes.go
- mesh-host internal/apply/apply.go
- mesh-tools src/main.ts
- mesh-catalog modules/mesh-catalog
updated: 2026-09-28 updated: 2026-09-28
decisions: decisions:
- 02-DECISIONS/0126-a-module-declares-its-own-seats.md - 02-DECISIONS/0126-a-module-declares-its-own-seats.md
- 02-DECISIONS/0127-amqp-is-a-provision-not-the-bus.md - 02-DECISIONS/0131-everything-on-the-mesh-speaks-to-the-broker-seat.md
- 02-DECISIONS/0128-the-mesh-bus-is-required-not-ambient.md - 02-DECISIONS/0128-the-mesh-bus-is-required-not-ambient.md
- 02-DECISIONS/0106-the-bus-is-nats.md - 02-DECISIONS/0106-the-bus-is-nats.md
- 02-DECISIONS/0041-events-are-a-relationship.md - 02-DECISIONS/0041-events-are-a-relationship.md
@@ -261,8 +270,8 @@ queue.
and publishes it last-per-subject. A node that was away gets exactly the current one, never a and publishes it last-per-subject. A node that was away gets exactly the current one, never a
queue of superseded ones, and a replayed older one is refused by sequence. queue of superseded ones, and a replayed older one is refused by sequence.
**A version prepares its state before it runs.** A module version may declare an entrypoint that brings **A version prepares its state before it runs.** *Built 2026-09-28.* A module version may declare an
its state to the shape that version needs — the same vocabulary as the entrypoints it declares for its entrypoint that brings its state to the shape that version needs — the same vocabulary as the entrypoints it declares for its
tools and its provisioner, and nothing about how a machine runs it. The mesh runs that entrypoint as it tools and its provisioner, and nothing about how a machine runs it. The mesh runs that entrypoint as it
runs the module's own code, to completion, in the module's own context, and a version whose preparation runs the module's own code, to completion, in the module's own context, and a version whose preparation
did not succeed does not run: the step gates that module and nothing else on the machine did not succeed does not run: the step gates that module and nothing else on the machine
@@ -277,7 +286,7 @@ mesh provisions is per consumer and preparation is too. No level to choose, and
not to an address it was given at genesis. Held and retried while the store restarts not to an address it was given at genesis. Held and retried while the store restarts
([ADR 0083](../../02-DECISIONS/0083-one-push-leaves-the-mesh-consistent.md)). ([ADR 0083](../../02-DECISIONS/0083-one-push-leaves-the-mesh-consistent.md)).
**And the mesh says what it applied.** A report is control traffic only the control plane reads, so the **And the mesh says what it applied.** *Built 2026-09-28.* A report is control traffic only the control plane reads, so the
chain above went dark at the moment it touched a machine: nothing said which version a machine now runs, chain above went dark at the moment it touched a machine: nothing said which version a machine now runs,
or that it refused to. The control plane states those as facts under its own seat's namespace, when what or that it refused to. The control plane states those as facts under its own seat's namespace, when what
a machine runs changes rather than on every convergence pass, and anything that cares subscribes the way a machine runs changes rather than on every convergence pass, and anything that cares subscribes the way