From 709c095387cb36a0cd74acd12956d1e99c03f68d Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 29 Sep 2026 00:32:14 +0200 Subject: [PATCH] =?UTF-8?q?ADR=200141:=20a=20progressive=20insight=20?= =?UTF-8?q?=E2=80=94=20the=20delivery=20is=20not=20'nothing=20new'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The record claimed a version reaches a machine as an ordinary archive with nothing new needed. Two things it needs do not exist: no toolchain can compile the host (the list is typescript and python, and the control plane, also Go, is built as an image from a Dockerfile instead), and nothing interpolates a built version into a resource path, so nothing can ask for .../versions//. The decision, the options weighed and every consequence stand — the host half is merged and tested. What was understated was the cost, so it is corrected in place and dated rather than superseded. --- ...141-the-host-delivers-its-own-successor.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/02-DECISIONS/0141-the-host-delivers-its-own-successor.md b/02-DECISIONS/0141-the-host-delivers-its-own-successor.md index d1f58e5..c32bd6c 100644 --- a/02-DECISIONS/0141-the-host-delivers-its-own-successor.md +++ b/02-DECISIONS/0141-the-host-delivers-its-own-successor.md @@ -83,6 +83,32 @@ operating system. facts it states about itself. Without it nothing can say a machine is behind, so "every machine current with its source" cannot include the host. +## Progressive insight — 2026-09-29, the same day + +**The delivery is not "nothing new", and this record said it was.** The decision above stands and is +built: versions side by side, the newest runs, the running host stands aside between reconciles, a +completed reconcile retires what is older than the predecessor, rollback picks a directory. What was +wrong was a claim about how a version reaches a machine. The paragraph on delivery said the +declaration "names it like any other archive… nothing new travels, no new resource kind"; the second +half is true and the first is not, because two things the delivery needs do not exist: + +- **Nothing can compile it.** A `bundle` artifact is compiled by a closed list of toolchains — + typescript and python — whose own comment says adding a language is a decision, because a language + used by *modules* needs an SDK carrying the broker client, the event envelope and tool serving. The + host uses none of that: it is what applies modules, not one of them. So the obligation that list + warns about attaches to a module written in a language, not to the language being buildable, and + the control plane — also written in Go — is built as an image from a Dockerfile rather than through + a toolchain at all. +- **A version cannot reach the path.** An `archive` resource names a fixed path in the manifest, and + nothing interpolates the built version into it, so nothing can ask for + `…/versions//`. + +Neither changes what was decided, which options were weighed, or any consequence: the shape is +unaffected and the host half is merged and tested. What it changes is the cost, which this record +understated as none. The remaining work is a way to build the host and a way to name a version in a +path, and until both exist nothing delivers a version and every machine takes the fallback — which is +what every machine does today. + ## Consequences - **The host becomes a build target and a module** — a module whose resource is the next host, applied