host: the no-change release witness arms a fresh releaser, so a stray marker write shows (final review F6)
The first release advanced the requester's stage throttle, so an erroneous second request would have been deferred and the immediate absence check passed anyway. The second release now goes through a freshly armed armOffline releaser, whose first request writes at once. Removing the released guard in releaseHeldSeq turns it red; the old assertion stayed green under the same mutation.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 file changed,
+8
−2
internal/host/movesoffline_e2e_test.go+8 −2
diff --git a/internal/host/movesoffline_e2e_test.go b/internal/host/movesoffline_e2e_test.go| index 78e94f77c..acd1dec79 100644 |
| --- a/internal/host/movesoffline_e2e_test.go |
| +++ b/internal/host/movesoffline_e2e_test.go |
| @@ -1754,11 +1754,17 @@ func offlineArmedReleaser(t *testing.T) { |
| if !lexists(marker) { // the first request writes at once (stageThrottle) |
| t.Fatal("the release did not touch the stage-requested marker") |
| } |
| - // A release that changes nothing touches nothing. |
| + // A release that changes nothing touches nothing. The first release |
| + // advanced cfg's stage throttle, so a request through it now would be |
| + // deferred and the marker's absence would prove nothing: the second |
| + // release goes through a freshly armed releaser, whose first request |
| + // writes at once (final review F6). |
| if err := os.Remove(marker); err != nil { |
| t.Fatal(err) |
| } |
| - if ok, err := cfg.ReleaseHoldSeq(offHost, op, registry.Pair{Incarnation: 1, ServingSeq: 2}); err != nil || ok { |
| + fresh := moveCfg{} |
| + armOffline(&fresh, dd, reg, nil, nil, hostwrite.Config{}, func(string) string { return "" }) |
| + if ok, err := fresh.ReleaseHoldSeq(offHost, op, registry.Pair{Incarnation: 1, ServingSeq: 2}); err != nil || ok { |
| t.Fatalf("a second release: %v %v", ok, err) |
| } |
| if lexists(marker) { |