diff --git a/PROJECT.md b/PROJECT.md
index 22a2331..de916ec 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -967,6 +967,25 @@ config assertions, which is exactly why it came back twice.**
floor against catastrophic regressions, not a proxy for Oliver's thumb; his playtest stays the
real gate for "reachable".
+**TWENTIETH PASS — the flight recorder, and the statue with a racket.** Oliver asked to be WATCHED:
+*"can you watch me play in the browser pane and see why I loose"*. A passive 20 Hz recorder was
+injected (samples score/ball/player/opponent, keeps the last 1.5 s of trajectory before every lost
+point, touches nothing) and he played a real match in the pane. Seven losses on record, and the
+verdict was unambiguous — **he swung in every single lost point (4-5 swing frames each) while the
+ball died 2-3 m to his side, and his own x never moved all game.** His timing was fine. He had no
+legs: `autoAssist` keys off `pointer: coarse`, the pane reports a FINE pointer, so auto-run was 0 —
+the exact trap the verification recipe has warned about for weeks, now bitten by the designer
+himself in live play.
+- **`matchAssist` 1.15: the match brings its own legs on every device.** It is a tap-timing game;
+ footwork is the game's job. Held keys still override (the assist only runs with no manual input).
+ Pinned by a test that plays with `autoAssist` 0 — the desktop condition — and asserts he runs.
+- **The vignette curve is sqrt(damage)**, not linear: the match pool is 8, so hit one was a 10%
+ alpha nobody can see ("basically invisible"). sqrt front-loads it — first blood reads at ~0.3 and
+ it still deepens to the cap.
+- **The flight-recorder pattern is worth keeping**: instrument passively, let Oliver play, read the
+ trails. It ended a three-round guessing match in one session — his reports and my autopilot
+ measurements kept disagreeing because the autopilot had legs he did not.
+
**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
diff --git a/index.html b/index.html
index 0a5424d..353a30f 100644
--- a/index.html
+++ b/index.html
@@ -400,6 +400,6 @@
-
+