Keep 012 and 027 open and give every leftover of the closed efforts an issue (issue 408)
The review found questions no record decides: 012's minimum-viable-node half and 027's packaging, secrets, sizing and leftovers questions, so both stay active. Where the record lives (006) is issue 414, and 037's two other leftovers are issues 415 and 416; to-be 06 now points at issue 414.
This commit is contained in:
@@ -60,7 +60,7 @@ Tracked in [`analysis.md`](analysis.md) under "Open questions".
|
||||
|
||||
## Deliberately not decided
|
||||
|
||||
Recorded so they are not mistaken for oversights. Each is open, and each comes out of
|
||||
Recorded so they are not mistaken for oversights. Each was open, and each came out of
|
||||
[ADR 0001](../../02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md); how each was answered
|
||||
is under *What it became* below.
|
||||
|
||||
|
||||
@@ -110,9 +110,10 @@ the catalogue where modules genuinely change together under one intent. The skel
|
||||
|
||||
*Closed 2026-10-10.* The skeleton's moves became decisions and designs, and its open questions were settled by them.
|
||||
|
||||
- **Where the record lives**: contexts integrate through events ([ADR 0041](../../02-DECISIONS/0041-events-are-a-relationship.md)) carried by the bus
|
||||
([ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md)), and the foundation is exactly a store and a bus ([ADR 0033](../../02-DECISIONS/0033-the-substrate-is-a-store-and-a-broker.md), after [ADR 0006](../../02-DECISIONS/0006-the-substrate-and-the-control-plane.md) and
|
||||
[ADR 0028](../../02-DECISIONS/0028-the-substrate-supplies-the-control-plane-and-nothing-else.md)). [to-be 06](../../03-DESIGN/01-to-be/06-the-controller.md) still names the record as open and points here; that sentence predates these records.
|
||||
- **Where the record lives** is not decided. Events became a declared relationship ([ADR 0041](../../02-DECISIONS/0041-events-are-a-relationship.md)) carried by
|
||||
the bus ([ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md)), and the foundation is exactly a store and a bus ([ADR 0033](../../02-DECISIONS/0033-the-substrate-is-a-store-and-a-broker.md), after
|
||||
[ADR 0006](../../02-DECISIONS/0006-the-substrate-and-the-control-plane.md) and [ADR 0028](../../02-DECISIONS/0028-the-substrate-supplies-the-control-plane-and-nothing-else.md)), but no record says what the record is or where it lives. It is tracked
|
||||
by issue 414.
|
||||
- **One repository per tier or per context**: [ADR 0037](../../02-DECISIONS/0037-where-a-module-lives.md).
|
||||
- **Does `feature` survive**: no. [ADR 0040](../../02-DECISIONS/0040-what-a-module-is.md) defines a module by the software it delivers, not as a bucket of
|
||||
features; *artifact* became the word for what a build produces.
|
||||
|
||||
@@ -68,5 +68,6 @@ something the mesh already does.
|
||||
*Closed 2026-10-10.* The cost was measured and the answer is built in. The lab's own installation requires a copy-on-write
|
||||
pool and refuses a machine without one ([to-be 04](../../03-DESIGN/01-to-be/04-lab-installation.md), [ADR 0172](../../02-DECISIONS/0172-the-lab-is-a-module-and-runs-a-bed-when-the-mesh-asks.md)), and the lifecycle design
|
||||
([to-be 03](../../03-DESIGN/01-to-be/03-scenario-lifecycle.md), under [ADR 0016](../../02-DECISIONS/0016-the-lab.md)) rests on the measured numbers. Two machines were measured as well as one,
|
||||
and boot concurrently. One small question stays unmeasured: whether a scenario snapshot needs its machines
|
||||
stopped to restore a coherent mesh.
|
||||
and boot concurrently ([as-is 11](../../03-DESIGN/00-as-is/11-the-lab.md)). The integration test answered
|
||||
whether a snapshot needs its machines stopped: no, but they must be flushed first ([to-be 03](../../03-DESIGN/01-to-be/03-scenario-lifecycle.md)).
|
||||
Why the second full-copy snapshot was slower stopped mattering once snapshots were copy-on-write.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
status: graduated
|
||||
status: active
|
||||
initiated: 2026-08-26
|
||||
touches:
|
||||
- 02-DECISIONS/0005-the-node-host.md
|
||||
@@ -10,15 +10,6 @@ touches:
|
||||
- 02-DECISIONS/0078-the-store-and-broker-are-modules.md
|
||||
- 02-DECISIONS/0088-the-foundation-filters-before-anything-listens.md
|
||||
- 02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md
|
||||
became:
|
||||
- 02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md
|
||||
- 02-DECISIONS/0101-a-machines-own-resolver-does-not-make-it-in-use.md
|
||||
- 02-DECISIONS/0105-the-mesh-adopts-the-predecessors-tunnel-in-place.md
|
||||
- 02-DECISIONS/0118-undeclaring-gives-a-unit-back-the-state-it-was-found-in.md
|
||||
- 02-DECISIONS/0163-taking-a-module-over-is-a-comparison.md
|
||||
- 02-DECISIONS/0182-inside-a-home-the-mesh-owns-what-it-places-and-holds-the-rest-as-found.md
|
||||
- 02-DECISIONS/0262-a-preference-has-a-default-in-its-manifest-and-the-operators-own-value-has-none.md
|
||||
- 03-DESIGN/01-to-be/09-the-node-lifecycle.md
|
||||
---
|
||||
|
||||
# 012 — The minimum viable node, and adopting what is already there
|
||||
@@ -220,11 +211,3 @@ it. Measured on the control-node, and weighed against the alternatives, in
|
||||
| How does a bundle stay true between building and applying? | It is built against a scan of the target. The machine can move between the scan and the apply, so the host has to verify rather than assume — and fail plainly when the bundle no longer fits. |
|
||||
| What cannot be precomputed at all? | Anything built from source on the target still needs a toolchain and a network at that moment. Tailoring moves that cost rather than removing it, and *minimal viable* has to be honest about what it cannot ship ahead. |
|
||||
| Does presence differencing understate the gap? | Knowing a package manager is installed does not say it is the version the mesh needs. A difference computed on presence alone is optimistic. |
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* A machine in use is adopted before it is converged ([ADR 0100](../../02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md), refined by [ADR 0101](../../02-DECISIONS/0101-a-machines-own-resolver-does-not-make-it-in-use.md) and
|
||||
[ADR 0105](../../02-DECISIONS/0105-the-mesh-adopts-the-predecessors-tunnel-in-place.md)), designed in [to-be 09](../../03-DESIGN/01-to-be/09-the-node-lifecycle.md). Taking a module over is a comparison against the kept original
|
||||
([ADR 0163](../../02-DECISIONS/0163-taking-a-module-over-is-a-comparison.md)), and undeclaring gives the original back ([ADR 0118](../../02-DECISIONS/0118-undeclaring-gives-a-unit-back-the-state-it-was-found-in.md)). Inside a home the mesh owns what it
|
||||
places and holds the rest as found ([ADR 0182](../../02-DECISIONS/0182-inside-a-home-the-mesh-owns-what-it-places-and-holds-the-rest-as-found.md)). Whether a value is required or only preferred is
|
||||
[ADR 0262](../../02-DECISIONS/0262-a-preference-has-a-default-in-its-manifest-and-the-operators-own-value-has-none.md). The briefing and the failed line were questions for the migration, which is finished.
|
||||
|
||||
@@ -63,6 +63,8 @@ the provisioner harness, and rotation, which is proposed alongside to-be 27 as A
|
||||
core's nine rules, designed in [to-be 45](../../03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md); a healer acts on what observation raised ([ADR 0231](../../02-DECISIONS/0231-a-healer-acts-on-what-observation-raised-and-only-observation-says-it-worked.md)); a
|
||||
provider that keeps failing a consumer is reported ([ADR 0224](../../02-DECISIONS/0224-a-provider-that-keeps-failing-a-consumer-is-a-problem-the-controller-reports.md)); a module says how it is healthy
|
||||
([ADR 0240](../../02-DECISIONS/0240-a-module-says-how-it-is-healthy-and-the-node-engine-judges-it.md)); the mesh holds a conversation with its operator ([ADR 0234](../../02-DECISIONS/0234-the-mesh-holds-a-conversation-with-its-operator.md), [ADR 0253](../../02-DECISIONS/0253-a-condition-says-itself-to-the-operator-in-plain-words-beside-its-summary.md)); the bus was built
|
||||
in steps ([ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md), [to-be 25](../../03-DESIGN/01-to-be/25-the-bus-on-nats.md), [to-be 28](../../03-DESIGN/01-to-be/28-building-the-bus.md)). The silent failures were classified by research 031,
|
||||
which this effort fed. One item is not decided: a condition that needs judgement, handed to an agent as
|
||||
in steps ([ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md), [to-be 25](../../03-DESIGN/01-to-be/25-the-bus-on-nats.md), [to-be 28](../../03-DESIGN/01-to-be/28-building-the-bus.md)). Of the two measurements this effort owed, the silent failures were classified by research 031,
|
||||
which this effort fed. The inventory of every loop was not made as a list; instead
|
||||
[ADR 0231](../../02-DECISIONS/0231-a-healer-acts-on-what-observation-raised-and-only-observation-says-it-worked.md) makes it the rule that a healer acts on what observation raised and only observation says
|
||||
it worked. One item is not decided: a condition that needs judgement, handed to an agent as
|
||||
work. It is tracked by issue 409.
|
||||
|
||||
@@ -3,7 +3,6 @@ status: abandoned
|
||||
initiated: 2026-10-02
|
||||
touches: [lab, the lab module, the catalogue, assignments, settings, the controller's store]
|
||||
became:
|
||||
- 02-DECISIONS/0149-the-live-mesh-is-the-test-bed.md
|
||||
- 02-DECISIONS/0237-a-change-is-judged-against-the-mesh-that-runs-before-it-merges-on-the-build-seat.md
|
||||
- 02-DECISIONS/0238-a-commit-is-the-build-at-hand-one-commit-one-change-plan-checked-off-the-trunk-and-published-only-on-it.md
|
||||
- 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md
|
||||
@@ -60,7 +59,7 @@ catalogue are the nearest existing thing, and the first to compare against.
|
||||
|
||||
## What overtook it
|
||||
|
||||
*Closed 2026-10-10.* No twin was built. The live mesh is the test bed ([ADR 0149](../../02-DECISIONS/0149-the-live-mesh-is-the-test-bed.md)). The half of the problem that a twin was
|
||||
*Closed 2026-10-10.* No twin was built. The live mesh was already the test bed ([ADR 0149](../../02-DECISIONS/0149-the-live-mesh-is-the-test-bed.md)). The half of the problem that a twin was
|
||||
for, a change composing wrongly for a real machine, is the merge gate: a change is judged against the
|
||||
mesh that runs before it merges ([ADR 0237](../../02-DECISIONS/0237-a-change-is-judged-against-the-mesh-that-runs-before-it-merges-on-the-build-seat.md), [ADR 0238](../../02-DECISIONS/0238-a-commit-is-the-build-at-hand-one-commit-one-change-plan-checked-off-the-trunk-and-published-only-on-it.md)), from a snapshot of the mesh's facts. Replaying
|
||||
incidents is carried by the core's scripted replays in [to-be 45](../../03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md).
|
||||
|
||||
@@ -16,6 +16,7 @@ became:
|
||||
- 02-DECISIONS/0210-a-tools-configuration-is-its-seat-holders-and-every-other-module-extends-it-through-the-seat.md
|
||||
- 02-DECISIONS/0211-a-machines-power-is-a-node-seat-its-moments-take-contributions-and-its-states-are-events.md
|
||||
- 02-DECISIONS/0212-a-seat-says-what-it-receives-and-the-machines-hotkeys-are-a-seat.md
|
||||
- 02-DECISIONS/0207-a-module-depends-on-the-node-seats-that-apply-its-resources.md
|
||||
- 02-DECISIONS/0215-the-machines-message-bus-is-a-node-seat-and-is-never-restarted-live.md
|
||||
- 02-DECISIONS/0255-the-bar-takes-blocks-as-data-from-the-module-that-knows-the-hardware-placed-where-the-machine-has-it.md
|
||||
- 02-DECISIONS/0260-a-bar-block-shows-a-value-its-module-keeps-on-the-bus-and-no-module-reads-anothers-files.md
|
||||
@@ -86,4 +87,5 @@ package and a file is unfinished. The tools are catalogued in
|
||||
*Closed 2026-10-10.* The graphical session is one module per piece on the mesh's seats ([ADR 0208](../../02-DECISIONS/0208-the-graphical-session-is-one-module-per-piece-on-the-meshs-seats.md)): a tool's configuration
|
||||
is its seat holder's ([ADR 0210](../../02-DECISIONS/0210-a-tools-configuration-is-its-seat-holders-and-every-other-module-extends-it-through-the-seat.md)), the hotkeys and the power are seats ([ADR 0212](../../02-DECISIONS/0212-a-seat-says-what-it-receives-and-the-machines-hotkeys-are-a-seat.md), [ADR 0211](../../02-DECISIONS/0211-a-machines-power-is-a-node-seat-its-moments-take-contributions-and-its-states-are-events.md)), the
|
||||
machine's message bus is a seat never restarted live ([ADR 0215](../../02-DECISIONS/0215-the-machines-message-bus-is-a-node-seat-and-is-never-restarted-live.md)), and the bar takes blocks as data from
|
||||
the bus ([ADR 0255](../../02-DECISIONS/0255-the-bar-takes-blocks-as-data-from-the-module-that-knows-the-hardware-placed-where-the-machine-has-it.md), [ADR 0260](../../02-DECISIONS/0260-a-bar-block-shows-a-value-its-module-keeps-on-the-bus-and-no-module-reads-anothers-files.md)). The order of building and rolling out is [to-be 42](../../03-DESIGN/01-to-be/42-the-machines-modules-in-order.md).
|
||||
the bus ([ADR 0255](../../02-DECISIONS/0255-the-bar-takes-blocks-as-data-from-the-module-that-knows-the-hardware-placed-where-the-machine-has-it.md), [ADR 0260](../../02-DECISIONS/0260-a-bar-block-shows-a-value-its-module-keeps-on-the-bus-and-no-module-reads-anothers-files.md)). A module depends on the node seats that apply its
|
||||
resources ([ADR 0207](../../02-DECISIONS/0207-a-module-depends-on-the-node-seats-that-apply-its-resources.md)), which answers whether a held seat gates another module. The order of building and rolling out is [to-be 42](../../03-DESIGN/01-to-be/42-the-machines-modules-in-order.md).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
status: graduated
|
||||
status: active
|
||||
initiated: 2026-10-04
|
||||
touches:
|
||||
- 02-DECISIONS/0165-container-runtime-is-what-a-machine-can-run-and-a-running-runtime-is-its-holders-health.md
|
||||
@@ -8,14 +8,7 @@ touches:
|
||||
- 02-DECISIONS/0205-software-the-distribution-does-not-package-ships-as-a-pinned-archive-of-the-module.md
|
||||
- 03-DESIGN/01-to-be/37-the-operators-machine.md
|
||||
- 03-DESIGN/01-to-be/38-building-the-operators-machine.md
|
||||
became:
|
||||
- 02-DECISIONS/0165-container-runtime-is-what-a-machine-can-run-and-a-running-runtime-is-its-holders-health.md
|
||||
- 02-DECISIONS/0166-the-container-runtime-is-a-node-seat-and-the-host-creates-containers-through-its-holder.md
|
||||
- 02-DECISIONS/0205-software-the-distribution-does-not-package-ships-as-a-pinned-archive-of-the-module.md
|
||||
- 02-DECISIONS/0207-a-module-depends-on-the-node-seats-that-apply-its-resources.md
|
||||
- 02-DECISIONS/0211-a-machines-power-is-a-node-seat-its-moments-take-contributions-and-its-states-are-events.md
|
||||
- 02-DECISIONS/0215-the-machines-message-bus-is-a-node-seat-and-is-never-restarted-live.md
|
||||
- 03-DESIGN/01-to-be/42-the-machines-modules-in-order.md
|
||||
became: []
|
||||
---
|
||||
|
||||
# 027 — The system layer as modules
|
||||
@@ -69,11 +62,3 @@ package and a file is unfinished. The tools are catalogued in
|
||||
- [02 — Candidates and questions](02-candidates-and-questions.md)
|
||||
- [03 — The account's own tools](03-the-accounts-own-tools.md): `~/.ssh` as one module's, scripts on every machine, the keyring, the laptop's power management, mail as events
|
||||
- The predecessor's lessons, shared with research 026: [026/03](../026-the-graphical-session-as-modules/03-what-the-predecessor-taught.md)
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* The container runtime is a node seat ([ADR 0165](../../02-DECISIONS/0165-container-runtime-is-what-a-machine-can-run-and-a-running-runtime-is-its-holders-health.md), [ADR 0166](../../02-DECISIONS/0166-the-container-runtime-is-a-node-seat-and-the-host-creates-containers-through-its-holder.md)); software the distribution does not
|
||||
package ships as a pinned archive of its module ([ADR 0205](../../02-DECISIONS/0205-software-the-distribution-does-not-package-ships-as-a-pinned-archive-of-the-module.md)); a module depends on the node seats that
|
||||
apply its resources ([ADR 0207](../../02-DECISIONS/0207-a-module-depends-on-the-node-seats-that-apply-its-resources.md)); power and the machine's message bus are seats ([ADR 0211](../../02-DECISIONS/0211-a-machines-power-is-a-node-seat-its-moments-take-contributions-and-its-states-are-events.md),
|
||||
[ADR 0215](../../02-DECISIONS/0215-the-machines-message-bus-is-a-node-seat-and-is-never-restarted-live.md)). The order and the remaining modules are [to-be 42](../../03-DESIGN/01-to-be/42-the-machines-modules-in-order.md); the parts of the container-runtime
|
||||
records not yet built are tracked by issue 398.
|
||||
|
||||
@@ -44,6 +44,6 @@ the operator's yes.
|
||||
*Closed 2026-10-10.* The survey was the deliverable, under [ADR 0262](../../02-DECISIONS/0262-a-preference-has-a-default-in-its-manifest-and-the-operators-own-value-has-none.md), and each conversion is a change to its module made on
|
||||
the operator's yes. Three things the survey found are not conversions: the rows marked *(shell)* wait on
|
||||
the controller filling `${setting:…}` in login-shell code, tracked by issue 410; a value several modules
|
||||
share (the interface font size, the accent colour) needs a decision on one shared preference; and the
|
||||
backup program's retention and the container runtime's log rotation need their programs to read a file,
|
||||
or a new default, first.
|
||||
share (the interface font size, the accent colour) needs a decision on one shared preference, tracked
|
||||
by issue 415; and the backup program's retention and the container runtime's log rotation need their
|
||||
programs to read a file, or a new default, first, tracked by issue 416.
|
||||
|
||||
@@ -3,7 +3,7 @@ layer: to-be
|
||||
status: in-progress
|
||||
code:
|
||||
- mesh-controller
|
||||
updated: 2026-08-31
|
||||
updated: 2026-10-10
|
||||
decisions:
|
||||
- 02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md
|
||||
- 02-DECISIONS/0005-the-node-host.md
|
||||
@@ -66,8 +66,8 @@ something infrastructure*. `ai` is folded into `config`: a provider licence is a
|
||||
|
||||
**`record` is an open question rather than an eighth entry.** Contexts integrate through it
|
||||
([ADR 0008](../../02-DECISIONS/0008-a-context-owns-its-store.md)), which makes it load-bearing,
|
||||
and [research 006](../../01-RESEARCH/006-mesh-from-scratch/skeleton.md) leaves *where it lives*
|
||||
unresolved — putting it in the foundation risks recreating the circularity the tier design just
|
||||
and *where it lives* is unresolved, tracked by issue 414 since
|
||||
[research 006](../../01-RESEARCH/006-mesh-from-scratch/skeleton.md) closed — putting it in the foundation risks recreating the circularity the tier design just
|
||||
removed. Listing it here would settle by naming what has not been settled by arguing.
|
||||
|
||||
**One of the seven is built.** `inventory` owns a database of that name and holds the node records;
|
||||
|
||||
Reference in New Issue
Block a user