From 37258e6bec47a20789b51e2d59e8f0a56f3dbf97 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 9 Nov 2026 13:41:53 +0100 Subject: [PATCH] The build step part's request names both forms; the three build seats' contracts regenerated (issue 1966) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The compose job's `request` description now says it is the request object or the JSON string "gzip+base64:" followed by the base64 of the gzip-compressed object, as ADR 0634 ยง1 puts a seat's messages in its contract. The field stays `any`; seatgen regenerated node-build-go, node-build-node and node-build-image (Go and TypeScript), and its -check is clean. ask.go's comment says the checker packs every request it sends. Delivery: an old holder of node-build-go refuses the packed ask loudly (it holds no request object) until it runs the new mesh-build-go; the checker is built by mesh-build-go after it (module graph edge), and every check composing ace or novox fails today anyway. Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5 --- contracts/go/seats/nodebuildgo/contract.go | 2 +- contracts/go/seats/nodebuildimage/contract.go | 2 +- contracts/go/seats/nodebuildnode/contract.go | 2 +- contracts/parts/build-step.json | 2 +- contracts/ts/seats/nodebuildgo/src/parts/build-step.ts | 2 +- contracts/ts/seats/nodebuildimage/src/parts/build-step.ts | 2 +- contracts/ts/seats/nodebuildnode/src/parts/build-step.ts | 2 +- sdk/buildstep/ask.go | 5 +++-- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/contracts/go/seats/nodebuildgo/contract.go b/contracts/go/seats/nodebuildgo/contract.go index 5deeb05e..61e93a98 100644 --- a/contracts/go/seats/nodebuildgo/contract.go +++ b/contracts/go/seats/nodebuildgo/contract.go @@ -485,7 +485,7 @@ type StepAskCompose struct { Fetch Fetch `json:"fetch"` Package string `json:"package"` Reader string `json:"reader,omitempty"` - // the compose-candidate request + // the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object Request any `json:"request"` } diff --git a/contracts/go/seats/nodebuildimage/contract.go b/contracts/go/seats/nodebuildimage/contract.go index dde300d1..8ea6e02f 100644 --- a/contracts/go/seats/nodebuildimage/contract.go +++ b/contracts/go/seats/nodebuildimage/contract.go @@ -485,7 +485,7 @@ type StepAskCompose struct { Fetch Fetch `json:"fetch"` Package string `json:"package"` Reader string `json:"reader,omitempty"` - // the compose-candidate request + // the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object Request any `json:"request"` } diff --git a/contracts/go/seats/nodebuildnode/contract.go b/contracts/go/seats/nodebuildnode/contract.go index ba461926..b12f7595 100644 --- a/contracts/go/seats/nodebuildnode/contract.go +++ b/contracts/go/seats/nodebuildnode/contract.go @@ -485,7 +485,7 @@ type StepAskCompose struct { Fetch Fetch `json:"fetch"` Package string `json:"package"` Reader string `json:"reader,omitempty"` - // the compose-candidate request + // the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object Request any `json:"request"` } diff --git a/contracts/parts/build-step.json b/contracts/parts/build-step.json index 37c20cb4..9dc9c2ed 100644 --- a/contracts/parts/build-step.json +++ b/contracts/parts/build-step.json @@ -161,7 +161,7 @@ "type": "string" }, "request": { - "description": "the compose-candidate request" + "description": "the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string \"gzip+base64:\" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object" }, "reader": { "type": "string" diff --git a/contracts/ts/seats/nodebuildgo/src/parts/build-step.ts b/contracts/ts/seats/nodebuildgo/src/parts/build-step.ts index c8843899..1aee13ff 100644 --- a/contracts/ts/seats/nodebuildgo/src/parts/build-step.ts +++ b/contracts/ts/seats/nodebuildgo/src/parts/build-step.ts @@ -293,7 +293,7 @@ export interface StepAskCompose { "fetch": Fetch; "package": string; "reader"?: string; - /** the compose-candidate request */ + /** the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object */ "request": unknown; } diff --git a/contracts/ts/seats/nodebuildimage/src/parts/build-step.ts b/contracts/ts/seats/nodebuildimage/src/parts/build-step.ts index c8843899..1aee13ff 100644 --- a/contracts/ts/seats/nodebuildimage/src/parts/build-step.ts +++ b/contracts/ts/seats/nodebuildimage/src/parts/build-step.ts @@ -293,7 +293,7 @@ export interface StepAskCompose { "fetch": Fetch; "package": string; "reader"?: string; - /** the compose-candidate request */ + /** the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object */ "request": unknown; } diff --git a/contracts/ts/seats/nodebuildnode/src/parts/build-step.ts b/contracts/ts/seats/nodebuildnode/src/parts/build-step.ts index c8843899..1aee13ff 100644 --- a/contracts/ts/seats/nodebuildnode/src/parts/build-step.ts +++ b/contracts/ts/seats/nodebuildnode/src/parts/build-step.ts @@ -293,7 +293,7 @@ export interface StepAskCompose { "fetch": Fetch; "package": string; "reader"?: string; - /** the compose-candidate request */ + /** the compose-candidate request, in one of two forms: the request as a JSON object, or, for one near the bus's message limit, a JSON string "gzip+base64:" followed by the base64 of the request object gzip-compressed; a holder that does not know the packed form refuses it, naming that it holds no request object */ "request": unknown; } diff --git a/sdk/buildstep/ask.go b/sdk/buildstep/ask.go index 1955f475..5bdf2647 100644 --- a/sdk/buildstep/ask.go +++ b/sdk/buildstep/ask.go @@ -288,8 +288,9 @@ type ComposeJob struct { Fetch Fetch `json:"fetch"` Dir string `json:"dir"` Package string `json:"package"` - // Request is the composer's request: a JSON object, or, for one near the bus's message limit (issue 1966), a JSON - // string PackedRequestPrefix + the base64 of the object gzip-compressed. The part types it `any`, so both fit it; a + // Request is the composer's request: a JSON object, or a JSON string PackedRequestPrefix + the base64 of the object + // gzip-compressed (issue 1966; the checker packs every request it sends, and + // the part's `request` describes both forms). The part types it `any`, so both fit it; a // build module that does not know the packed form refuses the ask naming that it holds no request object. Request json.RawMessage `json:"request"` Reader string `json:"reader,omitempty"`