Commit Graph

  • 5718add8c3 Merge pull request 'A cross-node module reaches the broker by the hub's overlay name' (#27) from multi-node/broker-reaches-over-overlay into main jschoubben 2026-09-17 01:44:41 +02:00
  • afce2a5f41 A cross-node module reaches the broker by the hub's overlay name, not the public address jschoubben 2026-09-17 01:34:11 +02:00
  • 68201c6478 Merge pull request 'Self-upgrade installer: SDK-by-version, mesh-controller rename, foundation adopted' (#26) from feat/a-bed-that-hands-over-nothing into main jschoubben 2026-09-16 23:21:34 +02:00
  • c3b88b9148 Rename mesh-control -> mesh-controller, substrate -> foundation jschoubben 2026-09-16 18:40:40 +02:00
  • 366840fc0d push --wait: optionally block until a named node applies what it was sent jschoubben 2026-09-16 13:23:01 +02:00
  • 6a7e701629 Write the package credential only into a build that asks for it jschoubben 2026-09-16 12:45:18 +02:00
  • ae55bd7bde Builds that need the registry run on the host network jschoubben 2026-09-16 10:33:07 +02:00
  • 4b9bc50aad The builder resolves the SDK from the mesh registry, and can publish packages jschoubben 2026-09-16 10:27:26 +02:00
  • 2fb700d61b Builder diagnostics go to stderr; stdout is the result alone jschoubben 2026-09-15 23:01:04 +02:00
  • 9070d2502c The builder narrates every step, and every command it runs jschoubben 2026-09-15 22:26:35 +02:00
  • b8cacbaf4d What remains of names.go is the naming jschoubben 2026-09-15 21:33:20 +02:00
  • fcdb065660 The mesh's knowledge is a fact a module asks for, not three modules jschoubben 2026-09-15 21:31:18 +02:00
  • 18ec632baa The example manifest follows the rename jschoubben 2026-09-15 20:51:00 +02:00
  • 385bc5b9bf A module can be told which port it was given jschoubben 2026-09-15 13:20:01 +02:00
  • e3748bc06f One module, several languages, each bundle packed alone jschoubben 2026-09-15 02:09:06 +02:00
  • 4b7bd1b3e2 A module says what it is written in, and needs no Dockerfile jschoubben 2026-09-15 01:59:07 +02:00
  • 3ae7b88c6d A catalogue asks for what it was not there to hear jschoubben 2026-09-15 01:26:58 +02:00
  • 2b82872ac3 A build keeps what it was told jschoubben 2026-09-15 01:22:34 +02:00
  • dda001d64b The firewall opens the port the mesh itself runs on jschoubben 2026-09-15 00:54:31 +02:00
  • 5062c36fc9 A binding answered on this very node still carries an address jschoubben 2026-09-14 21:11:37 +02:00
  • 30dfc9969c Merge pull request 'Only a thing built and never run is unassignable' (#25) from fix/only-a-build-input-is-unassignable into main jschoubben 2026-09-14 17:33:02 +02:00
  • 25d2fe1308 Only a thing built and never run is unassignable jschoubben 2026-09-14 17:32:43 +02:00
  • 68e9a16c57 Merge pull request 'ssh is never left without a rule' (#24) from fix/ssh-is-never-left-with-no-rule into main jschoubben 2026-09-14 17:16:31 +02:00
  • 55d468798d ssh is never left without a rule jschoubben 2026-09-14 16:53:39 +02:00
  • 844dd09434 Merge pull request 'The firewall governs what is forwarded, and never closes ssh' (#23) from feat/the-firewall-covers-forwarded-traffic into main jschoubben 2026-09-14 15:27:34 +02:00
  • c8d8211385 The firewall governs what is forwarded, and never closes ssh jschoubben 2026-09-14 15:27:10 +02:00
  • 260447282e Merge pull request 'A module that puts nothing on a machine cannot be assigned to one' (#22) from feat/a-module-that-runs-nowhere-is-not-assignable into main jschoubben 2026-09-14 11:09:20 +02:00
  • 95a9da8bdb A module that puts nothing on a machine cannot be assigned to one jschoubben 2026-09-14 11:08:32 +02:00
  • 91db25389e Merge pull request 'An artifact may name which stage of its recipe to stop at' (#21) from feat/build-and-run-are-two-images into main jschoubben 2026-09-14 02:02:28 +02:00
  • 811b805c67 An artifact may name which stage of its recipe to stop at jschoubben 2026-09-14 01:57:07 +02:00
  • cfe2816495 A module names the module its build stands on, not a copy of it jschoubben 2026-09-13 23:53:22 +02:00
  • cb5108a864 Merge pull request 'A module is a repository and a path, the builder announces what it made, and the mesh acts on it' (#20) from feat/a-module-is-a-repository-and-a-path into main jschoubben 2026-09-13 11:16:32 +02:00
  • 21abd948aa Say that a module is unbuilt, rather than letting a machine call it malformed jschoubben 2026-09-13 04:56:00 +02:00
  • 3a08789d3c The control plane's declaration lives with the control plane jschoubben 2026-09-13 03:27:10 +02:00
  • 1a48214ef0 Flags may sit on either side of the repository jschoubben 2026-09-13 03:26:02 +02:00
  • 603be706fc The builder builds one module and stops, with no broker and no registry jschoubben 2026-09-13 03:24:10 +02:00
  • 588aa424e2 The mesh acts on what the catalogue decided a build meant jschoubben 2026-09-13 01:55:07 +02:00
  • ca689073c4 A build says which machine made it, in the mesh's name for that machine jschoubben 2026-09-13 01:05:40 +02:00
  • 3ffddff8ed The builder announces what it built, and what it was built on top of jschoubben 2026-09-13 00:57:41 +02:00
  • f151de103f Build a module from a repository and a path within it jschoubben 2026-09-12 16:45:50 +02:00
  • c4030947b0 The routing record is 0066, not 0056 jschoubben 2026-09-11 00:09:56 +02:00
  • 522d8be925 Read a context's store connection from a file, not only from the environment jschoubben 2026-09-10 23:40:37 +02:00
  • c6029504e4 Merge branch 'fix/settings-assign-and-cli' into feat/adr-0056-compose-and-propagate jschoubben 2026-09-10 21:17:46 +02:00
  • 72f30e9c29 overlay: placing a node with nothing said no longer unplaces it jschoubben 2026-09-10 21:17:09 +02:00
  • 0be227bd7e status: one machine that cannot be worked out no longer takes the answer from the rest jschoubben 2026-09-10 21:12:06 +02:00
  • 946fddd622 catalogue: a module may name the machine it was assigned to jschoubben 2026-09-10 21:12:04 +02:00
  • acbb8cf6da node public-domain: asking what it is no longer takes it away jschoubben 2026-09-10 21:11:48 +02:00
  • d032fe6e8d assign: what it checks is the mesh, not the one machine jschoubben 2026-09-10 21:11:33 +02:00
  • f5f860fd2b inventory: forgetting a module says what goes with it, and refuses until told jschoubben 2026-09-10 21:11:15 +02:00
  • 9fab0b731a catalogue: a contribution reaches the port its own machine published, from any machine jschoubben 2026-09-10 21:08:09 +02:00
  • e78c849002 catalogue: a provider that names a provision and says nothing is not the answer jschoubben 2026-09-10 21:04:01 +02:00
  • 76fcbda9a7 route-proxy: an ACME account belongs to the authority that issued it jschoubben 2026-09-10 21:02:00 +02:00
  • 54cb915c4e push: one machine that cannot be worked out no longer holds back the mesh jschoubben 2026-09-10 20:59:21 +02:00
  • b824c65ab0 catalogue: a co-located provider's served values, and a co-located contribution's port jschoubben 2026-09-10 20:57:14 +02:00
  • 0fb2ab7716 catalogue: composeName handles the apex label '@' (bare public domain) jschoubben 2026-09-10 00:27:11 +02:00
  • 98f5d34610 route-proxy: an empty ACME_CA_BUNDLE means the system trust store jschoubben 2026-09-10 00:22:06 +02:00
  • 232862315c catalogue: compose a route's name from a label and its node's domain, and resolve it in-mesh jschoubben 2026-09-09 23:27:35 +02:00
  • c147a26138 catalogue: announce a same-node provider at the port it is published on jschoubben 2026-09-09 23:02:50 +02:00
  • 9e29772ed4 Merge pull request 'resolve: one un-hostable assignment no longer takes down a whole node's push' (#19) from feat/assign-hostability into main jschoubben 2026-09-08 18:45:21 +02:00
  • a92c11be12 Resolve: one un-hostable assignment no longer refuses the whole node jschoubben 2026-09-08 18:37:41 +02:00
  • 474382c141 Merge pull request 'catalogue: deliver a keyless same-node provider's served facts' (#18) from feat/serve-here-keyless into main jschoubben 2026-09-07 05:25:57 +02:00
  • b78a911e34 catalogue: deliver a keyless same-node provider's served facts jschoubben 2026-09-07 05:08:04 +02:00
  • e5eaa0478a Merge pull request 'adapters: openai is a static-key vendor' (#17) from feat/openai-access into main jschoubben 2026-09-07 04:25:53 +02:00
  • 55753d5cfd adapters: openai is a static-key vendor jschoubben 2026-09-07 04:25:26 +02:00
  • e03833ec40 Merge pull request 'catalogue: give host-network containers the mesh's names too' (#16) from feat/usage-store into main jschoubben 2026-09-07 04:08:19 +02:00
  • 958bef56c7 catalogue: give host-network containers the mesh's names too jschoubben 2026-09-07 03:44:28 +02:00
  • d9c4818e6d Merge pull request 'model-access: refreshable-grant — manager holds the refresh token, control plane never reads it' (#15) from feat/model-access-submit into main jschoubben 2026-09-07 02:48:49 +02:00
  • f00077f376 secrets: regenerate the module sealed-box cross-check fixture jschoubben 2026-09-07 02:17:54 +02:00
  • 33fd28ffa6 licences: deliver the refresh token by the ordinary sealed path, not a bespoke envelope jschoubben 2026-09-07 01:55:08 +02:00
  • 8e0c22fc2e licences: submit-refresh, the module-produced refresh entry point jschoubben 2026-09-07 01:00:27 +02:00
  • 59faa150ac Merge pull request 'model-access B: the refreshable-grant machinery (ADR 0050 carve-out)' (#14) from feat/model-access-refreshable into main jschoubben 2026-09-07 00:25:15 +02:00
  • 2e33c5e80e model access B: refreshable-grant machinery — manager, at-rest refresh token, refresh flow jschoubben 2026-09-07 00:23:35 +02:00
  • 163200c4dd Merge pull request 'model-access A: provider→vendor + adapter dispatch + static-key (ADR 0050 foundation)' (#13) from feat/model-access-vendor into main jschoubben 2026-09-07 00:02:27 +02:00
  • ddb41baaf4 Model access is vendor-agnostic: rename provider→vendor, add adapter seam (Phase A) jschoubben 2026-09-06 23:49:12 +02:00
  • 671fb4f8f3 Merge pull request 'fix: a require-only consumer of a parameterless provision still asks (mint gap)' (#12) from fix/require-only-mint into main jschoubben 2026-09-06 23:21:25 +02:00
  • d0ef659824 fix: a require-only consumer of a parameterless provision still asks (and is minted a credential) jschoubben 2026-09-06 23:20:58 +02:00
  • b69fbc0e86 Merge pull request 'schedule: parse + validate a cron on a container, refuse run-once+schedule (ADR 0053)' (#11) from feat/schedule-container into main jschoubben 2026-09-06 14:27:41 +02:00
  • 78b8b6e256 catalogue: carry and validate a container schedule (ADR 0053) jschoubben 2026-09-06 14:08:51 +02:00
  • dc65440e31 Merge pull request 'fix: a ${secret:} placeholder must fill from the file-owner's credential (provider-seal-key gate)' (#10) from fix/secret-per-consumer into main jschoubben 2026-09-06 13:47:22 +02:00
  • 99a753994e fix: fill a ptr-secret placeholder from the file-owner's credential, not the last consumer's jschoubben 2026-09-06 13:46:55 +02:00
  • 3b0f17b8fd Merge pull request 'run-once: a container the host runs to completion (ADR 0052)' (#9) from feat/lifecycle-run-once into main jschoubben 2026-09-06 00:05:06 +02:00
  • f96c247c5f catalogue: run-once is a step the host runs to completion (ADR 0052) jschoubben 2026-09-05 23:57:33 +02:00
  • 6bb9434298 Merge pull request 'A module accesses operator-owned data, it does not own it (ADR 0051)' (#8) from feat/shared-data-access into main jschoubben 2026-09-05 22:48:11 +02:00
  • bcdde475cd Merge pull request 'A bare alive moves last_seen and nothing else (convergence race fix)' (#7) from fix/service-only-converge into main jschoubben 2026-09-05 22:47:23 +02:00
  • cae9a3e54f A bare alive moves last_seen and nothing else jschoubben 2026-09-05 22:37:53 +02:00
  • aeb65a3e1d catalogue: a module accesses operator-owned data, and does not own it jschoubben 2026-09-05 22:10:58 +02:00
  • 59fcb41855 Merge pull request 'Resync hq ADR references (0044-0054 -> 0039-0049)' (#6) from feat/adr-ref-resync into main jschoubben 2026-09-05 12:47:52 +02:00
  • 87c193b202 Resync hq ADR references 0044-0054 -> 0039-0049 after the hq record reconciliation jschoubben 2026-09-05 12:47:13 +02:00
  • 5541949b59 Merge pull request 'broker: a module account scopes its tool serve queues + mesh.rpc (ADR 0052)' (#5) from events/tool-account-scope into initialization jschoubben 2026-09-05 03:06:51 +02:00
  • 9b7ba2e20c identity: a consumer's identity fits the tightest backend, via a slug (ADR 0054) jschoubben 2026-09-05 02:51:39 +02:00
  • b1bf1659d9 broker: a module account scopes its tool serve queues and mesh.rpc (ADR 0052) jschoubben 2026-09-04 21:56:05 +02:00
  • b306c74467 filtering: a per-node 'expose' setting overrides a listen's source (ADR 0051) jschoubben 2026-09-04 21:12:33 +02:00
  • 931ca6f01e cli: module issue seals the node and module into the credential jschoubben 2026-09-04 01:53:23 +02:00
  • 64496f0335 broker: the substrate pre-declares a consumer's dead-lettered queue (ADR 0048) jschoubben 2026-09-04 01:51:17 +02:00
  • f41d280e66 cli: module issue — deliver a module its scoped broker account (ADR 0048) jschoubben 2026-09-04 01:33:03 +02:00
  • 47bbb0cca6 broker: a generic module account, scoped by emits and consumes (ADR 0048) jschoubben 2026-09-04 01:31:19 +02:00
  • 2c06c0d663 manifest: emits and consumes — the event relationship jschoubben 2026-09-03 23:44:30 +02:00
  • 68a9235792 The mount gate knows a facility from a directory jschoubben 2026-09-02 02:09:10 +02:00
  • d278edabe0 Three more: nodered, icecast, portainer jschoubben 2026-09-02 02:08:33 +02:00
  • 1c4e10e0d8 The cache keeps no ACL file, and the watch keeps the cache jschoubben 2026-09-02 01:23:38 +02:00