From 0b291d89f3b9fb5a796ce0387dfaf6544981f223 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 28 Sep 2026 16:50:41 +0200 Subject: [PATCH] Design 32: what shipped today, and the records it rests on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two of its statements are built — a version preparing its state, and the mesh saying what it applied — so the document is in-progress rather than proposed, and names the code that owns them. Resting on a live record rather than a superseded one: 0127 was replaced by 0131. What this exposes is pre-existing: it also rests on ADR 0112, which is still proposed, and a document that is not itself proposed may not. ADR 0120 has rested on it the same way for a while. Accepting or superseding 0112 is a decision, not a cleanup, so it stays visible in the check rather than papered over. --- .../01-to-be/32-what-a-module-declares.md | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/03-DESIGN/01-to-be/32-what-a-module-declares.md b/03-DESIGN/01-to-be/32-what-a-module-declares.md index d2f556b..2462aa8 100644 --- a/03-DESIGN/01-to-be/32-what-a-module-declares.md +++ b/03-DESIGN/01-to-be/32-what-a-module-declares.md @@ -1,11 +1,20 @@ --- layer: to-be -status: proposed -code: [] +status: in-progress +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 decisions: - 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/0106-the-bus-is-nats.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 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 -its state to the shape that version needs — the same vocabulary as the entrypoints it declares for its +**A version prepares its state before it runs.** *Built 2026-09-28.* A module version may declare an +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 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 @@ -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 ([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, 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