From 39ec2948539f2c19d3ff166e0f39f38b678574a2 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 13 Oct 2026 05:22:56 +0200 Subject: [PATCH 1/2] Register R349: a merge acted on late superseded the merge after it (hq issue 349) Issue 349 is a core issue and resolves with a replay. The replay lives in mesh-controller (#290) and is proved to fail on #179's parent and pass on it. --- replays/register.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/replays/register.go b/replays/register.go index eeffaeb..f700b69 100644 --- a/replays/register.go +++ b/replays/register.go @@ -484,6 +484,22 @@ var Register = []Replay{ "refused as the controller's terminal's and leaves the layer as it was; at the terminal it is taken", Package: "./cmd/mesh-controller", Test: "TestReplay340", Files: []string{"cmd/mesh-controller/replay340_test.go"}, Home: "mesh-controller", HomeRef: "e44c726a38125ade30a6d70cee9873a4e2ea6ac2"}, + // A merge acted on late superseded the merge after it (2026-10-09): two catalogue merges were acted on in reverse + // order. The later one, a security fix to the forge's module, was planned first; the earlier one, handed over late, + // was planned after it, superseded its plan at tier 0 and planned the fixed module again at the commit without the + // fix, because a plan's age was read from when it was made, never from the branch's order. The fix (mesh-controller + // #179) ordered a branch's plans by their merge times and planned a late merge at the newer commit; ADR 0276 + // (mesh-controller #197) later replaced that with batches, and the replay holds the outcome under both. A test of its + // own in the controller, written with only what it had before — a mesh, registered modules, following.SourceMoved, + // the plans the inventory keeps — laid over the commit before. Needs a store: MESH_TEST_POSTGRES. Fix is the merge of + // its pull request; Home is the commit that added the replay, reachable once its pull request merges. + {ID: "R349", Issue: 349, Kind: InRepository, Repository: "mesh-controller", Fix: "9ca7952d5e0a5ed1e23bdcf5aea36fe967e62d14", + What: "a merge handed over late superseded the plan of the merge made after it, and planned the module that " + + "merge fixed again at the earlier commit, without the fix", + Asserts: "with the later merge acted on first and the earlier one after it, every plan left standing that plans " + + "the fixed module plans it at the later merge's commit, and one does", + Package: "./cmd/mesh-controller", Test: "TestReplay349", Files: []string{"cmd/mesh-controller/replay349_test.go"}, + Home: "mesh-controller", HomeRef: "f796dc0b73075be13fefe80fe10d556ec9fa899e"}, } // Find is the replay of that id, or of that issue. From d16c3db9d2d05ac5454390f522eed38ab0d08b47 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 13 Oct 2026 05:49:05 +0200 Subject: [PATCH 2/2] Point R349 at the replay that reaches main's batch cut (review of mesh-controller #290) --- replays/register.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/replays/register.go b/replays/register.go index f700b69..9b05c42 100644 --- a/replays/register.go +++ b/replays/register.go @@ -499,7 +499,7 @@ var Register = []Replay{ Asserts: "with the later merge acted on first and the earlier one after it, every plan left standing that plans " + "the fixed module plans it at the later merge's commit, and one does", Package: "./cmd/mesh-controller", Test: "TestReplay349", Files: []string{"cmd/mesh-controller/replay349_test.go"}, - Home: "mesh-controller", HomeRef: "f796dc0b73075be13fefe80fe10d556ec9fa899e"}, + Home: "mesh-controller", HomeRef: "5740874ce3b99b47c27403f33e6c6d2a334ad3d7"}, } // Find is the replay of that id, or of that issue.