From 6c99075ab998891c5b0842519eaaf34ad743b091 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 4 Nov 2026 11:52:09 +0100 Subject: [PATCH] ENG-10 sdk: a routed image says the seat it came through and that seat's holder (design 51) declaration.Container gains ImageSeat and ImageHolder, catalogue.Rendering SeatHolder, for the node-engine to retry a failed pull on the holder's settled (A7's request R1). Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig --- go/catalogue/declaration.go | 5 +++++ go/declaration/declaration.go | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/go/catalogue/declaration.go b/go/catalogue/declaration.go index 14878e8..5bb710b 100644 --- a/go/catalogue/declaration.go +++ b/go/catalogue/declaration.go @@ -238,6 +238,11 @@ type Rendering struct { // when no holder is reachable yet; see seat_into.go for which seats are answered. SeatReach map[string]string + // SeatHolder is the module holding each seat SeatReach answers, by seat, from the holdings the composition has (novox/hq + // design 51, issue 1966 ENG-10): written beside an image routed through the seat, for the node-engine to wait on when its + // pull fails. Absent for a seat with no holder on record. + SeatHolder map[string]string + // Built is every `/` the mesh has built. What tells a reference recorded // with an address — before references were kept without one — from an image a module runs // straight from a public registry. diff --git a/go/declaration/declaration.go b/go/declaration/declaration.go index 3d70e00..f7cb883 100644 --- a/go/declaration/declaration.go +++ b/go/declaration/declaration.go @@ -1368,8 +1368,14 @@ type Container struct { Module string `json:"module,omitempty"` Name string `json:"name"` // Image is pinned by digest (novox/hq ADR 0006) — a tag moves and a digest does not. - Image string `json:"image"` - Env map[string]string `json:"env,omitempty"` + Image string `json:"image"` + // ImageSeat and ImageHolder say, beside an image the composition routed through a store, the seat the reference came + // through and that seat's holder (novox/hq design 51, issue 1966 ENG-10): what the node-engine finds the holder to wait + // on when the pull fails. Not part of what a container is: they are no part of its spec or digest, so a declaration + // composed again for a new holder replaces no container. + ImageSeat string `json:"image-seat,omitempty"` + ImageHolder string `json:"image-holder,omitempty"` + Env map[string]string `json:"env,omitempty"` // EnvFile names files the runtime reads environment from, in order. // // **Because a secret may not travel in Env.** A declaration reaches a node over the broker,