Assigner: hears build.ended and version-released, reads no build log; a want's version and parts come from them

A kept build's or another branch's build names its parts and keeping node from build.ended; the trunk's entry names its version and parts from the version-released whose source is the kept assignment graph revision's. The parts' contract comment says <module>:<artifact>.

Builds: design 47 G §379, §525, §526, A-94, A-96, A-67

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
This commit is contained in:
2026-11-11 23:32:50 +01:00
parent d1357239e2
commit 6c852a8eea
16 changed files with 258 additions and 159 deletions
+2 -2
View File
@@ -865,7 +865,7 @@ type VersionDeliveredEvent struct {
Away []string `json:"away,omitempty"`
// the module
Module string `json:"module"`
// the digest of each of its parts, by artifact reference
// the digest of each of its parts, by `<module>:<artifact>`
Parts map[string]string `json:"parts"`
V int64 `json:"v"`
// MAJOR.MINOR.PATCH
@@ -898,7 +898,7 @@ type WantsByWantNodeModuleValue struct {
// for a kept build, the build node that keeps it, from the builder's build.ended; the node-engine fetches the build through that node's seat verb kept-artifact, and a want with none from the store (design 47 G section 526)
KeptOn string `json:"kept-on,omitempty"`
Newest string `json:"newest,omitempty"`
// the digest of each of the module's parts, by artifact reference; the node-engine fetches and checks each part by it (design 47 G section 379)
// the digest of each of the module's parts, by `<module>:<artifact>`; the node-engine fetches and checks each part by it (design 47 G section 379)
Parts map[string]string `json:"parts,omitempty"`
Put bool `json:"put,omitempty"`
Release string `json:"release,omitempty"`
+2 -2
View File
@@ -414,7 +414,7 @@
"additionalProperties": {
"type": "string"
},
"description": "the digest of each of its parts, by artifact reference"
"description": "the digest of each of its parts, by `<module>:<artifact>`"
},
"away": {
"type": "array",
@@ -541,7 +541,7 @@
"additionalProperties": {
"type": "string"
},
"description": "the digest of each of the module's parts, by artifact reference; the node-engine fetches and checks each part by it (design 47 G section 379)"
"description": "the digest of each of the module's parts, by `<module>:<artifact>`; the node-engine fetches and checks each part by it (design 47 G section 379)"
},
"kept-on": {
"type": "string",
+2 -2
View File
@@ -491,7 +491,7 @@ export interface VersionDeliveredEvent {
"away"?: string[];
/** the module */
"module": string;
/** the digest of each of its parts, by artifact reference */
/** the digest of each of its parts, by `<module>:<artifact>` */
"parts": Record<string, string>;
"v": number;
/** MAJOR.MINOR.PATCH */
@@ -516,7 +516,7 @@ export interface WantsByWantNodeModuleValue {
/** for a kept build, the build node that keeps it, from the builder's build.ended; the node-engine fetches the build through that node's seat verb kept-artifact, and a want with none from the store (design 47 G section 526) */
"kept-on"?: string;
"newest"?: string;
/** the digest of each of the module's parts, by artifact reference; the node-engine fetches and checks each part by it (design 47 G section 379) */
/** the digest of each of the module's parts, by `<module>:<artifact>`; the node-engine fetches and checks each part by it (design 47 G section 379) */
"parts"?: Record<string, string>;
"put"?: boolean;
"release"?: string;