Commit Graph

  • 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) jschoubben 2026-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) jschoubben 2026-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) jschoubben 2026-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) jschoubben 2026-09-22 17:29:32 +02:00
  • 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) jschoubben 2026-09-22 17:28:36 +02:00
  • 770f589401 Report what an adopted node holds, its firewall and what is reachable, and speak unasked when that changes (hq ADR 0100) jschoubben 2026-09-22 17:22:31 +02:00
  • 3c90d155b3 Converge openings through the firewall an adopted node was found with, and retire it only when the node converges (hq ADR 0100) jschoubben 2026-09-22 17:19:49 +02:00
  • 3a613113be Keep what an adopted node was found holding until its module is taken, and report it held (hq ADR 0100) jschoubben 2026-09-22 17:14:04 +02:00
  • fcc447c216 Read a node's adoption from every declaration, so the host knows which modules are untaken (hq ADR 0100) jschoubben 2026-09-22 17:11:26 +02:00
  • 4fc0330937 Merge pull request 'An enrolling node asks again while the mesh cannot answer, and proves it holds its key (issue 083)' (#19) from multiple-fixes into main jschoubben 2026-09-22 14:42:56 +02:00
  • 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) jschoubben 2026-09-22 14:33:31 +02:00
  • 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 jschoubben 2026-09-22 14:23:20 +02:00
  • 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) jschoubben 2026-09-22 14:07:25 +02:00
  • 0ed8914c07 Merge pull request 'A run-once step names what it reads and runs again when it changed (ADR 0099)' (#18) from multiple-fixes into main jschoubben 2026-09-21 23:58:46 +02:00
  • 8da78de210 A run-once step names what it reads and runs again when it changed (novox/hq ADR 0099, issue 077) jschoubben 2026-09-21 23:25:06 +02:00
  • e8b6d9ac31 Merge pull request 'Genesis registers the control plane with the manifest its build produced (hq issue 072)' (#17) from feat/one-controller-manifest into main jschoubben 2026-09-21 19:23:17 +02:00
  • ffe7dbd348 Step 9 without a build is refused, and a test says so jschoubben 2026-09-21 19:21:04 +02:00
  • 8afbe57814 The pinning line shows the built image's id, not one digit of it jschoubben 2026-09-21 15:27:13 +02:00
  • 5223169226 Genesis registers the control plane with the manifest its build produced jschoubben 2026-09-21 15:17:47 +02:00
  • 4661025eb7 Merge pull request 'The host applies the newest declaration, a file may be created once, the foundation filters first (issues 031, 035, 054)' (#16) from feat/migration-blockers into main jschoubben 2026-09-21 13:48:51 +02:00
  • c32eada62b The base filter opens the bus and the registry in the input chain too jschoubben 2026-09-21 12:28:57 +02:00
  • b72b71a989 The host applies the newest declaration, a file may be created once, the foundation filters first jschoubben 2026-09-21 12:11:52 +02:00
  • d7eea1ab66 Merge pull request 'The installer delivers any MESH_…_FILE own secret, not only the store's' (#15) from feat/secret-not-in-environment into main jschoubben 2026-09-21 11:59:15 +02:00
  • c5c42376c1 The installer delivers any MESH_…_FILE own secret, not only the store's (ADR 0086) jschoubben 2026-09-21 10:10:33 +02:00
  • e30a6b08ea Merge pull request 'Genesis makes the root secrets and the operator key, and installs the vault' (#14) from feat/secrets-vault into main jschoubben 2026-09-21 10:03:17 +02:00
  • d756effc33 The broker-admin marker ends in a newline, and the transcript never says a credential jschoubben 2026-09-21 01:32:51 +02:00
  • 70d0f36896 Installer review: secrets are staged privately, and a bundle is 0600 whether or not it existed jschoubben 2026-09-21 01:26:35 +02:00
  • 036af3cfdc The export is its own installer step, and the result names the operator files jschoubben 2026-09-21 01:11:52 +02:00
  • ee0c8b856e Genesis makes the root secrets, the operator key, and installs the vault jschoubben 2026-09-21 00:12:55 +02:00
  • 1f483fcacd Merge pull request 'Self-upgrade installer: genesis pivot, rename, adopt store+broker' (#13) from feat/a-bed-that-hands-over-nothing into main jschoubben 2026-09-16 23:22:06 +02:00
  • 56124c38b7 Phase 3.2: the foundation broker binds amqp (5672) mesh-wide for consumers jschoubben 2026-09-16 21:24:13 +02:00
  • 1232031fb9 Correct store phrasing — a module gets a database only if it asks jschoubben 2026-09-16 21:20:00 +02:00
  • 9109a8c178 Phase 3.1: adopt the foundation store as the postgres module jschoubben 2026-09-16 20:32:12 +02:00
  • 121367319d Rename mesh-control -> mesh-controller, substrate -> foundation jschoubben 2026-09-16 18:40:40 +02:00
  • 01c7730fb3 Genesis raises gitea correctly: host network, honest SQL, matched ROOT_URL jschoubben 2026-09-16 14:11:36 +02:00
  • 1a7c9fdac3 gitea runs on the host network at genesis jschoubben 2026-09-16 10:33:07 +02:00
  • 79863068fc Genesis raises the package registry before it builds the base jschoubben 2026-09-16 10:27:11 +02:00
  • 21474b0144 The installer goes as far as it can, and asks where a human must choose jschoubben 2026-09-15 21:56:23 +02:00
  • 7a223464e5 Genesis installs distribution, which is what the software is called jschoubben 2026-09-15 20:51:00 +02:00
  • de5160de4a A unit file reinterprets an environment value; a container does not jschoubben 2026-09-15 12:40:36 +02:00
  • f5cf9510c1 One kind for the module's own code, with three modes jschoubben 2026-09-15 10:26:31 +02:00
  • 1f0fb85128 A daemon says what to run, not how it is hosted jschoubben 2026-09-15 02:29:33 +02:00
  • 200c6c127f Merge pull request 'A one-shot service that finished is not stopped, and a container is what it reads' (#12) from fix/a-oneshot-that-finished-is-not-stopped into main jschoubben 2026-09-14 17:16:14 +02:00
  • e7f94e0402 A one-shot service that finished is not stopped, and a container is what it reads jschoubben 2026-09-14 16:51:57 +02:00
  • 0f143d16ce Merge pull request 'The installer names the unit this project packages' (#11) from fix/the-installer-names-the-unit-we-package into main jschoubben 2026-09-14 14:11:42 +02:00
  • cc9b3c1a8e The installer names the unit this project packages jschoubben 2026-09-14 14:11:27 +02:00
  • 6205a93bfe Merge pull request 'Installation sets up the builder, so a raised mesh can produce' (#10) from feat/installation-sets-up-the-builder into main jschoubben 2026-09-14 12:32:04 +02:00
  • 8eeb28f00b Installation sets up the builder, so a raised mesh can produce jschoubben 2026-09-14 12:31:43 +02:00
  • 3dfe574e46 Merge pull request 'The installer carries a builder and builds the control plane it raises' (#9) from feat/a-module-is-a-repository-and-a-path into main jschoubben 2026-09-13 11:16:50 +02:00
  • 163a44a49a Preflight names the carried image for what it is jschoubben 2026-09-13 04:38:44 +02:00
  • 432e3edcfd Publish the image this mesh built, not the one the installer carried jschoubben 2026-09-13 04:24:18 +02:00
  • e1a2fe7323 The installer carries a builder and builds the control plane it raises jschoubben 2026-09-13 04:08:58 +02:00
  • cab83b61c8 Merge pull request 'mesh-bootstrap: the installer, and the two things its first real run found' (#8) from fix/bootstrap-first-run into main jschoubben 2026-09-11 21:56:56 +02:00
  • 26ff447aa3 bootstrap: the mesh hearing from a machine is not an agent running on it jschoubben 2026-09-11 12:11:57 +02:00
  • 7e3481f025 bootstrap: the slot the installer fills is not a registry to reach for jschoubben 2026-09-11 11:38:15 +02:00
  • cb5e137297 bootstrap: read the image id back from the runtime, never predict it jschoubben 2026-09-11 00:12:36 +02:00
  • 0a88dc1f9d bootstrap: follow the mount from the variable to the secret jschoubben 2026-09-11 00:03:14 +02:00
  • f534cf8b42 bootstrap: the rest of the pivot — enrol, registry, publish, reinstall, retire jschoubben 2026-09-10 23:59:57 +02:00
  • af953dbb0d bootstrap: the temporary control plane gets a temporary name jschoubben 2026-09-10 23:59:32 +02:00
  • 9c9e02ba1d mesh-bootstrap: drop an unread parameter jschoubben 2026-09-10 23:18:07 +02:00
  • b82ab95f74 mesh-bootstrap: the first-node procedure, as a program rather than a test jschoubben 2026-09-10 23:17:30 +02:00
  • 4af9483219 declaration: an image may be named by the digest of its own configuration jschoubben 2026-09-10 22:40:02 +02:00
  • 46cc06847d Merge pull request 'apply: pull a scheduled container's image at apply, without running it' (#7) from feat/schedule-pull into main jschoubben 2026-09-07 02:48:43 +02:00
  • e5af6bb58e apply: ensure a scheduled container's image is present at apply, without running it jschoubben 2026-09-07 02:23:46 +02:00
  • a37acf77ae Merge pull request 'apply: run a scheduled container on its cadence, non-gating and non-stacking (ADR 0053)' (#6) from feat/apply-schedule into main jschoubben 2026-09-06 14:27:44 +02:00
  • 9d1f001dcc apply: a scheduled step is a container run on a cadence (ADR 0053) jschoubben 2026-09-06 14:08:44 +02:00
  • 24e9ae4065 Merge pull request 'Apply a run-once container to completion and gate on it (ADR 0052)' (#5) from feat/apply-run-once into main jschoubben 2026-09-06 00:05:08 +02:00
  • 19e5dd83ea apply: a run-once container is a step the host runs to completion (ADR 0052) jschoubben 2026-09-05 23:55:45 +02:00
  • 91e0d6a4c7 Merge pull request 'The host mounts an operator-owned path and owns nothing (ADR 0051)' (#4) from feat/mount-operator-owned into main jschoubben 2026-09-05 22:48:13 +02:00
  • f06eea5fa3 declaration: an access is mounted, and the host owns nothing about it jschoubben 2026-09-05 22:19:33 +02:00
  • 291cab1091 Merge pull request 'Unify trunk on main: initialization → main' (#3) from initialization into main jschoubben 2026-09-05 03:13:32 +02:00
  • 652984b09d Merge pull request 'A container reflects its config: restart-on for containers (issue 009)' (#2) from issue/009-container-restart-on into initialization jschoubben 2026-09-05 03:07:11 +02:00
  • aa441bac19 A container reflects its config: restart-on for containers (04-ISSUES/009) jschoubben 2026-09-04 23:39:47 +02:00
  • 8211d8b6fb A report says which declaration it is about jschoubben 2026-09-02 00:01:12 +02:00
  • aca9eb37ff An owner may be a number the machine has never heard of jschoubben 2026-09-01 23:45:02 +02:00
  • b91342a6bd A machine says which ports it already holds jschoubben 2026-09-01 18:29:39 +02:00
  • a7a2a48615 A full host implements the network shape, and something checks that it does jschoubben 2026-09-01 00:36:17 +02:00
  • 8c248e3d7f A secret can reach a container's environment, and sit inside a config file jschoubben 2026-08-31 22:25:57 +02:00
  • f48e06473d A directory holding anything the mesh did not put there is never removed jschoubben 2026-08-31 19:53:41 +02:00
  • 4a43e21794 A network is a shape, so that it can be removed jschoubben 2026-08-31 18:55:06 +02:00
  • af9d316258 Resources are applied in the order they were declared, and now something says so jschoubben 2026-08-31 18:50:10 +02:00
  • 8e12b3c9e4 Name the decisions these tests defend, and check the bundle at all jschoubben 2026-08-31 17:33:34 +02:00
  • b4d2e851a3 Name a stale package index, rather than reporting a failed install jschoubben 2026-08-31 12:59:53 +02:00
  • c3d6f240fe Give a container the names, rather than a resolver to ask jschoubben 2026-08-31 12:05:52 +02:00
  • 0e2b288bb6 A container can be told where to resolve names jschoubben 2026-08-31 11:09:49 +02:00
  • 8fcfa88fe0 A machine that wakes or moves says so, instead of waiting to be told jschoubben 2026-08-31 10:21:26 +02:00
  • 5bc0006e83 The substrate raises a third context's store jschoubben 2026-08-31 02:52:26 +02:00
  • efa2e13513 The store's readiness is checked over TCP, not the socket jschoubben 2026-08-31 01:01:00 +02:00
  • f9c70a7c97 Something after the declaration is refused whole jschoubben 2026-08-31 00:51:29 +02:00
  • c83ed4eca9 A node's serving key is stored in the format a server reads jschoubben 2026-08-31 00:41:10 +02:00
  • 5237944473 A node generates the key it serves TLS with jschoubben 2026-08-31 00:09:15 +02:00
  • 08e91065b4 A failed action stops what follows; nothing else does jschoubben 2026-08-30 20:07:42 +02:00
  • aec37bf89e Attempt every resource, and report every failure jschoubben 2026-08-30 19:26:02 +02:00
  • b2ecf25594 When the store does not come up, say what it said jschoubben 2026-08-30 04:06:10 +02:00
  • c57087d75d A user, bytes, and an archive — because most of what people install is not a service jschoubben 2026-08-30 03:22:38 +02:00
  • bc5b6e2143 One reader for a declaration file, because there were three jschoubben 2026-08-30 02:54:25 +02:00
  • bdc9c436b4 The token says what the mesh calls this machine jschoubben 2026-08-30 02:36:42 +02:00
  • ef0d96a1a8 Write out what this node says when it joins, for the mesh to read jschoubben 2026-08-30 02:20:43 +02:00
  • a752fc514b A file the mesh can deliver and cannot read jschoubben 2026-08-30 00:12:22 +02:00
  • d81f826089 A check that what the control plane emits is what this host accepts jschoubben 2026-08-29 23:35:11 +02:00