37 lines
2.0 KiB
Markdown
37 lines
2.0 KiB
Markdown
---
|
|
status: resolved
|
|
opened: 2026-09-21
|
|
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
|
|
|
|
## Symptom, as observed
|
|
|
|
A per-module bed stocks the module's runtime image — the tool runtime carrying that module's
|
|
code — from the workstation's image store, by tag. The image is built by hand, by a script in the
|
|
lab repository that the suite never calls. On the day issue 073 was worked, the images for six
|
|
modules whose beds were about to run dated from two weeks before the manifests they were to be
|
|
installed with; the catalogue's code for those modules had changed since, and every bed would have
|
|
passed against the old image. The suite's own rule — *the run rebuilds what it tests* — is held
|
|
for the host binary and the controller image and not for these.
|
|
|
|
## Why it matters beyond this instance
|
|
|
|
- **Silence and success look alike again.** A bed that passes against a stale runtime reports
|
|
the module proven; nothing says the image predates the code.
|
|
- **It is the same fault [issue 005](../005-pipeline-test-harness-unbuildable/00-report.md)
|
|
named**, one layer down: a stale artifact reporting success against code that moved.
|
|
- The receipt now names the catalogue's commit ([ADR 0089](../../02-DECISIONS/0089-a-bed-reads-the-catalogue-it-proves.md)),
|
|
which makes this sharper, not better: the receipt claims a commit whose runtime code was never
|
|
built into what ran.
|
|
|
|
## What would close it
|
|
|
|
The suite builds, or refuses to stock, a module runtime whose image is older than the module's
|
|
source in the catalogue the run is pointed at — the same treatment the host binary and the
|
|
controller image get. Or the scenario says which images it stocks stale, and the receipt says
|
|
so too.
|