From 354d62340d4d3d907d72146fc77f6fa49f12ef5e Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 28 Oct 2026 00:07:39 +0100 Subject: [PATCH] mesh-delivery-gate: the group re-push row holds no verdict at the new heads, so only the missing-run rule keeps it unasked (issue 1733, review round 2) --- .../cmd/mesh-delivery-gate/ready_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/ready_test.go b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/ready_test.go index 03ef6b9e..4f85d309 100644 --- a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/ready_test.go +++ b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/ready_test.go @@ -388,9 +388,11 @@ func TestAGroupMergesEveryMemberInOnePassOnlyOnceComposedAndApproved(t *testing. r.settleAll() r.later(askCheckBound + time.Minute) r.h.PullUpdated(pr("novox/mesh-controller", 1, ctlHead2, "feat/x", "internal/a.go")) - // Ready in its handler, with no run yet, while the check of the group's new heads together runs. - r.h.Checked(judgedAt("novox/mesh-controller", 1, ctlHead2, "pass", "t1t1t1t1t1t1")) - checkerSays(r, "feat/x", "running", "", headOf("novox/mesh-controller", 1, ctlHead2), headOf("novox/mesh-catalog", 2, catHead)) + // Made ready by a handler, before the look gives it a run: no verdict and no status at the new heads, so only the rule + // that a member with no run counts as ready now keeps the older sibling's time from asking it as unanswered. + r.h.mu.Lock() + r.h.ungate(r.h.deliveries[IDOf("novox/mesh-controller", ctlHead2)], r.h.Now()) + r.h.mu.Unlock() r.settleAll() if d := r.delivery(IDOf("novox/mesh-catalog", catHead)); r.op.count() != 0 || d.Ready == nil || !strings.Contains(d.Ready.Waits, waitsCheckBeforeAsking) {