From 2b37238b30df369c90b2abfc1b9988ff1c521b4e Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:47:18 +0100 Subject: [PATCH] =?UTF-8?q?JUDGE=20(=C2=A7627):=20the=20node-engine's=20mo?= =?UTF-8?q?dule=20is=20a=20foundation=20part,=20its=20findings=20stay=20in?= =?UTF-8?q?=20the=20old=20sections?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foundation gains mesh-host, the holder of the seat node-engine (§627, ADR 0619 §1); a row in the G words test accepts its old state and stream mesh-host-findings (fails without it). Builds: design 47 G §627, §529, A-30 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- modules/mesh-delivery-indexer/judge/g_words_test.go | 2 ++ modules/mesh-delivery-indexer/judge/oldsections.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/mesh-delivery-indexer/judge/g_words_test.go b/modules/mesh-delivery-indexer/judge/g_words_test.go index 59e225db..228defd5 100644 --- a/modules/mesh-delivery-indexer/judge/g_words_test.go +++ b/modules/mesh-delivery-indexer/judge/g_words_test.go @@ -22,6 +22,8 @@ func TestTheJudgeReadsMilestoneGsWords(t *testing.T) { `"streams":[{"name":"gitea-findings","events":["finding-written"],"retention":"history"}],"consumes":["mesh-conditions.findings-asked"]}`}, {name: "the image registry is a foundation part too (§584)", raw: `{"module":"distribution","version":"1.0","state":["findings"],` + `"streams":[{"name":"distribution-findings","events":["finding-written"],"retention":"history"}],"consumes":["mesh-conditions.findings-asked"]}`}, + {name: "the node-engine's module is a foundation part (§627)", raw: `{"module":"mesh-host","version":"1.0","state":["findings"],` + + `"streams":[{"name":"mesh-host-findings","events":["finding-written.*","finding-cleared.*","findings-stated.*"],"max-age-days":7,"max-mib":16}],"consumes":["mesh-conditions.findings-asked"]}`}, {name: "another part's old findings and stream (§529, §577)", raw: `{"module":"a","version":"1.0","state":["findings"],` + `"streams":[{"name":"a-findings","events":["finding-written"],"retention":"history"}],"consumes":["mesh-conditions.findings-asked"]}`, want: "old sections"}, {name: "another part's findings in its requires (§529)", raw: `{"module":"a","version":"1.0","consumes":["mesh-conditions.findings-asked"],"requires":[` + diff --git a/modules/mesh-delivery-indexer/judge/oldsections.go b/modules/mesh-delivery-indexer/judge/oldsections.go index f9157365..506a214b 100644 --- a/modules/mesh-delivery-indexer/judge/oldsections.go +++ b/modules/mesh-delivery-indexer/judge/oldsections.go @@ -20,10 +20,10 @@ var OldSections = []string{"state", "logs", "streams", "objects"} // composition, assignments, build or delivery needs before it can answer (novox/hq ADR 0619 §1, §3, as ADR 0666 §4 changes // them): the bus module, the grants part, the indexer, the assigner, the tool runner, the builder, the checker, mesh-config, // the vault, the pipeline runner, which runs the bus module's own pipeline, and the forge module and the image registry -// module, which its build calls (design 47 G §584). Their new state goes on their old sections +// module, which its build calls (design 47 G §584), and the node-engine's module, which composes every part (§627). Their new state goes on their old sections // too, so a foundation manifest asking bus state in the new form is refused. var Foundation = []string{"nats", "mesh-grants", "mesh-delivery-indexer", "mesh-delivery-assigner", "node-tools", - "mesh-delivery-builder", "mesh-delivery-checker", "mesh-config", "mesh-vault", "mesh-delivery-pipeline", "gitea", "distribution"} + "mesh-delivery-builder", "mesh-delivery-checker", "mesh-config", "mesh-vault", "mesh-delivery-pipeline", "gitea", "distribution", "mesh-host"} // ViewOwners are the two owners whose state every reader reads through their first views and read tools, never by a // `reads` entry (novox/hq ADR 0615 §1): CountOwnerReads counts what is left of those entries.