Commit Graph
226 Commits
Author SHA1 Message Date
jschoubben a53dc8c586 Adoption bed (in progress): a machine in use raised adopted, held, opened through its firewall, taken and converged (hq ADR 0100-0103) 2026-09-22 18:19:36 +02:00
jschoubben 514f7a46cd The store-window bed holds a report through the gap, asserts the enrolment is answered meanwhile, and compares the keys the mesh recorded with the ones the machine generated 2026-09-22 14:24:01 +02:00
jschoubben c9fd6d7887 A bed that takes the store away while a machine enrols, and holds the enrolment to completing on its own (novox/hq issue 083) 2026-09-22 14:08:45 +02:00
jschoubben dba95f7e27 The two-node bed's baserow data directory is 0755, as the catalogue's 2026-09-22 13:46:04 +02:00
jschoubben 3ce66e8369 The two-node bed's copies declare the secrets they take through the environment, as the catalogue does (ADR 0086) 2026-09-22 13:30:01 +02:00
jschoubben 3f71b91fb8 The two-node bed's timeout report shows the node that did not answer, not always the second one 2026-09-22 12:59:28 +02:00
jschoubben 2dfffd6dac Review of 081: the bed asserts baserow chose its own cache and it challenges for its password; the check reads only what a module hands its software; stale comments 2026-09-22 12:34:59 +02:00
jschoubben 36f2fd1c2c A cache consumer presents the login it was granted, checked over the catalogue; the two-node bed's baserow keeps its own cache and the bed asserts it answers (issue 081) 2026-09-22 12:26:34 +02:00
jschoubben 8a85e2d02e The grant bed's tenancy assertions are scoped to the login's keyspace, as redis scopes the ACL 2026-09-22 01:41:16 +02:00
jschoubben 146d7da9ef The large bed starts the hand-started builder where a build is asked for: it does not outlive the broker's first reconcile 2026-09-22 01:30:53 +02:00
jschoubben 10cfbd094a Review: the cache grant's tenancy assertions move into the grant bed; retirement notes say what the beds prove; the builder binary is pushed on a warm return; the large bed needs the catalogue 2026-09-22 01:27:52 +02:00
jschoubben 353cf88a4b The large mesh bed catches up with the mesh: the anchor's filter derived, ports declared, an image awaited, one host and builder on a warm return, resolvers from the catalogue; four tests retired for the beds that prove them 2026-09-22 01:16:13 +02:00
jschoubben 2da442729f Review: the node_modules link is not committed; two beds no longer issue modules with no broker secret; a stale header 2026-09-21 23:56:02 +02:00
jschoubben 03bbc37572 Beds issue only modules with a broker secret: an own secret is minted at resolve 2026-09-21 23:46:27 +02:00
jschoubben 484fafe799 mesh.test.ts: the consumer's login carries its slug 2026-09-21 23:43:01 +02:00
jschoubben 7c81902571 mesh.test.ts: meshboard gets a slug (ADR 0049); the builder-as-module test is retired, genesis proves it 2026-09-21 23:38:58 +02:00
jschoubben 080150addb provider-on-backend-network: no longer names a retired bed 2026-09-21 23:35:17 +02:00
jschoubben fd1e5499d0 Retire provider-uses-mesh-credential: the grant end-to-end bed proves it against the catalogue's redis, with the mesh writing the contributions; its no-seal-key assertion moves there (issue 074) 2026-09-21 23:35:01 +02:00
jschoubben 0d8eac88c3 whole-mesh-full delivers amqp-email-forwarder's smtp-password under the name the module declares (found by issue 078's refusal) 2026-09-21 23:31:34 +02:00
jschoubben 2e0f11dfc2 Three beds give their fixtures names that are no catalogue module's (issue 074) 2026-09-21 23:25:36 +02:00
jschoubben 2ce130c256 whole-mesh-full: an own-secret is declared under own-secrets 2026-09-21 22:55:00 +02:00
jschoubben e64d296c80 whole-mesh-full: issue a module with an own-secret, not only one with a broker account 2026-09-21 22:54:09 +02:00
jschoubben acb8d3da88 whole-mesh-full: the vault before the modules that keep secrets in it; no operator root or app secrets delivered (ADRs 0094, 0098) 2026-09-21 22:53:28 +02:00
jschoubben f785f5892a The route-forwarding bed converges the overlay before the modules: the proxy fetches the roots at the private-network address at first start 2026-09-21 22:41:36 +02:00
jschoubben d95174da02 The route-forwarding bed places its machine on the overlay: the authority certifies its private-network address 2026-09-21 22:35:33 +02:00
jschoubben 2530ca762e The lab stands in for the builder on an upstream artifact too: the reference the manifest pins
hello-web's server is somebody else's image the mesh would copy in (ADR 0096); the
loader refused it as an artifact nobody stocked.
2026-09-21 22:33:44 +02:00
jschoubben 107257faf4 The route-forwarding bed installs the catalogue's authority, proxy and consumer
step-ca beside the proxy, the proxy fetching the authority's root through its gate,
hello-web routed under the node's public domain by its label (ADR 0066). The last
declared mesh test but one reads the catalogue (novox/hq 04-ISSUES/074, 076).
2026-09-21 22:27:17 +02:00
jschoubben 690596d33b The whole-mesh bed installs the vault before the modules that keep a secret from it; route-forwarding waits on issue 076 2026-09-21 22:16:15 +02:00
jschoubben 69d3813ae1 The certificate bed reads the names a certificate is for from its alternative names
Pebble, like the public authority it stands in for, leaves the subject empty; the
bed read the subject and refused a valid certificate.
2026-09-21 22:11:01 +02:00
jschoubben 2bc1230252 The certificate bed's backend is a real server: its netcat loop never listened
Every request through the proxy was refused by the backend, which read as the
certificate never arriving and hid behind the authority's refusal — until the second
authority issued one and the request behind the handshake still failed.
2026-09-21 22:08:52 +02:00
jschoubben b6be7ac8af The second-authority test stops the proxy by its anchored path: the process name is truncated in the table 2026-09-21 22:02:08 +02:00
jschoubben 38672cd356 The second-authority test stops the proxy by name, not by a pattern its own shell matches 2026-09-21 21:57:39 +02:00
jschoubben 8a3e7dbd1b A spike for issue 066: a coupled pair half-applied, and what the machine is observed doing
A config file, a run-once gate that validates it, and a service that reads it once at
start. The second push changes the file and makes the gate refuse it: the file is
applied, the gate fails, the service stays — v2 on disk, v1 served, the push
reported failed. Evidence for the decision 066 asks for, not a rule enforced.
2026-09-21 21:55:45 +02:00
jschoubben ab5b0d11da The certificate bed orders the same certificate from a second authority, the catalogue's own
Issue 020 could not tell a Pebble interop detail from a fault of the proxy's. The
bed now raises step-ca as the catalogue pins it and orders again through the same
proxy and the same challenge path (novox/hq 04-ISSUES/020).
2026-09-21 21:54:13 +02:00
jschoubben 26177d81be Six beds retired: their coverage lives in the catalogue beds and the whole-mesh beds now
The four sidecar beds (grafana, plex, sonarr, redis) proved a sidecar comes up and
serves tools with the module's server cut away; the catalogue beds and the whole-mesh
beds prove the modules whole. The minio and postgres grant beds proved a grant
mechanism with a second store beside the foundation's; the grant bed and the vault bed
prove it against the catalogue. Ten conversions become six deletions (novox/hq
04-ISSUES/074).
2026-09-21 21:53:11 +02:00
jschoubben 85dc827660 The confluence bed asks a tool through the control plane, and the tool answers
No account in the mesh but the control plane's may create a reply queue and publish
to a module's request key (novox/hq 04-ISSUES/049, ADR 0095).
2026-09-21 20:34:03 +02:00
jschoubben 64c081d025 The vault bed installs a consumer that keeps two secrets, and both are delivered and rotated
Two files with two values, two holders in the vault's ledger — the identity with the
local name after it — and one rotate moves both (novox/hq ADR 0094).
2026-09-21 20:29:49 +02:00
jschoubben e4c924a85e The grant bed's consumer takes a slug: its derived identity was one character over what a backend keeps 2026-09-21 19:32:36 +02:00
jschoubben 1b2443690d Two mechanism beds install the catalogue's redis with the vault beside it
A module's name is its tool namespace and its broker scope, so a fixture running
the module's runtime cannot carry another name (novox/hq ADR 0093). The grant and
backend-network beds now read the catalogue's redis and install mesh-vault, which
provides the secret it requires; the redis-node scenario stocks the vault's runtime.
The remaining declared copies say why they stand (novox/hq 04-ISSUES/074).
2026-09-21 19:30:34 +02:00
jschoubben 6083b9310a Genesis reads the registry's and the builder's manifests from the catalogue, not the control plane's
The control plane's manifest comes out of the build the installer runs (novox/hq ADR
0069, 04-ISSUES/072); the catalogue no longer holds a copy, and a bed that demanded
one would stop a genesis that is about to succeed.
2026-09-21 19:23:44 +02:00
jschoubben ec23e9f4cd The catalogue is named or absent, the scanner reads both key orders, the loader has unit tests
Review findings: a sibling-path fallback read a catalogue the receipt never claimed;
a manifest literal naming its version first slipped the fence; the shared loader
thirteen beds install through had no test short of a lab run.
2026-09-21 19:21:54 +02:00
jschoubben 8c37328ba3 The catalogue is recognised by the registry's manifest, not the control plane's
The control plane's manifest is leaving the catalogue (ADR 0069, issue 072); a marker
that named it would make every catalogue-reading bed skip the day it goes.
2026-09-21 15:18:46 +02:00
jschoubben e596758db9 The five beds that read the catalogue read it through the harness
adopted-store-cross-node, two-node-db and the three whole-mesh beds each carried a
private loader; they drifted. The ace loader never resolved a runtime artifact, so a
module the mesh builds travelled unresolved; whole-mesh-full still asked for
'registry' and 'firewall', which the catalogue names distribution and nftables, and
swallowed the miss as NOT ASSIGNED. One loader now (novox/hq 04-ISSUES/073).
2026-09-21 14:33:02 +02:00
jschoubben 2456b2f533 Beds read the catalogue: a shared loader, eight beds converted, the rest declared
catalogueModule() in the harness reads a module's manifest from the catalogue and
rewrites only what the lab must: the build section goes, each artifact becomes the
image the machine holds, images are pinned, and a bed may declare a host-port remap
or a lab-local address. confluence, gitlab, openai-consumer, audit-logger, ollama,
local-model-consumer, model-usage, mosquitto, anthropic-manager and
anthropic-consumer now install the catalogue's manifest. A unit test refuses any
inline copy naming a catalogue module unless the bed is declared with its reason;
the declared list is the debt (novox/hq 04-ISSUES/073).
2026-09-21 14:27:49 +02:00
jschoubben b0e7cf96d1 The apps bed's mongodb names its secrets' owner, as the catalogue's does, and says what the server said when the consumer cannot reach it 2026-09-21 13:43:42 +02:00
jschoubben e085e31f95 A bed that raises the foundation from the bundle derives the anchor's filter before it relies on the hub
The base ruleset (ADR 0088) admits ssh, the bus and the registry and nothing else until the mesh
derives one, and the mesh derives one only where the filter module is assigned — which genesis
does and these beds did not. Without it the hub's WireGuard port stayed closed, no joined node's
tunnel formed, and every module dialling the anchor by its overlay name timed out fetching the
broker's certificate; the model-usage bed showed it as a login that failed for a role never made.
2026-09-21 13:30:26 +02:00
jschoubben af14f1c909 The model-usage bed can be left standing, and its account names the filters 2026-09-21 13:18:23 +02:00
jschoubben ba49f571dc The model-usage bed says what the machine knows when the login fails 2026-09-21 13:12:19 +02:00
jschoubben 67a1f6a012 The harness pins minio from quay.io, as the catalogue does (docker.io denies anonymous pulls) 2026-09-21 12:58:35 +02:00
jschoubben b7316d40fe The three beds' inline postgres reads its superuser from a file, as the catalogue's does 2026-09-21 12:55:35 +02:00