From dd366f8a3fe69f883f49ec70c23aa797a26fc5c6 Mon Sep 17 00:00:00 2001 From: jochen Date: Fri, 30 Oct 2026 18:37:56 +0100 Subject: [PATCH] Pin the group's final mesh-sdk 206f794e with its captured conformance files, and read the engine's superseded word on a secret move (issue 774) The captured SDK (testdata/beside, conformance/events) is taken again at the pinned commit, as CAPTURED says. The controller's mirror of MoveSecretAnswer gains `superseded` (mesh-host b9c24a7): the vault holds another value, the live one, and the machine's older value is not moved and not asked again. The field test names it. A superseded row is still counted with the moved ones: counting it apart needs a field and its words in nodeMove, more than the one line asked. --- go.mod | 2 +- go.sum | 4 ++-- internal/link/movesecret.go | 3 +++ internal/link/movesecret_test.go | 5 +++-- testdata/beside/CAPTURED | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 53ab3743..926240e8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/novox/mesh-controller go 1.26.0 require ( - git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030172623-ef1ec1c93544 + git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030173554-206f794eb319 github.com/jackc/pgx/v5 v5.10.0 github.com/nats-io/nats-server/v2 v2.11.17 github.com/nats-io/nats.go v1.54.0 diff --git a/go.sum b/go.sum index 8e90a17d..bdf3b523 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ git.novox.be/novox/mesh-host v0.0.0-20261018171808-9d9e3a46c4f5 h1:E5stfIeCN6uYgA9TCv+4K8JgaURg3zQppvUgJLaDMP4= git.novox.be/novox/mesh-host v0.0.0-20261018171808-9d9e3a46c4f5/go.mod h1:4wyoCr6IIIIarEUuROThWDj7DAvJvIidqMjWcpSnOwE= -git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030172623-ef1ec1c93544 h1:k7t20mLhKKZADBiGhTofzmwm61OK3jU1Z7Dz3Zj8Bi8= -git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030172623-ef1ec1c93544/go.mod h1:ouERNpZizzwZ0HLEtAypsY9FR20FyUgUYRni6J7kVCY= +git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030173554-206f794eb319 h1:SS5YIVxK9QGONNSz/RL9vW87kNlXYCUvk4xOZbDPjXw= +git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261030173554-206f794eb319/go.mod h1:ouERNpZizzwZ0HLEtAypsY9FR20FyUgUYRni6J7kVCY= github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op h1:Z/MZK75wC/NSrkgqeNIa7jexam9uWzhLmFTSCPI/kn0= github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op/go.mod h1:FQyySiasQQM8735Ddel3MRojmy4dA1IqCeyJ5jmPMbI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/internal/link/movesecret.go b/internal/link/movesecret.go index bcaa2e6a..ef498103 100644 --- a/internal/link/movesecret.go +++ b/internal/link/movesecret.go @@ -52,6 +52,9 @@ type MoveSecretAnswer struct { Secret string `json:"secret,omitempty"` Generation int `json:"generation,omitempty"` Unchanged bool `json:"unchanged,omitempty"` + // Superseded says the vault holds another value of the secret, which is the live one, and this machine's older value + // was not moved and is not asked again (mesh-host b9c24a7, sweep 2026-10-30). + Superseded bool `json:"superseded,omitempty"` } // MoveSecretWithin is how long the controller waits for one move: the engine asks the vault twice. diff --git a/internal/link/movesecret_test.go b/internal/link/movesecret_test.go index cfad665f..d72654a1 100644 --- a/internal/link/movesecret_test.go +++ b/internal/link/movesecret_test.go @@ -30,8 +30,9 @@ func TestTheMovesAskAndAnswerKeepTheirFieldNames(t *testing.T) { "provision sealed sealed_to" { t.Fatalf("the ask's fields are %q", got) } - answer := MoveSecretAnswer{Said: "s", Refused: "r", Secret: "own/a/b/c", Generation: 1, Unchanged: true} - if got := keys(answer); got != "generation refused said secret unchanged" { + answer := MoveSecretAnswer{Said: "s", Refused: "r", Secret: "own/a/b/c", Generation: 1, Unchanged: true, + Superseded: true} + if got := keys(answer); got != "generation refused said secret superseded unchanged" { t.Fatalf("the answer's fields are %q", got) } if broker.AskMoveSecretSubject("laptop") != "mesh.node.laptop.ask.move-secret" || diff --git a/testdata/beside/CAPTURED b/testdata/beside/CAPTURED index 3f41e492..004fa075 100644 --- a/testdata/beside/CAPTURED +++ b/testdata/beside/CAPTURED @@ -9,7 +9,7 @@ a second place to clean besides the catalogue itself. mesh-catalog f3a57dcc56fb6c198095cafd11d0decff9f720c4 modules/*/module.json, modules/*/files, modules/*/templates, predefined.json mesh-host 9d9e3a46c4f5943cfffb413d962ce48b75e2fd39 examples/foundation-first-node.lock -mesh-sdk ef1ec1c93544f0fc12b2dca608167bf2af11a846 conformance/events/module-event.json +mesh-sdk 206f794eb319136a93cfaac57e5f18bee0a1ce8b conformance/events/module-event.json To move them, from this repository's root, with the two repositories checked out beside it: