diff --git a/PROJECT.md b/PROJECT.md
index 04f3832..31f284f 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -434,6 +434,28 @@ vetoed (*"the camera movement is distracting"*) and its knobs sit at 0 — see t
(~0.35ms/frame desktop, settled key at both ends) — if the phone stutters in rallies, zero these
two before touching anything else.
+## Session log: the serve gets stakes (2026-08-13, same day)
+
+Oliver: *"the golden mark is just very easy to hit and hitting below it does not necessarily make a
+worse serve... the flicking does not work here — also I see no option to serve harder."* Three
+mechanical causes found, all fixed; PHONE VERDICT PENDING:
+
+1. **The perfect window was ~0.3 s of hang time.** The 0.12 m snap around the apex, at toss
+ gravity, held PERFECT for most of the ball's float. Now `TUNE.apexSnap` 0.05 / `apexFall` 0.55,
+ and the gold band on the apex guide reads the same knob, so the picture tightened with it.
+2. **The pace ceiling was the TARGET DEPTH, not the timing.** Measured with a replica of
+ serveArc's loft loop: at the old fixed mid-box depth, every serve above q≈0.7 was cut to the
+ same ~36 m/s — quality could not show. Player serve depth now rides quality (flush aims 0.3 m
+ inside the service line, the only depth where flat pace survives). Ladder: flush 49 /
+ flush+hard 52 / mistimed 36 / bad 30 m/s. Opponent depth untouched.
+3. **The strike flick was splatter-only.** In tennis and the duel the strike gesture now aims:
+ horizontal component sways the target toward T or sideline (`serveAimX`), upward component is
+ pace (`serveHard`, with `serveHardSpin` — the extra dive is what buys the clearance; without it
+ the loft loop cut the hard serve BELOW the plain one). Pace and sway are paid for in scatter
+ (`serveHardErr`) against the real fault machinery — tap stays the safe second serve. Keyboard:
+ arrows sway, up is the hard one. Verified in-pane with synthetic flicks: 49.4 / 52.5 / 51.0
+ swayed +1.1 m, all legal at flush timing.
+
## Session log: nothing arrives unannounced (2026-08-11, same day)
Oliver's retest: *"the horde is not announced anymore"* and *"bosses are just there now"*. Both were
diff --git a/index.html b/index.html
index f24bfa8..4fde2f3 100644
--- a/index.html
+++ b/index.html
@@ -431,6 +431,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') {
-
+