Merge pull request 'ADR 0093: a fixture that runs a module's runtime carries its name; 074 diagnosed; 075 resolved' (#66) from feat/mesh-tests-and-runtimes into main

This commit was merged in pull request #66.
This commit is contained in:
2026-09-21 19:36:44 +02:00
6 changed files with 105 additions and 6 deletions
@@ -0,0 +1,22 @@
# Diagnosis — 2026-09-21
1. The renames the report asked for were sized: each bed uses its borrowed name twenty to sixty
times, most of them container names and paths that could stay; the name itself appears in the
manifest, in the `assign` and `module issue` commands, and in the broker account the bed
asserts on, `<node>-<module>`.
2. Then the account was read. The mesh scopes a module's broker account to `serve.<module>.*`
from the manifest's name, and the tool runtime binds its queues under the module name baked
into its image. A fixture named `redis-fixture` running the real redis runtime would be
refused the queues it serves on. The name is not a label. **A fixture that runs a module's
runtime carries the module's name**, and therefore reads the catalogue
([ADR 0093](../../02-DECISIONS/0093-a-fixture-that-runs-a-modules-runtime-carries-its-name.md)).
3. Of the twelve, the two whose only cut was the vault's secret — the grant bed and the
backend-network bed, both redis — read the catalogue's redis now and install the vault beside
it, as the vault bed does. The rest are declared with this reason: four sidecar beds need the
module's server raised (and, for grafana and sonarr, the route module); the minio and postgres
grant beds raise a second store beside the foundation's; the route-forwarding bed needs the
certificate authority; the largest mesh test carries a declaration-only postgres, a builder
that builds itself and an umami of another shape.
**Located in:** mesh-lab, the ten declared beds, one conversion each with a lab run. Not renamed,
by decision; converted two at a time as the modules they need are raised beside them.
@@ -1,9 +1,9 @@
---
status: open
status: resolved
opened: 2026-09-21
located-in: []
fixed-by:
amended-design:
located-in: [mesh-lab src/rebuild.ts, mesh-lab src/runtimes.ts]
fixed-by: mesh-lab feat/mesh-tests-and-runtimes (the suite compares each stocked runtime against its source and rebuilds it where older, missing or uncommitted); proven by removing an image and watching the run rebuild it
amended-design: 03-DESIGN/01-to-be/01-end-to-end-testing.md
---
# A stocked runtime image is never rebuilt by the run
@@ -0,0 +1,13 @@
# Diagnosis — 2026-09-21
1. The suite rebuilt the host, the control plane's images and the installer before a run, and
nothing else; a bed's scenario stocked `mesh-runtime-<module>:development` from whatever the
image store held, built by hand by a script the suite never called.
2. The rule that covers the rest — *the run rebuilds what it tests* — was extended to these. For
the beds named, every runtime their scenarios stock is compared against the module's source in
the catalogue and the tool runtime and SDK it is built on; the image is rebuilt where it is
older, missing, or the source has uncommitted changes, and a build that fails stops the suite.
Proven by removing a runtime image and watching the run rebuild it before the bed passed.
**Located in:** the lab's rebuild step. The design's rule now says it covers module runtimes, and
says how it is checked.