From 4f076c6cc306a92783965c9d77c715db2cb5744a Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 12 Nov 2026 11:56:44 +0100 Subject: [PATCH] Area 4 (join 11): the indexer's TestManifestDeclarations reads its readers' invokes in both forms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The readers' invokes are read with mesh-sdk's catalogue.InvokedVerbs, so a long-form {verb, fields} entry (the assigner's) is read rather than refused by the test's own decode. Builds: design 47 G A-275, §558 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- modules/mesh-delivery-indexer/manifest_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/mesh-delivery-indexer/manifest_test.go b/modules/mesh-delivery-indexer/manifest_test.go index 0b7c1a29..bc05d204 100644 --- a/modules/mesh-delivery-indexer/manifest_test.go +++ b/modules/mesh-delivery-indexer/manifest_test.go @@ -245,12 +245,20 @@ func TestManifestDeclarations(t *testing.T) { // 1238/AC1, 1444 (reads the build t.Fatal(err) } var r struct { - Invokes []string `json:"invokes"` + Invokes json.RawMessage `json:"invokes"` } if err := json.Unmarshal(raw, &r); err != nil { t.Fatalf("%s: %v", p, err) } - for _, inv := range r.Invokes { + // A reader's invokes in either form, a verb or {verb, fields} (§558, A-275), read by mesh-sdk's one reader. + if len(r.Invokes) == 0 { + continue + } + invoked, err := catalogue.InvokedVerbs(r.Invokes) + if err != nil { + t.Fatalf("%s: %v", p, err) + } + for _, inv := range invoked { // The grants part (W8) and the assigner read modules until their own subtasks move them to revision; the join removes this line. if (p == "../mesh-grants/module.json" || p == "../mesh-delivery-assigner/module.json") && inv == "mesh-delivery-indexer.modules" || inv == "mesh-delivery-indexer.indexer_read_modules" { // design 47 G §196: the readers' own subtasks move them to the catalog half