From dbdce3b661adcac731e77235678821f3a7297c00 Mon Sep 17 00:00:00 2001 From: NINI Date: Wed, 7 Oct 2026 01:35:48 +0900 Subject: [PATCH] Stop native split retries after a legitimate completed partition --- tools/android/exercise-final-progression.ps1 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/android/exercise-final-progression.ps1 b/tools/android/exercise-final-progression.ps1 index 3660eb0..2540bd8 100644 --- a/tools/android/exercise-final-progression.ps1 +++ b/tools/android/exercise-final-progression.ps1 @@ -82,7 +82,11 @@ function SplitReal([int]$Stage,[int]$Selected,[string]$Name,[string]$OnlyId='') if($null-eq$actual){$actual=$after.latestFreePlay} if($actual.groups.Count-gt$board.groups.Count){ if(@($actual.groups|Where-Object{(($_.ballIds|Sort-Object)-join',')-eq(($ids|Sort-Object)-join',')}).Count-ne1){ - $commands.Add(@{command='Actual split selected IDs differ: preserve attempt and retry through native merge/orbit';expected=$ids;actualGroups=$actual.groups;utc=[DateTime]::UtcNow.ToString('o')}) + $commands.Add(@{command='Actual split selected IDs differ: preserve requested and actual memberships';expected=$ids;actualGroups=$actual.groups;utc=[DateTime]::UtcNow.ToString('o')}) + if($null-eq(Board $after $Stage)){ + Check "$Name-valid-actual-completed-partition-$attempt" ($after.completedStageIds-contains$Stage-and$actual.sourceStageId-eq$Stage-and(Counts $actual)-eq$targets[$Stage]-and((($actual.balls.id|Sort-Object)-join',')-eq(($board.balls.id|Sort-Object)-join','))) 'Real UI selected a different valid subset; actual goal and all IDs conserved. Requested-ID equality is not claimed.' + return $after + } MergeReal $Stage "$Name-remerge-$attempt"|Out-Null Orbit "$Name-retry-view-$attempt" (Board (Save "$Name-retry-state-$attempt") $Stage) -Pitch:($attempt%2-eq1) continue