From db71b83711ebfaddadf658105cb1aa0a796ba5dd Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 4 Oct 2026 02:19:09 +0200 Subject: [PATCH] Issues 213 and 223 resolved: the controller runs as a process, and genesis hands over to it --- .../00-report.md | 21 +++++++++++++++++-- .../00-report.md | 14 ++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md b/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md index c590b8a..0a4123a 100644 --- a/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md +++ b/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md @@ -1,10 +1,14 @@ --- -status: open +status: resolved opened: 2026-10-03 located-in: - mesh-controller - - mesh-catalog + - mesh-host fixed-by: + - mesh-host#86 + - mesh-controller#252 + - mesh-controller#253 + - mesh-host#88 amended-design: --- @@ -61,3 +65,16 @@ until the first lets go, and all plan work holds one advisory lock. mesh-control controller's manifest as a Go bundle and a process. It waits on [issue 223](../223-a-new-mesh-installs-its-controller-as-a-container/00-report.md), because with it a new mesh cannot be installed. + +## Resolved + +Proven 2026-10-04 on the control machine: after the manifest change was merged and pushed, the host +created the controller's account, ran its preparation step, started the controller as a process, +found it up across both checks and removed the container. The controller now runs as its own account +from its bundle, no controller container remains, its seat answered throughout, and the merge's own +plan finished all three tiers under the new process. + +One fault on the way, fixed before it could leave two controllers or none: the host read the account +not existing yet as a user database that did not answer — it matched the exit as text in a wording +its own runner did not use — so the first apply stopped at the account and the container kept serving, +which is the handover's safe failure (mesh-host#88). diff --git a/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md b/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md index 1ea570c..00e9fae 100644 --- a/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md +++ b/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md @@ -1,9 +1,10 @@ --- -status: located +status: resolved opened: 2026-10-04 located-in: - mesh-host fixed-by: + - mesh-host#87 amended-design: --- @@ -46,3 +47,14 @@ is the process form, and the controller answers its seat's verbs at the end. Option 2, [ADR 0200](../../02-DECISIONS/0200-genesis-pivots-to-the-controller-as-a-container-and-the-first-push-hands-it-to-a-process.md): genesis pivots to the controller as a container recorded under the name the process `replaces`, and the first push hands it over. + +## Resolved + +Built as [ADR 0200](../../02-DECISIONS/0200-genesis-pivots-to-the-controller-as-a-container-and-the-first-push-hands-it-to-a-process.md) +decided: genesis reads only the controller's process from the manifest, builds the controller's image +from its repository, and pivots to a container of its own shape recorded under the id the process +`replaces`; an older controller in the image form still builds as before. **How it is checked:** the +installer's tests build the genesis form from the controller's real manifest, and apply the +controller's first process declaration over the recorded container with the host's own apply — the +process starts, the container is removed, one controller remains. A real install from nothing has not +been run since; the handover it ends in was proven live on the running mesh (issue 213).