c82e933268
Merge pull request 'Genesis: the first user list lets the controller hear the forge's merges' (#38) from fix/genesis-follows-the-forge into main
main
mesh-admin2026-09-28 01:13:18 +00:00
673912ccdc
Merge pull request 'A host adopts a delivered membership at start, not only after a declaration' (#37) from feat/a-host-adopts-a-membership-at-start into main
mesh-admin2026-09-28 00:40:27 +00:00
4fba884d47
Merge pull request 'Genesis: the first user list lets the controller hear its consumers, and the account has JetStream' (#36) from fix/genesis-accounts-hear-and-have-jetstream into main
jschoubben2026-09-27 23:47:41 +00:00
4ef41ad5a0
Merge pull request 'A host logs in as node.<name> and hears answers on its own inbox' (#35) from fix/a-host-uses-its-own-inbox into main
jschoubben2026-09-27 23:18:30 +00:00
d82fc9a121
Merge pull request 'A machine moves to the bus its declaration tells it to' (#34) from feat/a-machine-moves-to-the-bus-it-is-told into main
jschoubben2026-09-27 22:09:08 +00:00
587b8aa220
Merge pull request 'A host reaches either bus, and a genesis template that raises the mesh on the new one' (#33) from feat/nats-genesis into main
jschoubben2026-09-27 17:36:48 +00:00
6a3435629e
A foundation template that raises the mesh on the bus being built
jschoubben2026-09-27 16:39:32 +02:00
9072f60a30
Enrolment behind a seam, with both transports
jschoubben2026-09-27 01:31:46 +02:00
6e208f7b3e
The host's inbound behind a seam, with both transports
jschoubben2026-09-27 01:25:01 +02:00
54f6eb661a
Merge pull request 'A taken tunnel's found configuration is retired once the take is proven (hq ADR 0119)' (#32) from feat/a-taken-tunnels-predecessor-is-retired into main
jschoubben2026-09-26 22:59:51 +00:00
646be4fdf4
Merge pull request 'Undeclaring gives a unit back the state it was found in, and removes a process the mesh made (hq ADR 0118)' (#31) from feat/undeclaring-leaves-the-machines-units into main
jschoubben2026-09-26 22:59:30 +00:00
e688b3b816
Merge pull request 'A file written into a marked block, so a shared hosts file keeps every line that is not the mesh's (hq 128)' (#30) from feat/a-file-written-into-a-marked-block into main
jschoubben2026-09-26 22:59:21 +00:00
50776b8613
review: a retired configuration that comes back is retired again on its first original, and only wg-quick's own file is ever removed (hq ADR 0119)
jochen2026-09-27 00:55:50 +02:00
b462f461c6
A taken tunnel's found configuration is retired once the take is proven (hq ADR 0119)
jochen2026-09-27 00:47:57 +02:00
23a4436499
review: a unit whose file the mesh wrote is stopped when undeclared, and what was found survives a failed first apply (hq ADR 0118)
jochen2026-09-27 00:41:02 +02:00
08c0f40ff0
review: refuse a process named ".", ".." or with a leading dash, so removing one cannot delete the mesh's own directory (hq ADR 0118)
jochen2026-09-27 00:41:02 +02:00
3112c881e4
Undeclaring gives a unit back the state it was found in, and removes a process the mesh made (hq ADR 0118, issue 130)
jochen2026-09-27 00:21:25 +02:00
06aaac0820
A service may omit its state, so unassigning an uplink module never stops the machine's network manager (hq ADR 0117)
jochen2026-09-27 00:11:58 +02:00
fdc768c476
review: rebuild a file the mesh once wrote whole, keep links, give back a missing line end, and release a hold only after the write (hq issue 128)
jochen2026-09-27 00:09:34 +02:00
25449a31c3
The host's outbound behind a seam, with both transports
jschoubben2026-09-27 00:01:42 +02:00
1cb895346d
Write into a marked block of a text file instead of over it, so a shared hosts file keeps every line that is not the mesh's (hq issue 128)
jochen2026-09-26 23:51:36 +02:00
3ae999497f
Format control_test.go so the gate's fmt step passes on main
jochen2026-09-26 23:51:36 +02:00
32d7234637
Merge pull request 'A host accepts an explicitly-empty declaration (hq 127)' (#29) from feat/an-explicit-empty-declaration into main
jschoubben2026-09-26 21:39:56 +00:00
2722e7b36e
A host accepts an explicitly-empty declaration (hq 127)
jschoubben2026-09-26 23:39:32 +02:00
808e93a477
Merge pull request 'A found tunnel carries its MTU to the mesh' (#28) from feat/a-taken-tunnel-carries-its-mtu into main
jschoubben2026-09-26 20:40:09 +00:00
8e2a1e762d
A found tunnel carries its MTU to the mesh
jschoubben2026-09-26 22:39:54 +02:00
5dbc8e5c3c
Merge pull request 'the spec names the resolver and the address' (#27) from fix/the-spec-names-the-resolver-and-address into main
jschoubben2026-09-25 21:51:42 +00:00
260bf0b752
the spec names the resolver and the address
jschoubben2026-09-25 23:51:30 +02:00
93caf26aed
Merge pull request 'a container may name its resolvers and its own address' (#26) from feat/a-container-may-name-its-resolver-and-its-address into main
jschoubben2026-09-25 21:48:44 +00:00
3ac765db65
a container may name its resolvers and its own address
jschoubben2026-09-25 23:48:31 +02:00
7e245dae92
Merge pull request 'inspect by kind, not the ambiguous bare form — a same-named network stops a container from ever being found' (#25) from fix/inspect-by-kind-not-the-ambiguous-bare-form into main
jschoubben2026-09-24 18:29:44 +00:00
5dd439df50
inspect by kind, not the ambiguous bare form — a same-named network stops a container from ever being found
jschoubben2026-09-24 19:50:16 +02:00
f68139c9d1
Merge pull request 'Take over the found tunnel: its key, its port, its peers; stop it, never flush (hq ADR 0105)' (#24) from feat/adopt-the-tunnel into main
jschoubben2026-09-23 22:38:36 +00:00
fc593b9dfd
Stop nothing the mesh cannot replace, give the tunnel back on failure, and take it over after enrolment
jschoubben2026-09-24 00:02:08 +02:00
83306b2dba
Merge pull request 'Recreate a container when the content of a file it reads at creation changes (hq issue 103)' (#22) from fix/recreate-on-content-change into main
jschoubben2026-09-23 21:44:21 +00:00
4840e21405
Say in the plan which file a container would be recreated for
jschoubben2026-09-23 23:42:41 +02:00
982b84310e
Look at what a container mounts directly, accept a pre-upgrade label, and write the genesis secret without a newline
jschoubben2026-09-23 23:37:50 +02:00
c60228e719
Recreate a container when the content of a file it reads at creation changes
jschoubben2026-09-23 23:12:52 +02:00
977df39e0d
Merge pull request 'Refuse a declaration for the other mode, or older than the mesh's last, and preview before applying (hq issue 104)' (#23) from fix/reconcile-refuses-stale into main
jschoubben2026-09-23 21:38:33 +00:00
f08a8ea3f7
Refuse every file once the mesh has spoken, plan the cutover as one, and let the kept declaration repair the mode
jschoubben2026-09-23 23:35:49 +02:00
7283924a35
Take over the found tunnel: its key, its port, its peers; stop it, never flush
jschoubben2026-09-23 23:26:35 +02:00
27c4b765b2
Refuse a declaration for the other mode, or older than the mesh's last, and say what an apply would change first
jschoubben2026-09-23 23:15:28 +02:00
9176aea6c4
Merge pull request 'The packages port given at genesis is a node setting, not manifest text (hq issue 085)' (#21) from feat/packages-port into main
jschoubben2026-09-22 21:59:46 +02:00
744beb6c51
A re-run does not replace the registered forge with whatever checkout it was given
jschoubben2026-09-22 21:56:42 +02:00
c4ce57997e
The packages port given at genesis is a module's setting, like every other
jschoubben2026-09-22 21:40:02 +02:00
0db1fbdb3b
Merge pull request 'Adoption mode: a node in use is adopted before it is converged (hq ADR 0100–0103)' (#20) from feat/adoption-mode into main
jschoubben2026-09-22 21:01:46 +02:00
6dce63b534
Say plainly where the raised package registry runs, and why an action outside a container still runs
jschoubben2026-09-22 20:01:26 +02:00
c03a31cec5
Count only a record of making something at a path as the mesh's, not an access record (hq ADR 0103)
jschoubben2026-09-22 20:01:14 +02:00
01e8affa89
Count an unasked report as said only once the broker has taken it (hq ADR 0100)
jschoubben2026-09-22 20:00:59 +02:00
b4c21b4f67
Read a machine's iptables rules when it has no nft, instead of calling it unfiltered (hq ADR 0100)
jschoubben2026-09-22 19:59:22 +02:00
c7ff0b9026
Refuse an endpoint whose port is not the one the private network's hub binds (hq ADR 0100)
jschoubben2026-09-22 19:58:37 +02:00
04665d36c8
Exempt only the daemons a fresh machine was measured to run from counting as in use (hq ADR 0101)
jschoubben2026-09-22 19:57:52 +02:00
7beb752be0
Take a key or list member the host may have written itself as the mesh's, so undeclaring gives the file back (hq ADR 0102)
jschoubben2026-09-22 19:57:15 +02:00
0bd22e50f2
Apply one declaration at a time, so the link and the reconcile do not lose each other's record
jschoubben2026-09-22 19:56:05 +02:00
9839006d48
Retire the found firewall only once the mesh's own filter is loaded on the machine (hq ADR 0100)
jschoubben2026-09-22 19:54:43 +02:00
5f126021b7
Keep the originals the carried bundle writes over beside the node's state (hq ADR 0100)
jschoubben2026-09-22 19:53:50 +02:00
eb2f4fcf53
Keep an original by its path and its content, so a second original at one path is not discarded (hq ADR 0100)
jschoubben2026-09-22 19:53:15 +02:00
232ed74940
gofmt the ufw rule's direction field
jschoubben2026-09-22 19:52:40 +02:00
40e8ea9fda
Hold a unit an administrator installed whatever its state, and a packaged unit only when the machine uses it (hq ADR 0103)
jschoubben2026-09-22 19:52:37 +02:00
d3f2595968
Read a ufw rule's direction: an outgoing rule answers no opening, and incoming is the default ufw merges on (hq ADR 0103)
jschoubben2026-09-22 19:51:35 +02:00
dc861fb4a8
Do not arm a scheduled step of a module held as found on an adopted node (hq ADR 0103)
jschoubben2026-09-22 19:48:05 +02:00
da008460ac
Fail a resource when the container runtime cannot answer, instead of reading silence as nothing there (hq ADR 0100)
jschoubben2026-09-22 19:46:50 +02:00
0ea646b384
Keep the derived filter in force when a guard resource failed on the way back to adopted (hq ADR 0103)
jschoubben2026-09-22 19:45:33 +02:00
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)
jschoubben2026-09-22 18:47:48 +02:00
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)
jschoubben2026-09-22 18:35:03 +02:00
272e1a65ea
Reload the guard for a changed table and restart it only for a changed unit, as the controller declares it (hq ADR 0103)
jschoubben2026-09-22 18:33:57 +02:00
b4f3eaf11b
Release a whole-file hold once the file is declared written into (hq ADR 0102)
jschoubben2026-09-22 18:33:45 +02:00
bd3fd17ad8
Do not count the machine's own plumbing mounted into a container as found data (hq ADR 0103)
jschoubben2026-09-22 18:33:29 +02:00
a4e4632077
gofmt the store's firewall record
jschoubben2026-09-22 18:33:13 +02:00
444ad8f3cf
Record the forward policies before disabling ufw, so a retried retirement restores them (hq ADR 0100)
jschoubben2026-09-22 18:33:09 +02:00
aef4993d10
Hold an archive, a process's unit and a user found on an adopted node for an untaken module (hq ADR 0103)
jschoubben2026-09-22 18:32:20 +02:00
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)
jschoubben2026-09-22 18:30:13 +02:00
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)
jschoubben2026-09-22 18:29:06 +02:00
facf6af46a
Add the mesh's members to a list found in a file written into, and take back only those (hq ADR 0102)
jschoubben2026-09-22 18:27:51 +02:00
48a8f4cf9d
Point the builder's package binding at the port given with --packages-port (hq ADR 0100)
jschoubben2026-09-22 18:16:00 +02:00
4a095df2f9
Let go of a hold whose resource is no longer declared, touching nothing on disk (hq ADR 0100)
jschoubben2026-09-22 18:14:37 +02:00
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)
jschoubben2026-09-22 18:14:37 +02:00
35ecf68393
Accept --registry as a host alone again, completing it with the registry's port (hq ADR 0100)
jschoubben2026-09-22 18:08:50 +02:00
d59d232656
Let a re-run of genesis find the package registry it raised itself under its own name (hq ADR 0100)
jschoubben2026-09-22 18:08:20 +02:00
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)
jschoubben2026-09-22 18:08:02 +02:00
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)
jschoubben2026-09-22 18:06:47 +02:00
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)
jschoubben2026-09-22 18:04:48 +02:00
8e2f75454d
Put back the forward policy ufw disable opens when the found firewall is retired, as measured on a lab machine (hq ADR 0100)
jschoubben2026-09-22 18:03:30 +02:00
588ab71d14
Remove an adopted node's guard and openings last on the flip, and keep them if anything failed (hq ADR 0103)
jschoubben2026-09-22 18:02:46 +02:00
9033e3da98
Retire the found firewall only on a converged declaration from the mesh, never on a carried apply (hq ADR 0100)
jschoubben2026-09-22 18:01:49 +02:00
c989b57439
Guard the broker's plaintext port too at an adopted genesis: the filter admits it from the private network only (hq ADR 0103)
jschoubben2026-09-22 18:01:14 +02:00
14b3ffbd40
Guard only packets addressed to this machine, and load the guard before the network and stop it only at shutdown (hq ADR 0103)
jschoubben2026-09-22 18:00:54 +02:00
1e0c6a3516
Publish a reconcile report when what is reachable changed, so the controller's converge preview stays fresh (hq ADR 0100)
jschoubben2026-09-22 18:00:03 +02:00
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)
jschoubben2026-09-22 17:48:57 +02:00
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)
jschoubben2026-09-22 17:38:17 +02:00
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)
jschoubben2026-09-22 17:37:01 +02:00
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)
jschoubben2026-09-22 17:32:44 +02:00
4811f176fd
Refuse a converged genesis on a machine in use, naming every container and listener counted (hq ADR 0100)
jschoubben2026-09-22 17:29:32 +02:00