diff --git a/PROJECT.md b/PROJECT.md
index eeaaeb9..4b1d2c0 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -5445,6 +5445,27 @@ Oliver: *"bitte bau nochmal die Funktion ein die protokolliert warum ich einen B
the bounce will land inside the swing window. Otherwise it digs the ball out as a half-volley, capped
below the tape. His 48.14 s MISS was exactly this.
+### "passed you" called before the ball reached him (2026-10-14, v367) — a step-1 regression
+Oliver's v366 log vs THE BRUTE, first loss:
+1. A 29 m/s topspin drive landed 3.7 m to his left.
+2. He reached it at the edge of his reach (q 0.09).
+3. The Brute came in behind the weak reply and hit 3 m to his left.
+4. LOST "passed you", with no swing at all.
+
+The match awards the CPU the point the moment its ball crosses `COURT.L + 0.3`. That line was
+written when the player stood INSIDE his baseline. Since step 1 he waits up to `rallyBehind` (2.2 m)
+BEHIND it, deepest against heavy topspin. A ball passing ~1.5 m beside him only enters his reach about
+0.5 m in front of him (the reach ellipse is shallow off-centre), so the point was called before the
+ball was ever playable. A late-but-legal tap was cut off the same way. **In the match, "past you" now
+means past your reach:** `max(L + 0.3, P.z + reach·matchReach + 0.3)`. The duel keeps the old line;
+classic was never affected (it calls the second bounce). Test: a deep, slightly wide topspin ball
+against a player held 1.8 m behind his line. Without the fix it reproduces his exact log line
+(`LOST passed you`); with it he returns it. The "never swung, it came within X m" annotation is pinned
+in the same test.
+
+The swing log's HIT line now also says which way the timing missed: `late 40ms` (the ball was already
+there when the window opened) or `early 40ms`. That was the question his first loss could not answer.
+
# OPEN — leftovers, in rough priority order
Nothing here is broken; these are known gaps and unverified risks.
diff --git a/index.html b/index.html
index 89e89ea..cf525f2 100644
--- a/index.html
+++ b/index.html
@@ -1140,6 +1140,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
REC
-
+