The numbering is the flow: decisions are 02, design is 03
papa-hq reads 01 research -> 03 decision -> 02 design. The order is a scar, not a choice: 02-DESIGN existed from its initial commit, and when adr/ was finally promoted on 2026-07-13 it took the next free number rather than its place in the sequence. By then design was too settled to renumber. hal-hq was three commits old, so it is not. adr/ becomes 02-DECISIONS and 02-DESIGN becomes 03-DESIGN, and following the folder numbers now walks the process in the order it happens: research produces a decision, the decision authorises a design. 00-GENESIS becomes 00-META, matching papa's rename from the same restructure. Every path reference rewritten across documents, frontmatter, playbooks and skills. All links resolve; all 58 frontmatter blocks parse and their path fields still point at files that exist.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
status: active
|
||||
initiated: 2026-08-22
|
||||
touches: [02-DESIGN/00-as-is/02-modules-and-manifests.md, 02-DESIGN/00-as-is/10-module-catalogue.md, 02-DESIGN/01-to-be/00-work-breakdown.md]
|
||||
became: [adr/0015-mesh-brokers-nodes-host-agents-think.md]
|
||||
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/0015-mesh-brokers-nodes-host-agents-think.md]
|
||||
---
|
||||
|
||||
# 001 — Module domain decomposition
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
status: graduated
|
||||
initiated: 2026-08-22
|
||||
touches: [02-DESIGN/00-as-is/04-delivery.md, 02-DESIGN/00-as-is/05-runtime-and-installation.md]
|
||||
became: [02-DESIGN/01-to-be/01-end-to-end-testing.md, adr/0016-a-lab-node-is-a-virtual-machine.md]
|
||||
touches: [03-DESIGN/00-as-is/04-delivery.md, 03-DESIGN/00-as-is/05-runtime-and-installation.md]
|
||||
became: [03-DESIGN/01-to-be/01-end-to-end-testing.md, 02-DECISIONS/0016-a-lab-node-is-a-virtual-machine.md]
|
||||
---
|
||||
|
||||
# 002 — A mesh that runs locally
|
||||
@@ -15,7 +15,7 @@ became: [02-DESIGN/01-to-be/01-end-to-end-testing.md, adr/0016-a-lab-node-is-a-v
|
||||
|
||||
## Summary
|
||||
|
||||
Phase 0 of [`02-DESIGN/00-work-breakdown.md`](../../02-DESIGN/01-to-be/00-work-breakdown.md) requires
|
||||
Phase 0 of [`03-DESIGN/00-work-breakdown.md`](../../03-DESIGN/01-to-be/00-work-breakdown.md) requires
|
||||
a mesh that comes up in containers, runs its own pipeline, and reproduces known faults on
|
||||
demand. Nothing else in the decomposition starts until it exists, because every fault the
|
||||
decomposition addresses was found in production — there was nowhere else to find it.
|
||||
|
||||
@@ -244,7 +244,7 @@ over either way.
|
||||
|
||||
3. **How faithful must the local mesh be to be trusted?** It will not run the bootstrap
|
||||
scripts, and it will run one OS where the real mesh is heterogeneous by design
|
||||
(`00-GENESIS/context.md`). Stating the divergence up front is what stops "it works
|
||||
(`00-META/context.md`). Stating the divergence up front is what stops "it works
|
||||
locally" from becoming its own class of silent failure. Now sharper, because a
|
||||
development environment people use daily is trusted far more than a rig — and drifting
|
||||
from production costs correspondingly more.
|
||||
@@ -253,9 +253,9 @@ over either way.
|
||||
|
||||
## References
|
||||
|
||||
- [`adr/0001`](../../adr/0015-mesh-brokers-nodes-host-agents-think.md) — the decision this
|
||||
- [`02-DECISIONS/0001`](../../02-DECISIONS/0015-mesh-brokers-nodes-host-agents-think.md) — the decision this
|
||||
phase unblocks
|
||||
- [`02-DESIGN/00-work-breakdown.md`](../../02-DESIGN/01-to-be/00-work-breakdown.md) — Phase 0 tasks
|
||||
- [`03-DESIGN/00-work-breakdown.md`](../../03-DESIGN/01-to-be/00-work-breakdown.md) — Phase 0 tasks
|
||||
and checkpoint
|
||||
- `troubleshooting/provision-adoption-rotates-live-credential` — fixture B, root cause open
|
||||
- `troubleshooting/deploy-reports-transport-not-effect` — the nine defects that shipped
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
status: active
|
||||
initiated: 2026-08-22
|
||||
touches: [02-DESIGN/00-as-is/05-runtime-and-installation.md]
|
||||
touches: [03-DESIGN/00-as-is/05-runtime-and-installation.md]
|
||||
became: []
|
||||
---
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ hand.
|
||||
This is worth recording for two reasons. It weakens any argument that systemd-adjacent
|
||||
self-healing is already wired — it is not. And it is another instance of the pattern this
|
||||
whole refactor is about: **a documented mechanism that does not exist, believed because it
|
||||
was written down.** `00-GENESIS/how-we-build.md` calls this out as a rule; here it is again,
|
||||
was written down.** `00-META/how-we-build.md` calls this out as a rule; here it is again,
|
||||
found by grep.
|
||||
|
||||
---
|
||||
@@ -208,7 +208,7 @@ found by grep.
|
||||
**This no longer gates Phase 0.** When this was written, the local mesh was assumed to be
|
||||
built from application containers, which forced the question — there is no natural way to
|
||||
run an init system inside one. The decision of 2026-08-22 to build development nodes as
|
||||
**system containers** (see [`02-DESIGN/01-end-to-end-testing.md`](../../02-DESIGN/01-to-be/01-end-to-end-testing.md))
|
||||
**system containers** (see [`03-DESIGN/01-end-to-end-testing.md`](../../03-DESIGN/01-to-be/01-end-to-end-testing.md))
|
||||
removes that pressure entirely: a system container runs a real init, so the existing model
|
||||
works unmodified and the lab needs no answer here to exist.
|
||||
|
||||
@@ -223,7 +223,7 @@ fate-sharing reason in §3.
|
||||
## References
|
||||
|
||||
- [`002-local-mesh`](../002-local-mesh/analysis.md) — the effort this came out of
|
||||
- [`adr/0001`](../../adr/0015-mesh-brokers-nodes-host-agents-think.md) — agent modality, which
|
||||
- [`02-DECISIONS/0001`](../../02-DECISIONS/0015-mesh-brokers-nodes-host-agents-think.md) — agent modality, which
|
||||
decides what cannot leave the host
|
||||
- `modules/hal/meshware/daemon/src/cerebellum.ts:815-828` — the self-restart workaround
|
||||
- `modules/hal/meshware/systemd/hal-module@.service` — the per-module Docker lifecycle
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
status: active
|
||||
initiated: 2026-08-22
|
||||
touches: [02-DESIGN/00-as-is/01-mesh-and-transport.md, 02-DESIGN/01-to-be/01-end-to-end-testing.md]
|
||||
became: [adr/0016-a-lab-node-is-a-virtual-machine.md]
|
||||
touches: [03-DESIGN/00-as-is/01-mesh-and-transport.md, 03-DESIGN/01-to-be/01-end-to-end-testing.md]
|
||||
became: [02-DECISIONS/0016-a-lab-node-is-a-virtual-machine.md]
|
||||
---
|
||||
|
||||
# 004 — Reproducing the mesh network in a lab
|
||||
|
||||
@@ -199,5 +199,5 @@ Several manifests declare `scope: public` on firewall rules — `wireguard`, `tr
|
||||
`modules/unifi/module.yml:52-93` does deliberately.
|
||||
|
||||
So a manifest can appear to restrict a port to the public scope and in fact restrict nothing.
|
||||
This is the same shape as the rule in `00-GENESIS/how-we-build.md` — *an unenforced rule is
|
||||
This is the same shape as the rule in `00-META/how-we-build.md` — *an unenforced rule is
|
||||
indistinguishable from a wrong one, and costs more, because people believe it.*
|
||||
|
||||
@@ -27,16 +27,16 @@ draft designs.
|
||||
| status | Meaning |
|
||||
|---|---|
|
||||
| `active` | Investigation in progress. |
|
||||
| `graduated` | Checked against `00-GENESIS`, decided in `adr/`, and specified in `02-DESIGN` — see `became:`. |
|
||||
| `graduated` | Checked against `00-META`, decided in `02-DECISIONS/`, and specified in `03-DESIGN` — see `became:`. |
|
||||
| `abandoned` | Stopped or superseded. Nothing is deleted. |
|
||||
|
||||
An effort graduates by producing a decision record **and** a `02-DESIGN` entry. It is abandoned
|
||||
An effort graduates by producing a decision record **and** a `03-DESIGN` entry. It is abandoned
|
||||
in place — never deleted. What was rejected, and why, is the more expensive half to
|
||||
rediscover.
|
||||
|
||||
Starting and closing efforts is playbook territory:
|
||||
[`00-GENESIS/process/01-research.md`](../00-GENESIS/process/01-research.md) and
|
||||
[`02-graduation.md`](../00-GENESIS/process/02-graduation.md).
|
||||
[`00-META/process/01-research.md`](../00-META/process/01-research.md) and
|
||||
[`02-graduation.md`](../00-META/process/02-graduation.md).
|
||||
|
||||
## Rules
|
||||
|
||||
|
||||
Reference in New Issue
Block a user