--- status: resolved opened: 2026-09-21 located-in: [mesh-lab test/integration] fixed-by: mesh-lab, over three multiple-fixes rounds — nine beds read the catalogue or were retired as duplicate coverage; the three mechanism fixtures wear names that are no catalogue module's; the declared list in test/beds-read-the-catalogue.test.ts is empty of WEARING --- # A mesh test wears a catalogue module's name ## Symptom, as observed Twelve lab beds install a module named `redis`, `grafana`, `plex`, `sonarr`, `minio`, `postgres`, `route-proxy` or `hello-web` that is not the catalogue's module of that name. Each is cut down to what the bed's mechanism needs: the sidecar runtime without the upstream server it manages; a token or an API key in the container's environment where the catalogue delivers a file; a requirement on a route or a certificate authority removed so no second provider is needed; a vault-granted secret turned into one the module mints itself; a route contribution in the shape a decision replaced. One bed's header says its manifests are "verbatim from the catalogue" and its manifest adds three resources the catalogue has not got. Found while diagnosing [issue 073](../073-beds-carry-copies-of-catalogue-manifests/00-report.md); the beds are listed, each with what it cuts, in the lab's `beds-read-the-catalogue` unit test. ## Why it matters beyond this instance - **A green bed named for a module reads as that module proven.** The status view counts a bed by the module it names; a bed proving a grant mechanism with a `redis` that mints its own secret proves nothing about the catalogue's redis, which requires the vault's. - **The cut is invisible.** Nothing distinguishes "this is redis" from "this is a redis-shaped fixture" except reading the literal against the catalogue, which is what issue 073 found nobody had done. - [ADR 0089](../../02-DECISIONS/0089-a-bed-reads-the-catalogue-it-proves.md) now refuses the copy; until each bed is renamed or made to read the catalogue, it is declared debt. ## What would close it Each of the twelve beds either reads the catalogue's module and meets its declared requirements (a route needs the route module beside it; a secret needs the vault), or gives its fixture a name that is no catalogue module's — `a-cache`, `a-store`, `a-sidecar` — so a green run claims exactly what it proved. The declared list in the unit test is empty of the `WEARING` reason.