From 61806a7a9288523a5a98fe4356f35ac01ee1554a Mon Sep 17 00:00:00 2001 From: jochens Date: Fri, 13 Nov 2026 00:22:48 +0100 Subject: [PATCH] H4 engine-states: the node record states the new words and forms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The node record's reads come from mesh-sdk's ManifestReads, so building with S1 and S2 states word:resources.if-config, form:config-lines and form:config-json; the record test now asserts them. Builds: design 42 zfs-owns-zfs §4, answer A-13 --- internal/link/have_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/link/have_test.go b/internal/link/have_test.go index 18f50d85..79eb06ac 100644 --- a/internal/link/have_test.go +++ b/internal/link/have_test.go @@ -318,8 +318,12 @@ func TestTheNodeKeyCarriesTheNodesFacts(t *testing.T) { t.Errorf("record = %+v, want %+v", *got.Record, wantRecord) } // Among them, that it fills a seat's reach from the seat holder's listen (ADR 0632 §1). - if !slices.Contains(got.Record.ManifestReads, catalogue.ReadForm+catalogue.ReferenceFormSeatReach) { - t.Errorf("the engine does not state it reads a seat's reach from its holder: %v", got.Record.ManifestReads) + // And the words and forms it builds (design 42 zfs-owns-zfs §4, answer A-13). + for _, read := range []string{catalogue.ReadForm + catalogue.ReferenceFormSeatReach, "word:resources.if-config", + "form:config-lines", "form:config-json"} { + if !slices.Contains(got.Record.ManifestReads, read) { + t.Errorf("the engine does not state it reads %s: %v", read, got.Record.ManifestReads) + } } at := l.kv["n1.node"].rev q.SayFacts(context.Background(), rep)