The latch is stale-proof by construction, the cup divisor honest, the trail visible
Oliver's tournament freeze was the stale latch by a THIRD route: matchFallWillPlay kept the deathmatch /4 while cup matchPoint divides by 4*need, so it promised a fall on a no-crossing point — whose synchronous matchReady left the after-set latch scoping a dead rally. No more ordering arguments: the latch is set BEFORE the resolve, the swallow exempts the in-progress resolution via G.matchEarly, and every path that arms a rally clears it in matchReady. willFall now mirrors the cup divisor exactly and knows a mid-round game keeps its body. Regression test drives the full QF sequence (no-crossing points, the fall, the mid-round game, game two). And the two 'not really' reports: the trail's 0.26 alpha was tuned on the gore palette and vanished on the bright lawn — 0.38 now, gate at 13 m/s; oppBright 1.18 -> 1.3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f9b26e5380
commit
129a001109
6 files changed
+67
-21
No files matched your search
+3
-2
@@ -736,8 +736,9 @@ export function resolveInterlude(side) {
|
||||
// spawn director quiet). Regicide arrives here too, as a 'P' with the body already gone.
|
||||
if (G.match) {
|
||||
// a rally resolved at its DECIDED moment (the early fall) is spent: the ball that kept rolling
|
||||
// for the picture still reaches its ordinary bounce-2 / rolled-out calls, and they land here
|
||||
if (G.match.decided) { ball.active = false; return; }
|
||||
// for the picture still reaches its ordinary bounce-2 / rolled-out calls, and they land here.
|
||||
// G.matchEarly exempts the deciding resolution ITSELF — the latch goes up before it runs.
|
||||
if (G.match.decided && !G.matchEarly) { ball.active = false; return; }
|
||||
if (!zombies.some(z => z.variant === 'r') && !G.match.ending) return matchGameWon(null);
|
||||
return matchPoint(side);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user