ADRs 0087 and 0088; issues 031, 035 and 054 resolved; designs 05, 07 and 18 amended

A seeded file is created once (0087); the foundation filters before anything
listens (0088); a machine becomes the last thing it was told (design 05).
Each says how it is checked.
This commit is contained in:
2026-09-21 12:11:50 +02:00
parent a211aecdfa
commit ee67f69ef4
9 changed files with 166 additions and 12 deletions
+15 -2
View File
@@ -2,7 +2,7 @@
layer: to-be
status: in-progress
code: [mesh-host]
updated: 2026-08-31
updated: 2026-09-21
decisions:
- 02-DECISIONS/0019-how-this-repository-works.md
- 02-DECISIONS/0004-a-node-and-how-it-joins.md
@@ -367,4 +367,17 @@ of the reason to manage a machine.
silently incomplete.
**A partial host does archives and refuses users**: an archive needs a filesystem and a way to
fetch; a user needs a user database the host is allowed to write.
fetch; a user needs a user database the host is allowed to write.
## A machine becomes the last thing it was told
Every declaration is complete, so applying an old one is never wrong, only wasted — and under a
flurry of pushes a machine spent minutes becoming things the mesh had moved past
([issue 031](../../04-ISSUES/031-a-machine-becomes-each-thing-it-was-told-in-turn/00-report.md)).
So the host looks at what is already waiting before it applies anything: it holds a small window
of unacknowledged declarations, applies the newest, and sets the rest aside — each **reported as
superseded**, naming the one applied instead, because silence would read as a machine that
ignored an instruction and "applied" would be a lie. Applying stays one at a time; only seeing
is not. **Checked** by the link's unit tests on the drain, and by the genesis bed's settle wait,
which counts on a node catching up to the newest declaration rather than the oldest.