diff --git a/PROJECT.md b/PROJECT.md
index 4b1d2c0..5879839 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -5466,6 +5466,25 @@ 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.
+### His v367 log: the flick back-dating was wrong, and the half-volley rescue used the wrong window (v368)
+- **v366's flick back-dating made slow flicks EARLY.** Every 62-64 ms flick landed 76-92 ms early (q
+ 0.05-0.2). A 97 ms flick whiffed "14 ms after the window closed" and cost a point. The 31-45 ms
+ flicks were fine. A flick is timed by its SWIPE, not by its touch-down. `TUNE.flickLead` is now 0
+ (knob kept). The touch's age is still logged for both gestures, and taps keep their touch-down timing.
+- **The early-swing half-volley rescue judged its deadline against the swing's current, VOLLEY-length
+ window.** After the bounce the shorter groundstroke window applies, so it decided to wait and then
+ expired on the bounce frame. That is his 8.98 s "waited for the bounce": the Brute had come in and
+ dug his drop out weakly (q 0.3, 15 m/s), so it was a sitter, lost. The deadline is now the
+ post-bounce window, less a frame.
+- **Point 3 (a 32 m/s topspin return of his serve into the left corner):** he ended up 1.5 m FORWARD and
+ only 1 m left. Rebuilt headless twice (from the baseline, and after his own serve); the auto-run
+ reached the ball both times (5-15 cm). Not reproduced. THEM lines now carry where the player stood
+ (`px,pz`) and MISS lines where the auto-run was taking him (`runTo`), so the next one explains itself.
+- Observed, not changed: the CPU's "heavy topspin" carries its extra gravity THROUGH the bounce, so it
+ skids low afterwards and nearly every contact in his logs is 0-25 cm off the grass. Real topspin
+ kicks UP. Resetting `ball.g` at the bounce would fix the picture but moves every timing in the
+ rally (all four planners), so it is a decision to put to him.
+
# 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 cf525f2..433e52a 100644
--- a/index.html
+++ b/index.html
@@ -1140,6 +1140,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
REC
-
+