From bd5f170af0310a2faa5f6f59f2f46c1f2a0eb50b Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 28 Oct 2026 09:28:01 +0100 Subject: [PATCH] The placement check's list of modules still reading the controller's assignments only shrinks against the trunk's copy (issue 774, ADR 0529 clause 2) --- checks/placement/go.mod | 9 ++++++++ checks/placement/go.sum | 14 ++++++++++++ checks/placement/realtree_test.go | 37 +++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 checks/placement/go.mod create mode 100644 checks/placement/go.sum create mode 100644 checks/placement/realtree_test.go diff --git a/checks/placement/go.mod b/checks/placement/go.mod new file mode 100644 index 00000000..d1731962 --- /dev/null +++ b/checks/placement/go.mod @@ -0,0 +1,9 @@ +module checks/placement + +go 1.26.0 + +require git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261027014310-cadd7b1b2f8f + +require git.novox.be/novox/mesh-catalog/checks/trunk v0.0.0 + +replace git.novox.be/novox/mesh-catalog/checks/trunk => ../trunk diff --git a/checks/placement/go.sum b/checks/placement/go.sum new file mode 100644 index 00000000..fde2a9d0 --- /dev/null +++ b/checks/placement/go.sum @@ -0,0 +1,14 @@ +git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261027014310-cadd7b1b2f8f h1:mimAGERguQmCGYVNdRTrFcZ1dhpU6GWo+Q3EDhHOrVk= +git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261027014310-cadd7b1b2f8f/go.mod h1:ouERNpZizzwZ0HLEtAypsY9FR20FyUgUYRni6J7kVCY= +github.com/klauspost/compress v1.20.0 h1:a3C1ke2ohxFymNlb2HWAHjDeKCI90scRskErZkR0ezA= +github.com/klauspost/compress v1.20.0/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= +github.com/nats-io/nats.go v1.54.0 h1:vsXoOxjHp/GmPUN+EcI7uOf/uB+iAP+kEsAFNQN0yzA= +github.com/nats-io/nats.go v1.54.0/go.mod h1:y+DZoD1oBOYfZTU681eTUiUjI0vbqYGixNVFHcjHJ0k= +github.com/nats-io/nkeys v0.4.16 h1:rd5oAuLOb8mnAycB0xleuEBNS1pVVnN0fv/FF34Eypg= +github.com/nats-io/nkeys v0.4.16/go.mod h1:llLgWoI0o4z/Q57q2R1kHfmocyhGV6VG/U18Glg1Afs= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M= +golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= diff --git a/checks/placement/realtree_test.go b/checks/placement/realtree_test.go new file mode 100644 index 00000000..6a6adfd8 --- /dev/null +++ b/checks/placement/realtree_test.go @@ -0,0 +1,37 @@ +package main + +import ( + "os" + "strings" + "testing" + + "git.novox.be/novox/mesh-catalog/checks/trunk" +) + +// Issue 774 (ADR 0549 §3, §6; the comparison of novox/hq ADR 0529 clause 2): the list of modules still reading the +// controller's assignments gains none the trunk's copy at the merge base does not hold. Its first copy gains nothing. +func TestTheAssignmentsReadersListGainsNoModuleTheTrunksDoesNot(t *testing.T) { + path, ok := trunk.Copy(t, Allowed) + if !ok { + return + } + names := func(path string) map[string]bool { + raw, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + out := map[string]bool{} + for _, line := range strings.Split(string(raw), "\n") { + if f := strings.Fields(line); len(f) > 0 && !strings.HasPrefix(f[0], "#") { + out[f[0]] = true + } + } + return out + } + base := names(path) + for module := range names("../../" + Allowed) { + if !base[module] { + t.Errorf("%s gains %s, which the trunk's copy does not hold: the list only shrinks", Allowed, module) + } + } +}