An image the machine has no account for is handed over, not fetched
Deleting the lab's registry left the operator's own images to be pulled like anything else, and they cannot be: their registry wants an account and a scenario machine has none. The pull fails with 'no basic auth credentials', which is not something more patience fixes. So the test is no longer 'did the mesh build it' but 'can the machine get it at all'. Two ways to fail that — published nowhere, or published somewhere the machine cannot authenticate to — and one consequence: the workstation, which does hold the credential, exports it and loads it. Worth saying what this stands in for. In a finished mesh these are built by the builder and published to the mesh's own store, and every machine pulls them from there with a credential the mesh granted. Until that store exists there is nowhere for them to come from, and handing them over is the closest honest thing — not a registry the lab invents, which is what was just removed. Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
|
||||
import type { Scenario, Segment } from "./types.ts";
|
||||
import { contains, familyOf, parseAddress, parseCidr, type Cidr } from "./net.ts";
|
||||
import { isMeshBuilt } from "../pinning.ts";
|
||||
import { mustBeHandedOver } from "../pinning.ts";
|
||||
|
||||
/** RFC 5737 and RFC 3849. The only addresses guaranteed never to route on the real internet. */
|
||||
const DOCUMENTATION_RANGES = [
|
||||
@@ -327,7 +327,7 @@ export function validate(scenario: Scenario): void {
|
||||
`images: '${image}' is pinned by digest. Name it by tag — what a declaration uses is the ` +
|
||||
`ID of the image loaded onto the machine, reported when the scenario is raised`,
|
||||
);
|
||||
} else if (!isMeshBuilt(image)) {
|
||||
} else if (!mustBeHandedOver(image)) {
|
||||
// **The rule that replaced the lab's registry.** Anything with somewhere to be fetched from
|
||||
// is fetched from there, over the machine's uplink, exactly as in production. Serving it
|
||||
// from inside the scenario instead is what hid the bootstrap faults this lab exists to find.
|
||||
|
||||
Reference in New Issue
Block a user