jschoubben
eb2f4fcf53
Keep an original by its path and its content, so a second original at one path is not discarded (hq ADR 0100)
2026-09-22 19:53:15 +02:00
jschoubben
232ed74940
gofmt the ufw rule's direction field
2026-09-22 19:52:40 +02:00
jschoubben
40e8ea9fda
Hold a unit an administrator installed whatever its state, and a packaged unit only when the machine uses it (hq ADR 0103)
2026-09-22 19:52:37 +02:00
jschoubben
d3f2595968
Read a ufw rule's direction: an outgoing rule answers no opening, and incoming is the default ufw merges on (hq ADR 0103)
2026-09-22 19:51:35 +02:00
jschoubben
dc861fb4a8
Do not arm a scheduled step of a module held as found on an adopted node (hq ADR 0103)
2026-09-22 19:48:05 +02:00
jschoubben
da008460ac
Fail a resource when the container runtime cannot answer, instead of reading silence as nothing there (hq ADR 0100)
2026-09-22 19:46:56 +02:00
jschoubben
0ea646b384
Keep the derived filter in force when a guard resource failed on the way back to adopted (hq ADR 0103)
2026-09-22 19:45:33 +02:00
jschoubben
60bb3d895c
Count a unit as found only when the machine runs it or starts it at boot, so a packaged unit nothing ran is not held (hq ADR 0103, found by the adoption bed)
2026-09-22 18:47:48 +02:00
jschoubben
bde5e3461c
Keep the original of any file the host writes over without a record of it, on every node, and name where (hq ADR 0100)
2026-09-22 18:35:03 +02:00
jschoubben
272e1a65ea
Reload the guard for a changed table and restart it only for a changed unit, as the controller declares it (hq ADR 0103)
2026-09-22 18:33:57 +02:00
jschoubben
b4f3eaf11b
Release a whole-file hold once the file is declared written into (hq ADR 0102)
2026-09-22 18:33:45 +02:00
jschoubben
bd3fd17ad8
Do not count the machine's own plumbing mounted into a container as found data (hq ADR 0103)
2026-09-22 18:33:29 +02:00
jschoubben
a4e4632077
gofmt the store's firewall record
2026-09-22 18:33:13 +02:00
jschoubben
444ad8f3cf
Record the forward policies before disabling ufw, so a retried retirement restores them (hq ADR 0100)
2026-09-22 18:33:09 +02:00
jschoubben
aef4993d10
Hold an archive, a process's unit and a user found on an adopted node for an untaken module (hq ADR 0103)
2026-09-22 18:32:20 +02:00
jschoubben
491e04fb8f
Load the guard before removing the derived filter when a node returns to adopted, and defer the adoption's orphans only on the flip (hq ADR 0103)
2026-09-22 18:30:13 +02:00
jschoubben
b531c47486
Refuse an opening ufw would merge into a found rule that does other than a plain allow, and read log types in either place (hq ADR 0103)
2026-09-22 18:29:06 +02:00
jschoubben
facf6af46a
Add the mesh's members to a list found in a file written into, and take back only those (hq ADR 0102)
2026-09-22 18:27:51 +02:00
jschoubben
48a8f4cf9d
Point the builder's package binding at the port given with --packages-port (hq ADR 0100)
2026-09-22 18:16:00 +02:00
jschoubben
4a095df2f9
Let go of a hold whose resource is no longer declared, touching nothing on disk (hq ADR 0100)
2026-09-22 18:14:37 +02:00
jschoubben
824cb60cbb
Hold a found directory, a found service's unit, a container that would mount found data, and a step run in a held container on an adopted node (hq ADR 0103)
2026-09-22 18:14:37 +02:00
jschoubben
d59d232656
Let a re-run of genesis find the package registry it raised itself under its own name (hq ADR 0100)
2026-09-22 18:08:20 +02:00
jschoubben
078e84c681
Read an adopted or converged node's mode from its state on a re-run of genesis, and refuse a flag that disagrees (hq ADR 0103)
2026-09-22 18:08:02 +02:00
jschoubben
52e139d96f
Add no opening a found ufw rule already answers, since ufw takes rules differing only in comment for one, as captured on a lab machine (hq ADR 0103)
2026-09-22 18:06:47 +02:00
jschoubben
da65f84c45
Read fail2ban's bans as no firewall, and an iptables-nft reject as a refusal, from rulesets captured on a lab machine (hq ADR 0100)
2026-09-22 18:04:48 +02:00
jschoubben
8e2f75454d
Put back the forward policy ufw disable opens when the found firewall is retired, as measured on a lab machine (hq ADR 0100)
2026-09-22 18:03:30 +02:00
jschoubben
588ab71d14
Remove an adopted node's guard and openings last on the flip, and keep them if anything failed (hq ADR 0103)
2026-09-22 18:02:46 +02:00
jschoubben
9033e3da98
Retire the found firewall only on a converged declaration from the mesh, never on a carried apply (hq ADR 0100)
2026-09-22 18:01:49 +02:00
jschoubben
c989b57439
Guard the broker's plaintext port too at an adopted genesis: the filter admits it from the private network only (hq ADR 0103)
2026-09-22 18:01:14 +02:00
jschoubben
14b3ffbd40
Guard only packets addressed to this machine, and load the guard before the network and stop it only at shutdown (hq ADR 0103)
2026-09-22 18:00:54 +02:00
jschoubben
0f126d137c
Write into a file the machine shares instead of over it, and reload a service that re-reads its configuration instead of restarting it (hq ADR 0102)
2026-09-22 17:48:57 +02:00
jschoubben
6eabed63eb
Reload the service manager's units before restarting a service whose files changed, and start the guard before the network as the controller declares it (hq ADR 0100)
2026-09-22 17:38:17 +02:00
jschoubben
3e0e6e6b7e
Delete a forwarded opening the way ufw accepts it, and read a fresh machine's resolver as not in use — both measured on a lab machine (hq ADR 0100)
2026-09-22 17:37:01 +02:00
jschoubben
5e3dd3f59c
Raise a machine in use adopted: keep its firewall, load no dropping table, guard the mesh's own ports, and take only the mesh's own modules (hq ADR 0100)
2026-09-22 17:32:44 +02:00
jschoubben
4811f176fd
Refuse a converged genesis on a machine in use, naming every container and listener counted (hq ADR 0100)
2026-09-22 17:29:32 +02:00
jschoubben
3964d9da0a
Take the foundation's ports as genesis inputs, check them free, and hand them to the controller as the node's settings (hq ADR 0100)
2026-09-22 17:28:36 +02:00
jschoubben
770f589401
Report what an adopted node holds, its firewall and what is reachable, and speak unasked when that changes (hq ADR 0100)
2026-09-22 17:22:31 +02:00
jschoubben
3c90d155b3
Converge openings through the firewall an adopted node was found with, and retire it only when the node converges (hq ADR 0100)
2026-09-22 17:19:49 +02:00
jschoubben
3a613113be
Keep what an adopted node was found holding until its module is taken, and report it held (hq ADR 0100)
2026-09-22 17:14:04 +02:00
jschoubben
fcc447c216
Read a node's adoption from every declaration, so the host knows which modules are untaken (hq ADR 0100)
2026-09-22 17:11:26 +02:00
jschoubben
406a5559b0
An enrolling node signs its request with the identity it just generated, so the mesh can tell it from anyone who knows its public key (novox/hq issue 083)
2026-09-22 14:33:31 +02:00
jschoubben
eaebae7b36
Review of 083: the give-up message says to wait out the mesh's hold before asking again; the installer no longer says the token is spent when it may not be
2026-09-22 14:23:20 +02:00
jschoubben
c8bbdb2da5
An enrolling node asks again, with the same request, while the mesh says it cannot answer — for as long as the mesh holds the token for it (novox/hq issue 083)
2026-09-22 14:07:25 +02:00
jschoubben
8da78de210
A run-once step names what it reads and runs again when it changed (novox/hq ADR 0099, issue 077)
2026-09-21 23:25:06 +02:00
jschoubben
ffe7dbd348
Step 9 without a build is refused, and a test says so
2026-09-21 19:21:04 +02:00
jschoubben
8afbe57814
The pinning line shows the built image's id, not one digit of it
2026-09-21 15:27:13 +02:00
jschoubben
5223169226
Genesis registers the control plane with the manifest its build produced
...
The control plane's manifest existed twice: at the root of its repository, read
whenever the mesh rebuilds it from source, and as a copy in the catalogue, read by
genesis. Nothing kept them equal, and the first rebuild replaced the mesh's record
with the repository's shape while every later push was refused (novox/hq
04-ISSUES/072). The builder's one-shot result already carries the manifest it built,
artifact resolved to the image; step 3 keeps it and step 9 registers it, re-pinning
the built image's bare id to the reference the registry assigned. The catalogue is
still read for the registry's and the builder's manifests and for phase two.
2026-09-21 15:17:47 +02:00
jschoubben
c32eada62b
The base filter opens the bus and the registry in the input chain too
...
A container on the machine dialling a port the machine publishes reaches it
through the runtime's proxy — input, not forward — and the builder could not
reach the broker. The derived ruleset opens the mesh's own ports in both
chains; the base one now does the same.
2026-09-21 12:28:57 +02:00
jschoubben
b72b71a989
The host applies the newest declaration, a file may be created once, the foundation filters first
...
031: a window of unacknowledged declarations is drained to the newest; the
rest are set aside and reported as superseded. 035: a file resource may say
create-once — written when absent, kept untouched when present (ADR 0087).
054: the bundle installs nftables and loads a base ruleset before the store
and broker, in the table the filter module later replaces (ADR 0088).
2026-09-21 12:11:52 +02:00
jschoubben
c5c42376c1
The installer delivers any MESH_…_FILE own secret, not only the store's (ADR 0086)
2026-09-21 10:10:33 +02:00