Issue 117: a module's own code is a container in one record and a process in another #110

Merged
jschoubben merged 3 commits from issue/117-a-modules-own-code-is-a-container-and-a-process into main 2026-09-26 12:14:38 +00:00
2 changed files with 25 additions and 4 deletions
Showing only changes of commit 82a6badc7c - Show all commits
@@ -6,7 +6,7 @@ fixed-by:
amended-design: amended-design:
--- ---
# 113 — Should the controller run as a container, or as a process the host supervises directly? # 114 — Should the controller run as a container, or as a process the host supervises directly?
## What was observed ## What was observed
@@ -71,3 +71,16 @@ checked.
a controller outage tolerable regardless of which resource type it is? a controller outage tolerable regardless of which resource type it is?
- If the answer is "keep it a container," what does that answer, precisely, that this issue asked — - If the answer is "keep it a container," what does that answer, precisely, that this issue asked —
so the next person who notices the same asymmetry finds it answered rather than open again? so the next person who notices the same asymmetry finds it answered rather than open again?
## The general case
[Issue 117](../117-a-modules-own-code-is-a-container-and-a-process/00-report.md) is the same
question asked of every module rather than of the controller: a module's own code is a `container`
in [ADR 0047](../../02-DECISIONS/0047-a-module-runs-its-code-as-its-own-process-with-its-own-account.md)
and a `process` in the to-be design, and no record moves it. Its
[diagnosis](../117-a-modules-own-code-is-a-container-and-a-process/01-diagnosis.md) answers the
first open question above: the host's `process` shape is built, applied and tested, including the
restart and run-to-completion semantics — so this would not need host-side work first.
The two do not collapse into one. The controller is not a code-carrying sidecar, and `network: host`
is what makes the asymmetry visible here and nowhere else.
@@ -150,12 +150,20 @@ controller is declared a `container` with `network: host` — so container netwo
property that resource type usually buys, is not in use — and it asks what `type: container` buys property that resource type usually buys, is not in use — and it asks what `type: container` buys
that `type: process` would not. that `type: process` would not.
It is unmerged and numbered 113, which is taken. A sibling branch, It was unmerged and numbered 113, which is taken. A sibling branch,
`issue/113-record-the-repin-and-fold-114`, is why `114` is free. `issue/113-record-the-repin-and-fold-114`, is why `114` was free.
**That report and this one are the instance and the general condition**, and they do not conflict: **That report and this one are the instance and the general condition**, and they do not conflict:
it asks about one module that is not a code-carrying sidecar at all, and reaches the same question it asks about one module that is not a code-carrying sidecar at all, and reaches the same question
from the opposite end. from the opposite end. So it lands in this change as
[issue 114](../114-should-the-controller-be-a-container-or-a-process/00-report.md), its commit and
authorship intact, with a section pointing here — rather than being folded in and losing the
`network: host` observation, which is its own and is not reproduced above.
This diagnosis answers its first open question. The host's `process` shape does support what
[ADR 0005](../../02-DECISIONS/0005-the-node-host.md) describes for the host's own launcher — the
unit, the timer, restart, and run-to-completion gating are implemented and tested — so that report
does not need host-side work before it can be decided.
## What is located, and what is not ## What is located, and what is not