The build step part's request names both forms; the three build seats' contracts regenerated (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@fc21f2d1bd56
mesh/delivery-group group fix/1966-checker-compositions-objects merged: every member is merged
mesh/check checking bf7540cd9ec2 on fc21f2d1bd56 | novox/mesh-delivery#189 in group fix/1966-checker-compositions-objects

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
This commit is contained in:
2026-11-09 16:41:56 +01:00
parent 173c49fc87
commit bf7540cd9e
8 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -485,7 +485,7 @@ type StepAskCompose struct {
Fetch Fetch `json:"fetch"` Fetch Fetch `json:"fetch"`
Package string `json:"package"` Package string `json:"package"`
Reader string `json:"reader,omitempty"` 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"` Request any `json:"request"`
} }
@@ -485,7 +485,7 @@ type StepAskCompose struct {
Fetch Fetch `json:"fetch"` Fetch Fetch `json:"fetch"`
Package string `json:"package"` Package string `json:"package"`
Reader string `json:"reader,omitempty"` 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"` Request any `json:"request"`
} }
+1 -1
View File
@@ -485,7 +485,7 @@ type StepAskCompose struct {
Fetch Fetch `json:"fetch"` Fetch Fetch `json:"fetch"`
Package string `json:"package"` Package string `json:"package"`
Reader string `json:"reader,omitempty"` 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"` Request any `json:"request"`
} }
+1 -1
View File
@@ -161,7 +161,7 @@
"type": "string" "type": "string"
}, },
"request": { "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": { "reader": {
"type": "string" "type": "string"
@@ -293,7 +293,7 @@ export interface StepAskCompose {
"fetch": Fetch; "fetch": Fetch;
"package": string; "package": string;
"reader"?: 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; "request": unknown;
} }
@@ -293,7 +293,7 @@ export interface StepAskCompose {
"fetch": Fetch; "fetch": Fetch;
"package": string; "package": string;
"reader"?: 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; "request": unknown;
} }
@@ -293,7 +293,7 @@ export interface StepAskCompose {
"fetch": Fetch; "fetch": Fetch;
"package": string; "package": string;
"reader"?: 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; "request": unknown;
} }
+3 -2
View File
@@ -288,8 +288,9 @@ type ComposeJob struct {
Fetch Fetch `json:"fetch"` Fetch Fetch `json:"fetch"`
Dir string `json:"dir"` Dir string `json:"dir"`
Package string `json:"package"` 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 // Request is the composer's request: a JSON object, or a JSON string PackedRequestPrefix + the base64 of the object
// string PackedRequestPrefix + the base64 of the object gzip-compressed. The part types it `any`, so both fit it; a // 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. // build module that does not know the packed form refuses the ask naming that it holds no request object.
Request json.RawMessage `json:"request"` Request json.RawMessage `json:"request"`
Reader string `json:"reader,omitempty"` Reader string `json:"reader,omitempty"`