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).
34 lines
2.7 KiB
Markdown
34 lines
2.7 KiB
Markdown
# 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](../074-a-mesh-test-wears-a-catalogue-modules-name/00-report.md)).
|
|
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](../075-a-stocked-runtime-image-is-never-rebuilt-by-the-run/00-report.md)).
|
|
|
|
**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](../../02-DECISIONS/0089-a-bed-reads-the-catalogue-it-proves.md).
|