Merge pull request 'Close ten research efforts their decisions already settled (issue 408)' (#298) from fix/408-close-settled-research into main
This commit was merged in pull request #298.
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-08-22
|
||||
touches: [03-DESIGN/00-as-is/02-modules-and-manifests.md, 03-DESIGN/00-as-is/10-module-catalogue.md, 03-DESIGN/01-to-be/00-work-breakdown.md]
|
||||
became: [02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md]
|
||||
became:
|
||||
- 02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md
|
||||
- 02-DECISIONS/0009-modules-and-the-graph.md
|
||||
- 02-DECISIONS/0037-where-a-module-lives.md
|
||||
- 02-DECISIONS/0039-what-the-sdk-holds-and-refuses.md
|
||||
- 02-DECISIONS/0173-the-operators-machine-is-the-meshs-and-a-module-is-what-it-declares.md
|
||||
- 02-DECISIONS/0181-the-operator-account-is-a-node-fact-and-a-home-is-a-placement-root.md
|
||||
- 02-DECISIONS/0244-the-mesh-is-described-in-domains-and-one-word-names-one-thing.md
|
||||
---
|
||||
|
||||
# 001 — Module domain decomposition
|
||||
@@ -53,9 +60,9 @@ 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
|
||||
[ADR 0001](../../02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md); this effort stays
|
||||
`active` until they are answered.
|
||||
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.
|
||||
|
||||
| Question | Status |
|
||||
|---|---|
|
||||
@@ -65,3 +72,16 @@ Recorded so they are not mistaken for oversights. Each is open, and each comes o
|
||||
| What the shared library keeps after extraction. | Open. Phase 3. |
|
||||
| Where human agent modality is recorded — which user, on which node, a human agent acts as. | Open. Required by the model; not yet stored. |
|
||||
| Which domains the modules outside the platform core group into. | Open, from [ADR 0009](../../02-DECISIONS/0009-modules-and-the-graph.md), which settles the principle and deliberately not the list. |
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* Every question left open was answered by a later record, or stopped applying.
|
||||
|
||||
- **The scheduler and the executor** were questions about two of the predecessor's modules. The predecessor is
|
||||
retired and the operator's machines are the mesh's ([ADR 0173](../../02-DECISIONS/0173-the-operators-machine-is-the-meshs-and-a-module-is-what-it-declares.md)), so neither module exists to place.
|
||||
- **One catalogue repository or many**: [ADR 0037](../../02-DECISIONS/0037-where-a-module-lives.md) — the mesh's own parts live in the repositories that
|
||||
build them, software the world made is described in one catalogue, and an application carries its
|
||||
description at its own root.
|
||||
- **What the shared library keeps**: [ADR 0039](../../02-DECISIONS/0039-what-the-sdk-holds-and-refuses.md) — the stable spine, and never a module's own client or tools.
|
||||
- **Which user, on which node, a person acts as**: [ADR 0181](../../02-DECISIONS/0181-the-operator-account-is-a-node-fact-and-a-home-is-a-placement-root.md) — the operator account is a fact of the node.
|
||||
- **Which domains the modules group into**: [ADR 0009](../../02-DECISIONS/0009-modules-and-the-graph.md) settled the principle and [ADR 0244](../../02-DECISIONS/0244-the-mesh-is-described-in-domains-and-one-word-names-one-thing.md) the domains.
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-08-23
|
||||
touches:
|
||||
- 02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md
|
||||
- 02-DECISIONS/0009-modules-and-the-graph.md
|
||||
- 03-DESIGN/00-as-is/00-overview.md
|
||||
- 03-DESIGN/01-to-be/00-work-breakdown.md
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0004-a-node-and-how-it-joins.md
|
||||
- 02-DECISIONS/0005-the-node-host.md
|
||||
- 02-DECISIONS/0006-the-substrate-and-the-control-plane.md
|
||||
- 02-DECISIONS/0028-the-substrate-supplies-the-control-plane-and-nothing-else.md
|
||||
- 02-DECISIONS/0033-the-substrate-is-a-store-and-a-broker.md
|
||||
- 02-DECISIONS/0037-where-a-module-lives.md
|
||||
- 02-DECISIONS/0040-what-a-module-is.md
|
||||
- 02-DECISIONS/0041-events-are-a-relationship.md
|
||||
- 02-DECISIONS/0106-the-bus-is-nats.md
|
||||
- 03-DESIGN/01-to-be/05-the-node-host.md
|
||||
- 03-DESIGN/01-to-be/06-the-controller.md
|
||||
- 03-DESIGN/01-to-be/07-the-foundation.md
|
||||
- 03-DESIGN/01-to-be/08-connectivity.md
|
||||
---
|
||||
|
||||
# 006 — The mesh designed from nothing
|
||||
@@ -72,9 +85,9 @@ against taste:
|
||||
|
||||
## Status
|
||||
|
||||
A first skeleton exists, with four design moves that the current shape does not have. It is
|
||||
`active` because two of them are unproven and one contradicts a record that is already
|
||||
accepted.
|
||||
A first skeleton exists, with four design moves that the current shape does not have. It was
|
||||
held open because two of them were unproven and one contradicted a record that was already
|
||||
accepted; how each was settled is under *What it became* below.
|
||||
|
||||
**Finding worth stating up front:** [ADR 0001](../../02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md)
|
||||
names nine bounded contexts and **none of them owns connectivity** — no overlay, no resolution,
|
||||
@@ -92,3 +105,17 @@ the catalogue where modules genuinely change together under one intent. The skel
|
||||
| ~~Does absorbing overlay, filtering, packages, supervision and the container runtime make the host too large?~~ | **Answered 2026-08-25** — [`host-size.md`](host-size.md). Measured: the absorption is smaller than the machinery that already applies state, and eight of ten adapters already carry no dependency. The risk is not size but direction, and it is two modules wide. The claim survives with its scope corrected — the host carries one concern, *apply declared state on this machine*, of which the six are instances. Recorded as [ADR 0005](../../02-DECISIONS/0005-the-node-host.md), designed in [`05-the-node-host.md`](../../03-DESIGN/01-to-be/05-the-node-host.md). |
|
||||
| ~~Four substrate services or five?~~ | **Answered conditionally**, which is the honest form — [`07-the-foundation.md`](../../03-DESIGN/01-to-be/07-the-foundation.md). The substrate is *what the control plane consumes and cannot grant itself*. The identity provider qualifies only if the control plane delegates authentication; if it authenticates natively it is an ordinary hosted service. The count follows from a decision not yet taken, and asserting four was asserting that decision. |
|
||||
| Does `feature` survive? | The skeleton splits it in two and argues the conflation is what makes the delivery pipeline hard to reason about. Unproven. |
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* The skeleton's moves became decisions and designs, and its open questions were settled by them.
|
||||
|
||||
- **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.
|
||||
- The answered rows above became [ADR 0004](../../02-DECISIONS/0004-a-node-and-how-it-joins.md) and [ADR 0005](../../02-DECISIONS/0005-the-node-host.md), and the designs [to-be 05](../../03-DESIGN/01-to-be/05-the-node-host.md), [to-be 07](../../03-DESIGN/01-to-be/07-the-foundation.md) and
|
||||
[to-be 08](../../03-DESIGN/01-to-be/08-connectivity.md).
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-08-23
|
||||
touches:
|
||||
- 03-DESIGN/00-as-is/03-provisioning.md
|
||||
- 02-DECISIONS/0009-modules-and-the-graph.md
|
||||
- 01-RESEARCH/006-mesh-from-scratch/code-skeleton.md
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0028-the-substrate-supplies-the-control-plane-and-nothing-else.md
|
||||
- 02-DECISIONS/0033-the-substrate-is-a-store-and-a-broker.md
|
||||
- 02-DECISIONS/0078-the-store-and-broker-are-modules.md
|
||||
- 02-DECISIONS/0112-a-module-definition-names-no-node-mesh-or-path.md
|
||||
- 02-DECISIONS/0114-a-shared-credential-rotates-over-two-credentials.md
|
||||
- 02-DECISIONS/0144-anything-on-a-machine-may-call-anything-on-it.md
|
||||
- 02-DECISIONS/0224-a-provider-that-keeps-failing-a-consumer-is-a-problem-the-controller-reports.md
|
||||
- 03-DESIGN/01-to-be/13-credentials-and-their-rotation.md
|
||||
- 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md
|
||||
---
|
||||
|
||||
# 007 — Provisioning as the mesh's core mechanism
|
||||
@@ -49,3 +58,18 @@ make each of them fatal rather than annoying.
|
||||
| Can the **control plane** hold requirements, and what satisfies them before anything is installed? | The generalisation research 006 needs. Ties directly to the self-hosting transition. |
|
||||
| What happens when a requirement **cannot** be satisfied — no provider, provider on an unreachable node, provider not yet installed? | Today this is silent or a stall. It should be a stated, visible state. |
|
||||
| Does a requirement belong to a **module** or to one of its **parts**? | Research 006 splits `feature` into artifact and part. A part-scoped requirement means a database is not provisioned where the part that needs it is not installed. |
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* All five questions have an accepted answer.
|
||||
|
||||
- **What a grant means**: the provider checks each consumer periodically and announces one it keeps failing,
|
||||
which the controller reports ([ADR 0224](../../02-DECISIONS/0224-a-provider-that-keeps-failing-a-consumer-is-a-problem-the-controller-reports.md)). A consumer verifying its own grant was proposed and withdrawn the
|
||||
same day ([ADR 0144](../../02-DECISIONS/0144-anything-on-a-machine-may-call-anything-on-it.md)).
|
||||
- **Rotation with fan-out**: [ADR 0114](../../02-DECISIONS/0114-a-shared-credential-rotates-over-two-credentials.md), designed in [to-be 13](../../03-DESIGN/01-to-be/13-credentials-and-their-rotation.md).
|
||||
- **The controller's own requirements**: the foundation is what the controller needs and cannot grant itself
|
||||
([ADR 0028](../../02-DECISIONS/0028-the-substrate-supplies-the-control-plane-and-nothing-else.md), [ADR 0033](../../02-DECISIONS/0033-the-substrate-is-a-store-and-a-broker.md), [ADR 0078](../../02-DECISIONS/0078-the-store-and-broker-are-modules.md)).
|
||||
- **A requirement nobody can answer**: installing a module resolves every requirement or is refused, naming
|
||||
each one ([ADR 0112](../../02-DECISIONS/0112-a-module-definition-names-no-node-mesh-or-path.md), designed in [to-be 27](../../03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md)).
|
||||
- **Module or part**: everything a module needs is that module's requirement ([ADR 0112](../../02-DECISIONS/0112-a-module-definition-names-no-node-mesh-or-path.md)); a module is
|
||||
not split into separately selected parts.
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
---
|
||||
status: active
|
||||
status: abandoned
|
||||
initiated: 2026-08-23
|
||||
touches:
|
||||
- 01-RESEARCH/006-mesh-from-scratch/code-skeleton.md
|
||||
- 03-DESIGN/01-to-be/01-end-to-end-testing.md
|
||||
- 02-DECISIONS/0016-the-lab.md
|
||||
- 03-DESIGN/00-as-is/00-overview.md
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0067-genesis-is-a-pivot.md
|
||||
- 02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md
|
||||
- 02-DECISIONS/0105-the-mesh-adopts-the-predecessors-tunnel-in-place.md
|
||||
- 02-DECISIONS/0119-a-taken-tunnels-predecessor-is-retired.md
|
||||
- 02-DECISIONS/0173-the-operators-machine-is-the-meshs-and-a-module-is-what-it-declares.md
|
||||
- 02-DECISIONS/0200-genesis-pivots-to-the-controller-as-a-container-and-the-first-push-hands-it-to-a-process.md
|
||||
---
|
||||
|
||||
# 009 — Getting from the mesh that exists to the mesh that is designed
|
||||
@@ -93,3 +99,11 @@ fix it.
|
||||
| How is the cutover **rehearsed** against something resembling the real mesh, without copying the real mesh into a repository? | The lab must be able to model the real topology's shape without carrying its identity. |
|
||||
| Does anything have to keep running **during** the cutover? | Mail and source are the obvious candidates. If yes, "big-bang" is really "big-bang with exceptions", and the exceptions should be named now. |
|
||||
| Is the forge inside or outside the cutover? | If the mesh's own forge goes down with the old control plane, the means of deploying a fix goes with it. This is the self-hosting circularity appearing as a migration risk. |
|
||||
|
||||
## What overtook it
|
||||
|
||||
*Closed 2026-10-10.* The one-move switch-over was never made. The migration went machine by machine instead: a machine in use
|
||||
was adopted first and converged module by module ([ADR 0100](../../02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md)), the predecessor's tunnel was adopted in
|
||||
place and then retired ([ADR 0105](../../02-DECISIONS/0105-the-mesh-adopts-the-predecessors-tunnel-in-place.md), [ADR 0119](../../02-DECISIONS/0119-a-taken-tunnels-predecessor-is-retired.md)), genesis became a pivot from a running mesh
|
||||
([ADR 0067](../../02-DECISIONS/0067-genesis-is-a-pivot.md), [ADR 0200](../../02-DECISIONS/0200-genesis-pivots-to-the-controller-as-a-container-and-the-first-push-hands-it-to-a-process.md)), and the predecessor is retired from the operator's machines ([ADR 0173](../../02-DECISIONS/0173-the-operators-machine-is-the-meshs-and-a-module-is-what-it-declares.md)).
|
||||
That migration is finished.
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-08-24
|
||||
touches:
|
||||
- 03-DESIGN/01-to-be/03-scenario-lifecycle.md
|
||||
- 02-DECISIONS/0016-the-lab.md
|
||||
- 02-DECISIONS/0016-the-lab.md
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0016-the-lab.md
|
||||
- 02-DECISIONS/0172-the-lab-is-a-module-and-runs-a-bed-when-the-mesh-asks.md
|
||||
- 03-DESIGN/01-to-be/03-scenario-lifecycle.md
|
||||
- 03-DESIGN/01-to-be/04-lab-installation.md
|
||||
---
|
||||
|
||||
# 010 — What the lab's inner loop actually costs
|
||||
@@ -58,3 +62,12 @@ something the mesh already does.
|
||||
| Why was the second snapshot more than twelve times slower than the first? | If snapshot cost is unpredictable rather than merely high, that is worse — a loop with a variable multi-minute step is one nobody trusts. |
|
||||
| Does a scenario snapshot need the machines stopped? | Stateless snapshots of a running virtual machine capture the disk but not memory. Whether a mesh restored that way is coherent is not established. |
|
||||
| What is the cost at scenario scale — four machines rather than one? | Only single-machine numbers were taken. If the operation is serial, four machines is four times the wait. |
|
||||
|
||||
## What it became
|
||||
|
||||
*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 ([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: active
|
||||
status: graduated
|
||||
initiated: 2026-09-23
|
||||
touches:
|
||||
- 02-DECISIONS/0075-two-stores-and-which-provides-what.md
|
||||
@@ -8,6 +8,11 @@ touches:
|
||||
- 02-DECISIONS/0082-the-registry-is-reached-by-name-and-trusted-by-the-overlay.md
|
||||
- 04-ISSUES/085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md
|
||||
- 04-ISSUES/090-the-forge-module-does-not-take-over-the-forge-genesis-raised/00-report.md
|
||||
became:
|
||||
- 02-DECISIONS/0111-a-build-source-is-on-the-git-seat-or-external.md
|
||||
- 02-DECISIONS/0239-a-delivery-is-owned-by-the-mesh-delivery-module-and-runs-from-commit-to-delivered.md
|
||||
- 02-DECISIONS/0267-an-artifact-is-rebuilt-only-when-its-build-source-changes-and-a-module-moves-only-along-build-dependencies-on-artifacts.md
|
||||
- 03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md
|
||||
---
|
||||
|
||||
# 013 — The forge and the registries: what a seat is for, and what it is not
|
||||
@@ -52,3 +57,10 @@ See [the survey](the-survey.md) for what the code does today, with evidence.
|
||||
- Should the mesh learn when a source moves? It records the fact and never discovers it: nothing
|
||||
polls, and there is no receiver for a forge's push. `build --behind` answers a question only a
|
||||
person can currently make true.
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* The forge became the `git` seat ([ADR 0111](../../02-DECISIONS/0111-a-build-source-is-on-the-git-seat-or-external.md)): a source on it is recorded by its path and seat, never
|
||||
an address, and an unheld seat refuses self-hosted builds and nothing else, which settles the genesis
|
||||
concern. The mesh learns of a change from the forge's pull requests, each one a delivery
|
||||
([ADR 0239](../../02-DECISIONS/0239-a-delivery-is-owned-by-the-mesh-delivery-module-and-runs-from-commit-to-delivered.md), [ADR 0267](../../02-DECISIONS/0267-an-artifact-is-rebuilt-only-when-its-build-source-changes-and-a-module-moves-only-along-build-dependencies-on-artifacts.md)), designed in [to-be 47](../../03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-09-26
|
||||
touches:
|
||||
- 00-META/mission.md
|
||||
@@ -9,6 +9,17 @@ touches:
|
||||
- 03-DESIGN/01-to-be/06-the-controller.md
|
||||
- 03-DESIGN/01-to-be/09-the-node-lifecycle.md
|
||||
- 03-DESIGN/00-as-is/09-interfaces-and-observability.md
|
||||
became:
|
||||
- 02-DECISIONS/0116-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0224-a-provider-that-keeps-failing-a-consumer-is-a-problem-the-controller-reports.md
|
||||
- 02-DECISIONS/0227-the-core-holds-nine-rules-each-checked-and-is-built-to-them-in-six-phases.md
|
||||
- 02-DECISIONS/0231-a-healer-acts-on-what-observation-raised-and-only-observation-says-it-worked.md
|
||||
- 02-DECISIONS/0234-the-mesh-holds-a-conversation-with-its-operator.md
|
||||
- 02-DECISIONS/0240-a-module-says-how-it-is-healthy-and-the-node-engine-judges-it.md
|
||||
- 02-DECISIONS/0253-a-condition-says-itself-to-the-operator-in-plain-words-beside-its-summary.md
|
||||
- 03-DESIGN/01-to-be/25-the-bus-on-nats.md
|
||||
- 03-DESIGN/01-to-be/28-building-the-bus.md
|
||||
- 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md
|
||||
---
|
||||
|
||||
# 017 — A mesh that heals itself
|
||||
@@ -45,3 +56,15 @@ the provisioner harness, and rotation, which is proposed alongside to-be 27 as A
|
||||
expected elsewhere.
|
||||
2. **The 46 silent failures, classified**: a missing observation, a loop trusting memory, or a missing
|
||||
escalation. That shows which mechanism removes the most of them.
|
||||
|
||||
## What it became
|
||||
|
||||
*Closed 2026-10-10.* The intended behaviour is decided and designed. [ADR 0227](../../02-DECISIONS/0227-the-core-holds-nine-rules-each-checked-and-is-built-to-them-in-six-phases.md) takes this effort's principles into the
|
||||
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)). 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.
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
---
|
||||
status: active
|
||||
status: abandoned
|
||||
initiated: 2026-10-02
|
||||
touches: [lab, the lab module, the catalogue, assignments, settings, the controller's store]
|
||||
became: []
|
||||
became:
|
||||
- 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
|
||||
---
|
||||
|
||||
# 019 — A warm twin of the running mesh
|
||||
@@ -53,3 +56,10 @@ does not have is a scenario that **is** the running mesh, kept current with it.
|
||||
The lab module (ADR 0172) runs beds through the mesh, and the lab's warm mode already snapshots and
|
||||
restores a raised scenario. The beds that raise a machine shaped like one live machine from the
|
||||
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 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).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-10-04
|
||||
touches:
|
||||
- 02-DECISIONS/0176-the-login-shell-is-a-node-seat-and-execute-is-its-contract.md
|
||||
@@ -11,7 +11,16 @@ touches:
|
||||
- 03-DESIGN/01-to-be/37-the-operators-machine.md
|
||||
- 03-DESIGN/01-to-be/38-building-the-operators-machine.md
|
||||
- 04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0208-the-graphical-session-is-one-module-per-piece-on-the-meshs-seats.md
|
||||
- 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
|
||||
- 03-DESIGN/01-to-be/42-the-machines-modules-in-order.md
|
||||
---
|
||||
|
||||
# 026 — The graphical session as modules
|
||||
@@ -72,3 +81,11 @@ package and a file is unfinished. The tools are catalogued in
|
||||
- [04 — Screensaver, displays and menus](04-screensaver-displays-and-menus.md): the lock and idle module, monitor layouts by the monitors' identity, rofi and dmenu behind one launcher seat, the clipboard, fonts
|
||||
- [05 — The tools each module serves](05-the-tools-each-module-serves.md): a first catalogue for the modules of 026 and 027
|
||||
- [03 — What the predecessor taught](03-what-the-predecessor-taught.md): its 128 modules and 3,395 commits, as patterns to keep and failures not to repeat; shared with research 027.
|
||||
|
||||
## What it became
|
||||
|
||||
*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)). 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,12 +1,13 @@
|
||||
---
|
||||
status: active
|
||||
status: graduated
|
||||
initiated: 2026-10-08
|
||||
touches:
|
||||
- 02-DECISIONS/0262-a-preference-has-a-default-in-its-manifest-and-the-operators-own-value-has-none.md
|
||||
- 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md
|
||||
- the catalogue's module manifests
|
||||
- the media catalogue's module manifests
|
||||
became: []
|
||||
became:
|
||||
- 02-DECISIONS/0262-a-preference-has-a-default-in-its-manifest-and-the-operators-own-value-has-none.md
|
||||
---
|
||||
|
||||
# 037 — The catalogue's hard-coded preferences
|
||||
@@ -37,3 +38,12 @@ the operator's yes.
|
||||
|
||||
- [01 — the survey](01-the-survey.md): every candidate, by module, strongest first, with the modules
|
||||
that already take settings and those that have nothing to convert.
|
||||
|
||||
## What it became
|
||||
|
||||
*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, 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;
|
||||
|
||||
@@ -844,4 +844,4 @@ in [to-be 47](47-delivery-from-commit-to-delivered.md), and their progress is tr
|
||||
- Routing by presence, quiet hours, answering back through a channel, and an external dead-man
|
||||
service — decided by [ADR 0234](../../02-DECISIONS/0234-the-mesh-holds-a-conversation-with-its-operator.md),
|
||||
designed in [to-be 46](46-the-conversation-with-the-operator.md).
|
||||
- A condition that needs judgement handed to an agent as work — research 017.
|
||||
- A condition that needs judgement handed to an agent as work — tracked by issue 409, since research 017 closed.
|
||||
|
||||
Reference in New Issue
Block a user