The opponent shows up, and the death loop dies

"still very weak and slow opponent. it also spawns at places where it is
impossible to react to my serve. so i win like always. in the cases i dont
win there is a bug. when trying to serve after i got hurt i get hurt again
and again until i die".

The death loop was G.serveNum. Tennis's pointTo is the only thing that ever
reset it, and the match bypasses pointTo entirely — so the first fault of the
match armed "second serve" permanently, and every missed serve after it was a
double fault, a point, and blood, repeating to death. Exactly the spiral a
rattled player serves into. matchReady(), the match's own point boundary,
resets it now; a regression pins it.

The receiver starts every point on its mark: matchReady drops it onto the
exact receiver position the tennis branch computes for O, deuce/ad mirrored,
instead of a random spawn x or wherever the last rally left it. An opponent
that cannot reach the serve is not weak, it is absent.

And the base opponent is a player now: matchSpeedBase 1.4 (the duel's 2.8m/s
lumber was tuned for one sudden-death point), matchFlub 0.08 (0.2 gives away
a fifth of all returns). Measured with the same autopilot that previously won
seven straight games: it now loses the match. Possibly too hot — the two
dials are named, Oliver's thumb decides.

40 tests, 15 seeds clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-11 22:41:10 +02:00
1 parent ea6e50f8f8
commit f67411e330
6 files changed
+83 -14

No files matched your search

+19
View File
@@ -870,6 +870,25 @@ after the first serve does not happen from behind the groundline"*.
tennis branch. Serving from mid-court where the last rally left you read as a bug because it was
one. Verified: second serve from z 24.3, x mirrored to the ad side.
**FIFTEENTH PASS — the opponent shows up, and the death loop dies.** Oliver: *"still very weak and
slow opponent. it also spawns at places where it is impossible to react to my serve. so i win like
always. in the cases i dont win there is a bug. when trying to serve after i got hurt i get hurt
again and again until i die"*.
- **THE DEATH LOOP was `G.serveNum`.** Tennis's `pointTo` is the only thing that ever reset it — and
the match bypasses pointTo entirely. So the first fault of the match armed "second serve"
PERMANENTLY: every missed serve after it was a double fault -> a point -> blood -> repeat to
death, which is exactly the spiral a just-hurt, rattled player serves into. `matchReady()` (the
match's own point boundary) resets it now, and a regression pins it.
- **The receiver starts every point ON ITS MARK.** It was spawning at a random x and standing
wherever the last rally abandoned it — an opponent that cannot reach the serve is not weak, it is
absent, and every ace against it was hollow. `matchReady` drops it onto the exact receiver
position the tennis branch computes for O (deuce/ad mirrored with the server).
- **The base opponent is a player now**: `matchSpeedBase` 1.4 (the duel's 2.8 m/s lumber was tuned
for ONE sudden-death point, not a game) and `matchFlub` 0.08 (the duel's 0.2 gives away a fifth of
all returns — an opponent that beats itself). Measured with the same autopilot that previously won
seven straight games: **it now loses the match** (2-3, then blooded out in game two). That may
even be too hot — `matchSpeedBase`/`matchFlub` are the two dials, and Oliver's thumb is the judge.
**Open, and every one of them is Oliver's call after he plays it:**
1. ~~**A ball that carries through the lane can complete two steps at once.**~~ Largely CLOSED by
the slice removal (seventh pass) — a cut ball picking its own next victim was the main way this