Files
hq/04-ISSUES/073-beds-carry-copies-of-catalogue-manifests/01-diagnosis.md
T
jschoubben 5dcb9dfbf6 ADR 0089: a bed reads the catalogue it proves; issue 073 diagnosed; issues 074 and 075 opened
The end-to-end design held 'the run rebuilds what it tests' for binaries and images
and not for manifests. The beds' inline copies fell into three kinds; only the first
is a stale copy. The other two are named: a mesh test wearing a catalogue module's
name (074) and a stocked runtime image the run never rebuilds (075).
2026-09-21 14:35:08 +02:00

2.7 KiB

Diagnosis — 2026-09-21

  1. Every bed was read against the catalogue. Of forty-five, thirteen already read a manifest from the catalogue checkout, twenty-one built one or more inline, and eleven install no catalogue module. The thirteen readers used five private copies of one loader, and the copies had drifted: one never resolved a runtime artifact to the image the lab stocks, so a module the mesh builds travelled to the machine unresolved; one still asked the catalogue for two modules by names it no longer uses and recorded the miss as "not assigned".
  2. The inline copies fall into three kinds, and only the first is what the report assumed:
    • copies that differ from the catalogue only in what the lab must rewrite — an image, a build section, an optional key dropped. Ten modules across eight beds;
    • a second provider raised beside the foundation's. The catalogue's postgres and lavinmq claim the foundation's store and broker and adopt them in place; four beds raise a second one next to it, renamed and on a private network. Reading the catalogue there changes what the bed raises, and its assertions with it;
    • a module cut down to the shape a mesh mechanism needs — no upstream server, a secret in the environment, a requirement edge removed so no second provider is wanted — under a catalogue module's name. Twelve beds. These are mesh tests wearing a module's name, and the honest fix is a name of their own, not a catalogue read (issue 074).
  3. The receipt claimed the host, the controller and the lab and never the catalogue, so even a bed that read the catalogue could not be told apart from one that had read it last week.
  4. While converting, the images the beds stock for the modules' runtimes were found to date from two weeks before the manifests they serve — built by hand, by a script the run never calls. The run rebuilds the host and the controller and not these (issue 075).

Located in: mesh-lab, the integration beds and their harness. The fix gives the harness one loader that reads the catalogue and rewrites only what the lab must, converts the first kind of copy to it, folds the five private loaders onto it, makes the receipt claim the catalogue, and adds a unit test that refuses an inline copy naming a catalogue module unless the bed is declared with its reason. The second and third kinds are declared there; each declaration names the work that removes it. Decided in ADR 0089.