From 508eff8e1bff3baa95c0656f90645a04df62629f Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 5 Nov 2026 16:37:26 +0100 Subject: [PATCH] =?UTF-8?q?Builder=20declares=20its=20read=20of=20the=20as?= =?UTF-8?q?signer's=20placement=20state,=20which=20its=20toolchain=20gate?= =?UTF-8?q?=20follows=20through=20meshmoduleassignerclient=20(ADR=200634?= =?UTF-8?q?=20=C2=A71;=20issue=201966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i --- modules/mesh-delivery-builder/manifest_test.go | 6 ++++-- modules/mesh-delivery-builder/module.json | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/mesh-delivery-builder/manifest_test.go b/modules/mesh-delivery-builder/manifest_test.go index 0d637c69..bbf16c6f 100644 --- a/modules/mesh-delivery-builder/manifest_test.go +++ b/modules/mesh-delivery-builder/manifest_test.go @@ -102,7 +102,7 @@ func TestManifestDeclarations(t *testing.T) { // 1607/AC1 // 1887/A4c: the builder chooses no node, so it reads neither presence nor have, invokes no build module's tool and // holds no capacity; it puts asks on the three build seats and reads their steps (ADR 0525 §1, §4, §5). if want := []string{"mesh-build-go.steps", "mesh-build-go.toolchains", "mesh-build-image.steps", "mesh-build-node.steps", "mesh-build-node.toolchains", - "mesh-delivery-gate.source"}; !reflect.DeepEqual(sorted(m.Reads), want) { + "mesh-delivery-assigner.placement", "mesh-delivery-gate.source"}; !reflect.DeepEqual(sorted(m.Reads), want) { t.Errorf("reads = %v, want %v", m.Reads, want) } if want := []string{"node-build-go", "node-build-image", "node-build-node"}; !reflect.DeepEqual(sorted(m.Uses), want) { @@ -115,7 +115,9 @@ func TestManifestDeclarations(t *testing.T) { // 1607/AC1 // read tools and followed by their views families, never read; so are the indexer's packages, whose names a package is // numbered under (design 32). for _, r := range m.Reads { - if strings.HasPrefix(r, "mesh-delivery-indexer.") || strings.HasPrefix(r, "mesh-delivery-assigner.") { + // The toolchain gate follows the assigner's placement through meshmoduleassignerclient (buildrun.PlacementBucket), so + // it declares that one read, as the console and route-proxy do; everything else of theirs is asked by tools. + if strings.HasPrefix(r, "mesh-delivery-indexer.") || (strings.HasPrefix(r, "mesh-delivery-assigner.") && r != "mesh-delivery-assigner.placement") { t.Errorf("reads %s: the indexer's and the assigner's state is read by their tools and views families alone", r) } } diff --git a/modules/mesh-delivery-builder/module.json b/modules/mesh-delivery-builder/module.json index 25e24e0a..b4c66db8 100644 --- a/modules/mesh-delivery-builder/module.json +++ b/modules/mesh-delivery-builder/module.json @@ -103,6 +103,7 @@ "mesh-build-image.steps", "mesh-build-node.steps", "mesh-build-node.toolchains", + "mesh-delivery-assigner.placement", "mesh-delivery-gate.source" ], "uses": [