moves: the copy scan reads movesrecoveryowners.go
TestMovesScanFilesCoverTheDiff wants every changed moves file in movesScanFiles. The recovery owners' predecessor region and return seal are bound through locals, so the copy gate's field trace no longer meets a multi-value field write; behaviour is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 files changed,
+7
−3
approved_moves_copy_test.go+1 −0internal/host/movesrecoveryowners.go+6 −3
diff --git a/approved_moves_copy_test.go b/approved_moves_copy_test.go| index eef047380..65eb303f6 100644 |
| --- a/approved_moves_copy_test.go |
| +++ b/approved_moves_copy_test.go |
| @@ -1165,6 +1165,7 @@ var movesScanFiles = []string{ |
| "internal/hostops/move_recovery_grant.go", |
| "internal/hostops/move_loss_owner.go", |
| "internal/host/movesrecoveryprobe.go", |
| + "internal/host/movesrecoveryowners.go", |
| "internal/host/claimproduction.go", |
| "internal/host/claimowners.go", |
| "internal/host/claimmoveaccess.go", |
diff --git a/internal/host/movesrecoveryowners.go b/internal/host/movesrecoveryowners.go| index c883d75cf..6b287b0b1 100644 |
| --- a/internal/host/movesrecoveryowners.go |
| +++ b/internal/host/movesrecoveryowners.go |
| @@ -213,16 +213,19 @@ func (r movesRecoveryOwners) recovery(ctx context.Context, o hostclaim.Observed) |
| if v.inputs == nil || v.inputs.Release == "" { |
| return v, fmt.Errorf("%w: no recorded recovery inputs", hostbox.ErrChanged) |
| } |
| - if v.predecessor, err = predecessorRegion(v.holder, mv.From); err != nil { |
| + predecessor, err := predecessorRegion(v.holder, mv.From) |
| + if err != nil { |
| return v, err |
| } |
| - v.rec = rec |
| + v.predecessor, v.rec = predecessor, rec |
| if !v.dirty { |
| return v, nil |
| } |
| - if v.seal, err = returnSeal(c); err != nil { |
| + seal, err := returnSeal(c) |
| + if err != nil { |
| return v, err |
| } |
| + v.seal = seal |
| j, err := moves.ReadJournal(m.DataDir, o.Host, v.rb) |
| if err != nil { |
| return v, err |