diff --git a/01-RESEARCH/001-module-domain-decomposition/00-overview.md b/01-RESEARCH/001-module-domain-decomposition/00-overview.md index 409419f4..0be76a0a 100644 --- a/01-RESEARCH/001-module-domain-decomposition/00-overview.md +++ b/01-RESEARCH/001-module-domain-decomposition/00-overview.md @@ -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. diff --git a/01-RESEARCH/006-mesh-from-scratch/00-overview.md b/01-RESEARCH/006-mesh-from-scratch/00-overview.md index d67e62f5..704ca940 100644 --- a/01-RESEARCH/006-mesh-from-scratch/00-overview.md +++ b/01-RESEARCH/006-mesh-from-scratch/00-overview.md @@ -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. diff --git a/01-RESEARCH/010-lab-inner-loop-cost/00-overview.md b/01-RESEARCH/010-lab-inner-loop-cost/00-overview.md index bba3f426..e66237ff 100644 --- a/01-RESEARCH/010-lab-inner-loop-cost/00-overview.md +++ b/01-RESEARCH/010-lab-inner-loop-cost/00-overview.md @@ -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. diff --git a/01-RESEARCH/012-the-minimum-viable-node/00-overview.md b/01-RESEARCH/012-the-minimum-viable-node/00-overview.md index b7530228..6e580db0 100644 --- a/01-RESEARCH/012-the-minimum-viable-node/00-overview.md +++ b/01-RESEARCH/012-the-minimum-viable-node/00-overview.md @@ -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. diff --git a/01-RESEARCH/017-a-mesh-that-heals-itself/00-overview.md b/01-RESEARCH/017-a-mesh-that-heals-itself/00-overview.md index f99a8220..9ecced2f 100644 --- a/01-RESEARCH/017-a-mesh-that-heals-itself/00-overview.md +++ b/01-RESEARCH/017-a-mesh-that-heals-itself/00-overview.md @@ -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. diff --git a/01-RESEARCH/019-a-warm-twin-of-the-running-mesh/00-overview.md b/01-RESEARCH/019-a-warm-twin-of-the-running-mesh/00-overview.md index 4315e3a8..342636c0 100644 --- a/01-RESEARCH/019-a-warm-twin-of-the-running-mesh/00-overview.md +++ b/01-RESEARCH/019-a-warm-twin-of-the-running-mesh/00-overview.md @@ -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). diff --git a/01-RESEARCH/026-the-graphical-session-as-modules/00-overview.md b/01-RESEARCH/026-the-graphical-session-as-modules/00-overview.md index d4ac8a03..4f93b5d6 100644 --- a/01-RESEARCH/026-the-graphical-session-as-modules/00-overview.md +++ b/01-RESEARCH/026-the-graphical-session-as-modules/00-overview.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). diff --git a/01-RESEARCH/027-the-system-layer-as-modules/00-overview.md b/01-RESEARCH/027-the-system-layer-as-modules/00-overview.md index 27abf9be..a95b1d40 100644 --- a/01-RESEARCH/027-the-system-layer-as-modules/00-overview.md +++ b/01-RESEARCH/027-the-system-layer-as-modules/00-overview.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. diff --git a/01-RESEARCH/037-the-catalogues-hard-coded-preferences/00-overview.md b/01-RESEARCH/037-the-catalogues-hard-coded-preferences/00-overview.md index 851e33fa..d9608253 100644 --- a/01-RESEARCH/037-the-catalogues-hard-coded-preferences/00-overview.md +++ b/01-RESEARCH/037-the-catalogues-hard-coded-preferences/00-overview.md @@ -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. diff --git a/03-DESIGN/01-to-be/06-the-controller.md b/03-DESIGN/01-to-be/06-the-controller.md index cf1e0e01..4dc7d9e9 100644 --- a/03-DESIGN/01-to-be/06-the-controller.md +++ b/03-DESIGN/01-to-be/06-the-controller.md @@ -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;