R6: the controller writes signed per-node compositions and their digests; plans, pushes and their verbs go (issue 1945) #457

Merged
mesh-tools merged 67 commits from feat/r6 into main 2026-10-24 23:00:31 +00:00
Showing only changes of commit 9c38aed789 - Show all commits
@@ -9,6 +9,7 @@ import (
"testing"
"git.novox.be/novox/mesh-sdk/go/catalogue"
"git.novox.be/novox/mesh-sdk/go/compose"
"github.com/novox/mesh-controller/internal/broker"
)
@@ -212,8 +213,12 @@ func TestAServedKeyIsRefusedThroughAVerb(t *testing.T) {
refused("a setting a trusted file asks for, through the verb", throughVerb(t, "settings", map[string]any{
"module": "power", "node": "anchor", "values": `{"lid":"ignore","x":0}`}))
// And `trusted` is the catalogue's word: it never reaches the machine, whose engine parses strictly.
plan := printed(t, func() error { return atTheTerminal(t, "plan", "anchor", "--json") })
if strings.Contains(plan, `"trusted"`) {
declared, _, err := composeQuestion(ctx, open, "anchor", compose.Reading, false)
if err != nil {
t.Fatal(err)
}
body, _ := json.Marshal(declared.Resources)
if strings.Contains(string(body), `"trusted"`) {
t.Fatal("the declaration carries the catalogue's `trusted`")
}
}