jschoubben
329a24fdae
ADRs 0184 and 0185: a service is still running a moment later; a control plane behind its row serves what it can; issue 201 half closed
2026-10-02 18:16:24 +02:00
jschoubben
114a71f36f
ADR 0179: built and proven live; the one fault the machine found, and the check that refuses it
2026-10-02 17:28:38 +02:00
jschoubben
0f407417f3
Merge main: the ufw record renumbered to 0180, and ADR 0175 retires the per-module tool runtime this one ships
2026-10-02 17:28:23 +02:00
jschoubben
d0d5799884
Issue 201: a push recreated the controller at a digest older than the seat row its successor wrote
2026-10-02 17:15:22 +02:00
jschoubben
9ba4de5557
ADR 0179: the intrusion seat serves its verbs, a container may log to the journal, and every door declares its jail; designs 31 and 33
2026-10-02 17:02:49 +02:00
jschoubben
4ce967619a
Research 019: a warm twin of the running mesh in the lab
2026-10-02 16:59:36 +02:00
jschoubben
8c9a2c7501
ADR 0175: the found front end is uninstalled once a machine is converged; design 08 note
2026-10-02 16:27:33 +02:00
jschoubben
116b2d1793
ADR 0168: built and proven live — the live row read on the home server and the control node, the five rule sets removed through ADR 0170's verb
2026-10-02 15:08:58 +02:00
jschoubben
98eb3aa76f
ADR 0169 → 0170: the firewall seat's record renumbered after a collision on main; its built note; cycle.py refuses two records sharing a number
...
Another session's 0169 landed first. The collision check from issue 155
covered issue folders only; it covers decision records now, and would have
refused this.
2026-10-02 14:51:22 +02:00
jschoubben
0e7b85f184
Issues 199 (resolved: a node-scoped seat's verb through the console) and 200 (the controller's answer to a long console call is refused by the bus)
2026-10-02 14:25:03 +02:00
jschoubben
0d9208dbbf
ADR 0172: the lab is a module, and runs a bed when the mesh asks
2026-10-02 14:15:44 +02:00
jschoubben
4567e13071
ADR 0169: the firewall seat serves its verbs, and a foreign rule set is removed through one of them
...
Designs 33 and 08 revised. The first node-scoped seat with verbs: rules,
reload, remove; the nftables module holds it from a runtime with NET_ADMIN,
the first container to declare a capability.
2026-10-02 13:27:03 +02:00
jschoubben
79642251a1
ADR 0169 accepted; design 08's join order starts with the tunnel
2026-10-02 13:17:32 +02:00
jschoubben
331cb94c6e
ADR 0169 (proposed): a machine joins through the tunnel, and the bus is never public
...
The bus was public only so a new machine could enrol before it had a
tunnel. The machine now makes its tunnel key first, the token is issued
for it and makes it a peer of the hub, and enrolment happens over the
tunnel.
2026-10-02 13:13:15 +02:00
jschoubben
426f741ad0
Issue 198: the home network's DNS server ran outside the mesh, and its filter closed it
2026-10-02 12:22:31 +02:00
jschoubben
9bed54d3be
Issue 197 resolved: the wired port is guarded before it is plugged in
2026-10-02 12:22:15 +02:00
jschoubben
413daf8ad5
Issue 197: a physical link that is down is not filtered when it comes up
2026-10-02 12:22:15 +02:00
jschoubben
7c3be48db2
Issues 143 and 144 resolved: the live row of ADR 0168 read on the home server and the control node
2026-10-02 12:11:17 +02:00
jschoubben
1bd13446d4
ADR 0168: a converged machine is filtered by the mesh alone, and the host says what else refuses (group 7)
...
Designs 08 and 05 revised; 141 resolved by ADR 0140 and 084 by ADR 0102 and
issue 128, both by reading; 143 and 144 decided, built on the matching
branches in mesh-host and mesh-controller, resolved when the home server's
record names the predecessor's chain.
2026-10-02 11:58:18 +02:00
jschoubben
bd6c55d225
Group 6 closed: 086, 090, 098, 099, 100, 101 resolved on the operator's decision, each saying the live row was not run
2026-10-02 11:37:08 +02:00
jschoubben
c8935aceca
Issue 194 resolved: the fixed host forgot its former archive on all four machines
2026-10-02 11:31:29 +02:00
jschoubben
d05ac367f1
Issue 196 resolved: the hub relays the mesh, re-swept live
2026-10-02 11:23:37 +02:00
jschoubben
1c0dafb918
Issue 196: the hub relays the mesh only on the ports it publishes itself
2026-10-02 11:17:11 +02:00
jschoubben
28d53dcc28
Issue 191 resolved: internal-only routes are served to the mesh, live on both proxies
2026-10-02 09:49:25 +02:00
jschoubben
df667eb710
ADR 0167: a membership carries what its module receives, and who the mesh is
...
Issue 191's route proxy needs to know who the mesh is to serve an
internal name correctly, and the first fix had it work that out alone.
The membership on the bus now carries it, from the same list the filter
uses. ADR 0138 gains an insight that the proxy is where internal reach
is kept; designs 08 and 25 say how.
2026-10-02 09:49:19 +02:00
jschoubben
098a2ca485
Issue 191: a route with only an internal name is dropped as naming nothing
2026-10-02 09:49:19 +02:00
jschoubben
db5ff5a5ee
Issue 195: every assigned module is counted as a bus user without a credential
...
The status warning names 49 users; 48 are modules that never speak on the
bus, and the one real fault, a declared broker secret filled with a
generated value, looked the same as the rest.
2026-10-02 02:44:24 +02:00
jschoubben
780c2b6e58
Issue 194: the host's own former archive stops every machine applying anything
...
Rule 5 of ADR 0163 (a former target is removed) met issue 162 (an archive
has no removal) in the host's own archive, the first time a host carrying
former targets replaced itself; every machine applied nothing from then on.
2026-10-02 02:42:19 +02:00
jschoubben
c4151e6bc4
ADR 0163 built: the take digest, the minted-secret refusal, the networks setting, settings judged where stored, genesis raising the forge as declared; issues 096, 097, 126 resolved
...
The record gets its built note; designs 05 and 09 the revisions; 086, 098,
099, 100 and 101 stay located because every machine is converged and the
record's live row — a take read on an adopted machine — has not been run;
090 is built in part, its network difference left for the take to say.
2026-10-01 23:45:57 +02:00
jschoubben
6f26f97fdb
Issue 189: the plan's half is built; the moved word stays for a decision
2026-10-01 22:25:31 +02:00
jschoubben
48ca2fb41b
Issue 189: a rebuild from the same commit is not a move, so a packaging module's new image never rolls out
2026-10-01 21:54:44 +02:00
jschoubben
2904c359b8
ADR 0163: taking a module over is a comparison — what it compares, refuses and carries; designs 05 and 09; group 6's issues located, 093 resolved
2026-10-01 21:12:36 +02:00
jschoubben
50e4d9c2a7
ADR 0162: built, and proven live by the first tiered plan
2026-10-01 21:00:10 +02:00
jschoubben
a2c9fbb665
Issues 184 and 188 resolved: the merge handler returns at once; a machine is resolved with its pins and a dropped one is said
2026-10-01 20:54:10 +02:00
jschoubben
606fbb7add
Issue 188: the second fault beneath the first, and its fix
2026-10-01 18:22:19 +02:00
jschoubben
a92e4bf121
Issue 188: what the live fault was and how it was resolved
2026-10-01 18:14:37 +02:00
jschoubben
187442ec7b
Issue 188: a refusal inside on-the-network drops a machine silently
2026-10-01 18:10:57 +02:00
jschoubben
82496536cd
ADR 0162: the three kinds of dependency, where the edges come from, and the one real cycle
2026-10-01 17:53:57 +02:00
jschoubben
b0de267301
ADR 0162: the link to 0157 by its name
2026-10-01 17:46:07 +02:00
jschoubben
b0a74b23fd
ADR 0162: a merge produces a tiered plan the mesh keeps; dependencies are one relation; design 30; issues 184, 186
2026-10-01 17:45:48 +02:00
jschoubben
821cd3b489
ADR 0084: a pin names the module as well as the node ( #258 )
2026-10-01 17:23:34 +02:00
jschoubben
86d1763cfa
Issues 106 and 138 resolved (ADR 0161 built and live); 187 notes a report lost without retry
2026-10-01 17:18:17 +02:00
jschoubben
ea0853ca46
ADR 0160: the live proof, and three facts it taught
2026-10-01 16:51:43 +02:00
jschoubben
03e39316ea
Issue 184: a handler replaced mid-merge loses the rest of its work, and the redelivered announcement reads as history
2026-10-01 16:25:38 +02:00
jschoubben
6be284c781
Issue 187: the mesh tells nobody when it stops working
2026-10-01 16:21:05 +02:00
jschoubben
9ddd7215ad
Issue 186 located: the delivery dropped the asks, not the queue; a merge now rebuilds dependents; the release decision stands
2026-10-01 16:16:59 +02:00
jschoubben
180e3b8f7e
Issue 186: a release across repositories is an order in a person's head, and a build is a line in a queue nobody keeps
2026-10-01 16:01:45 +02:00
jschoubben
f35f3757bb
ADR 0161: what deserves a seat — the vault's seat, the hub as a placement of capacity one, the uplink holder as the machine's dialect; design 26; issues 105, 106, 138
2026-10-01 15:55:15 +02:00
jschoubben
2175d13935
Issue 185: a refused membership publish stopped the controller; 183 points to it
2026-10-01 15:42:37 +02:00
jschoubben
eef03f2b08
ADR 0160 built: both halves, and what the first roll-out taught; issues 183 (the controller's grant) and 184 (a merge blocks the receive loop)
2026-10-01 15:23:26 +02:00
jschoubben
99eb322de5
ADR 0160: the mesh issues an assignment's subjects, and a runtime serves what it is issued; designs 25, 32, 33, 34
2026-10-01 14:33:56 +02:00
jschoubben
0acb47fa55
ADR 0159: a tool call names the machine, every answer says which answered, a holder's runtime serves its seat's verbs; issue 182; designs 33 and 34
2026-10-01 14:00:23 +02:00
jschoubben
bef510fda2
ADR 0158: the controller's half is built (mesh-controller PR 184); the provider definitions remain
2026-10-01 12:27:39 +02:00
jschoubben
d29d3dfc23
ADR 0158: a provider with one credential shares it with every consumer, and the vault remakes it for all at once; designs 24 and 13 carry it
2026-10-01 12:17:49 +02:00
jschoubben
e00e3bc3ce
Issue 181 (was 163, was 161): two records answered to 163; renumbered to the next free number across main and open pull requests
2026-10-01 12:15:31 +02:00
jschoubben
b8d8101c45
Issue 180: the live rotation done — searxng's secret on the home server through the console
2026-10-01 12:14:49 +02:00
jschoubben
48a620249b
Issue 180: a module's own secret rotates when it is read at start; the applied form stays open (controller PR 183); design 13 and ADR 0114 carry the word
2026-10-01 11:43:23 +02:00
jschoubben
79d1619f16
Issue 179: an adopted identity provider's admin never took the minted secret (fixed by hand through the server's bootstrap; the design question left open)
2026-10-01 11:02:18 +02:00
jschoubben
e1f2c6bd5b
Issue 178: a routed name resolves to a provider merely told it, and flips between plans (fixed, controller PR 181)
2026-10-01 02:04:55 +02:00
jschoubben
35f7f4401b
Issue 177: the controller's check is run by nobody; the two rotted tests fixed (controller PR 180), the process half open
2026-10-01 01:38:22 +02:00
jschoubben
f841845b0d
Issue 176 resolved: a build is taken in where its outcome is heard; the build tool answers with the id
2026-10-01 01:27:49 +02:00
jschoubben
2ffe1d0915
ADR 0157: a build says what it does on the bus, as it happens; designs 25 and 18 carry it
2026-10-01 00:43:26 +02:00
jschoubben
93f828c5eb
Issue 176: the console's build tool neither waits nor registers, and does not take a forge path
2026-10-01 00:29:05 +02:00
jschoubben
52e9df0f02
Issue 153 resolved: an assignment places a module's directories and its accesses
...
mesh-controller PR 176 and mesh-catalog PR 198. Designs 27 and 18 carry the words: places,
accesses, ${access:<id>}, the default a definition still holds while the catalogue converts.
2026-10-01 00:04:10 +02:00
jschoubben
36454d7e4a
Issues 173 and 174 resolved; the installation check refuses at registration (ADR 0155)
...
A setting overrides a key a contribution or served fact declares and adds none; a provider that must
tell its consumers an operator's value declares it as ${setting:…} (173). The mesh's own files for a
module are a placed directory, `place: "mesh"`, and forty-eight definitions name no host path for
them (174). Registration refuses a definition naming an installation, the day the list emptied
rather than a release later (0155, progressive insight; 134). Designs 27 and 18 carry the rules.
2026-09-30 22:36:20 +02:00
jschoubben
e84c822e89
Merge pull request 'Issue 175: the link to issue 127 resolves' ( #235 ) from fix/issue-175-link into main
2026-09-30 20:10:41 +00:00
jschoubben
a170913202
Issue 175: the link to issue 127 resolves
2026-09-30 22:10:38 +02:00
jschoubben
9a20c16d9b
Merge pull request 'Issue 175: an announcement queued behind a long build came back, and the build ran again' ( #234 ) from fix/one-announcement-at-a-time into main
2026-09-30 19:38:49 +00:00
jschoubben
8bd0ca0bdc
Issue 175: an announcement queued behind a long build came back, and the build ran again
2026-09-30 21:38:45 +02:00
jschoubben
598f6a8952
Merge pull request 'ADR 0156: an artifact is what a build produces, and the store's seat is named for its scope (group 4, step 3)' ( #233 ) from feat/the-artifact-store-seat-is-named-for-its-scope into main
...
Reviewed-on: #233
2026-09-30 19:17:28 +00:00
jschoubben
3341c037cb
Merge pull request 'Issue 119 resolved for a module's own data; issue 174 for the mesh's files (group 4, step 2)' ( #232 ) from feat/definitions-place-their-directories into main
...
Reviewed-on: #232
2026-09-30 19:17:21 +00:00
jschoubben
22a28ad548
ADR 0156: an artifact is what a build produces, and the store's seat is named for its scope
...
Issue 123 resolved; glossary corrected; design 26 and ADR 0121 point at the rename.
2026-09-30 21:14:40 +02:00
jschoubben
1e1957a9c4
Issue 119 resolved for a module's own data; issue 174 for the mesh's files; design 27 phase 3 in part
2026-09-30 21:11:42 +02:00
jschoubben
5292f4176a
Merge pull request 'Issue 173: a module's settings reach every fact it contributes; what the site's rename cost' ( #230 ) from feat/group-4-step-1-closed into main
2026-09-30 19:04:36 +00:00
jschoubben
822e8b03f8
Issue 173: a module's settings reach every fact it contributes; what the site's rename cost
2026-09-30 21:04:34 +02:00
jschoubben
a82941ee0c
Merge pull request 'ADR 0155: a definition names no installation, how that is checked, and the three ways out (group 4, step 1)' ( #226 ) from feat/a-definition-names-no-installation into main
...
Reviewed-on: #226
2026-09-30 18:36:42 +00:00
jschoubben
9ffb7eec55
ADR 0155: a definition names no installation, how that is checked, and the three ways out
...
Issues 122 and 134 resolved; design 27 in progress with its first cases; design 18 names the words.
2026-09-30 18:40:05 +02:00
jschoubben
7499f1e50c
Merge pull request 'Issue 006 resolved: the record is read where it is written, and the console lists it' ( #225 ) from feat/group-3-closed into main
...
Reviewed-on: #225
2026-09-30 16:19:50 +00:00
jschoubben
214b486a50
Design 33 implemented: the mesh's verbs answer through the console, and what shipped bent
2026-09-30 18:18:44 +02:00
jschoubben
90b44a48df
Issue 006 resolved: the record is read where it is written, and the console lists it
...
Design 35 implemented with what shipped and the live check; 006 closes on ADR 0025's own test,
run through the console.
2026-09-30 18:10:18 +02:00
jschoubben
860331dc37
Merge pull request 'ADR 0153 and ADR 0154: the record is read by a module, and the mesh's verbs are its seat's tools' ( #224 ) from feat/the-mesh-answers-for-itself into main
...
Reviewed-on: #224
2026-09-30 15:55:18 +00:00
jschoubben
37b46d5349
ADR 0153 and ADR 0154: the record is read by a module, and the mesh's verbs are its seat's tools
...
Design 33 in progress against ADR 0154 (the twelve verbs, the prerequisites built); design 35 for
the records module under ADR 0153, extending 0025; as-is 07 rewritten to a mesh that keeps no store;
as-is 12 and 13 updated; issue 006 built and waiting on its live check.
2026-09-30 17:47:49 +02:00
jschoubben
16855ade02
The console shipped: design 34 implemented, as-is 13, issue 147 verified live
2026-09-30 17:13:09 +02:00
jschoubben
8dd566c0aa
Merge pull request 'ADR 0152: the operator's surface is a module, the console (group 3)' ( #222 ) from feat/the-console into main
...
Reviewed-on: #222
2026-09-30 14:47:36 +00:00
jschoubben
a98ee0f529
Issues 147 and 148 name what fixed them
2026-09-30 16:21:33 +02:00
jschoubben
ad4a5ea004
ADR 0152: the operator's surface is a module, the console
...
The work order's group-3 question answered: an ordinary module the mesh assigns to the machine a
person sits at, holding a minted credential, calling tools under a manifest grant (invokes), serving
MCP on loopback. Design 34; pointers in 33, 25 and 0095; module check designed into 12 (issue 148);
README stops claiming an indexing nothing provides (issue 006).
2026-09-30 16:08:52 +02:00
jschoubben
0cf1ad5dad
Merge pull request 'Issue 172: the ssh client block matches one spelling of a machine's name' ( #221 ) from issue/172-the-ssh-client-block-matches-one-spelling-of-a-machine into main
2026-09-30 13:25:34 +00:00
jschoubben
69a002fce3
Issue 172: the ssh client block matches one spelling of a machine's name
...
Reported by the operator: ssh by the bare name logs in, by the mesh name
is refused. The predecessor's generator writes the bare name only; the
mesh's ssh-client roster already matches both and is not yet shipped.
2026-09-30 15:25:30 +02:00
jschoubben
16a1a52cd8
Merge pull request 'Issue 171: a module that names its own resolver knows no mesh name' ( #220 ) from issue/171-a-modules-own-resolver-knows-no-mesh-name into main
2026-09-30 13:20:30 +00:00
jschoubben
af170e3a67
Issue 171: a module that names its own resolver knows no mesh name
...
Found and fixed the afternoon ADR 0148 landed: mailu-admin lost its
database behind Mailu's own resolver. Two catalogue PRs; an insight on
0148 that a container's dns is a decision, not a preference.
2026-09-30 15:20:26 +02:00
jschoubben
6c2d5f5913
Merge pull request 'Group 2 is resolved: containers resolve, nothing is copied, a route's name says where it arrives' ( #219 ) from issue/110-resolved into main
2026-09-30 13:07:14 +00:00
jschoubben
04c9500b5b
Group 2 is resolved: containers resolve, nothing is copied, a route's name says where it arrives
...
Issue 110's cause was not the filter: the runtime had never been told,
and the resolver dropped a query arriving on a bridge. ADR 0148 step 3
landed once it did (109, 151 resolved). ADR 0151 composes a route's
internal name under the serving node and drops the suffixed alias
(139, 157 resolved). Design 08 amended; a fact in 0148 corrected.
2026-09-30 14:56:43 +02:00
jschoubben
d0044cf555
Issue 170: assigning a module claims every seat it could hold
...
Assigning postgres on ace claimed mesh-store and made novox's own store
assignment unresolvable. The resolver reads a manifest's claims as 'does
hold'; ADR 0110 says the assignment holds, by a deliberate act the controller
already has (seat …, HoldSeat) but resolution does not consult.
2026-09-30 14:29:11 +02:00
jschoubben
846c1f85f2
Merge pull request 'Issue 107 is resolved: a declaration carries its order' ( #217 ) from issue/107-resolved into main
2026-09-30 12:13:57 +00:00
jschoubben
9eef0bd525
Issue 107 is resolved: a declaration carries its order
...
Hosts first, then the controller — a build and a push each, now that the
mesh delivers the host. The host refuses a lower sequence than it kept
and drains a batch by sequence rather than arrival; the controller
numbers each send under the node's hold, inside the signed bytes.
Measured: two pushes, sequence 2 in the kept declaration, counters in
the store agree, no machine reads as behind. That last one is the
subtlety: the mesh compares the digest of what it would send against
what it did, and a number changes the bytes, so the read-only comparison
composes with the last number sent rather than a fresh one.
2026-09-30 14:13:50 +02:00
jschoubben
105ae9a56a
Issue 169: network-share is the module responsible for a node's network shares — a node role
2026-09-30 13:56:24 +02:00
jschoubben
ee801a6441
Issue 169: the consumer half is a module (network-share), not a host resource kind; the access-on-a-mountpoint check is the data-loss case
2026-09-30 13:56:07 +02:00
jschoubben
90b89aa1c9
Issue 169: the consumer's half — the host mounts the share, a mount is a resource of the consuming module, not a client module
2026-09-30 13:53:32 +02:00
jschoubben
e33191161d
Issue 169: two module-defined seats, and the gap — a seat definition has no neutral home
...
nfs-share and smb-share share an intent, not a contract; one seat would be
a union with every field optional. What the exemplar exposes is that a
seat declared inside one module cannot be implemented by another without
depending on it.
2026-09-30 13:52:20 +02:00
jschoubben
6e08cdf3d6
Merge pull request 'Every machine self-updates, verified, and 107's gate has opened' ( #216 ) from issue/142-self-update-on-every-machine into main
2026-09-30 11:51:53 +00:00