diff --git a/PROJECT.md b/PROJECT.md
index de916ec..a13a727 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -986,6 +986,30 @@ himself in live play.
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.
+**TWENTY-FIRST PASS — the short ball, the home-bound intercept, and the portrait vignette.** Second
+recorded session: 5 wins and a deuce war to 5-6 (the mode is a contest now), but all seven losses
+shared one signature — the ball DIED IN COURT 1.4-2 m short of him while he ran 0.2-0.5 m. Plus his
+note *"there seems to be a problem when the ball arrives right from the player"* and *"still no
+vignette. just a slight red pulsing from below"*. Three distinct defects:
+- **The pace cut created DYING ROLLERS**: slow returns bounce and die at z 18-20 — outside
+ `intercept`'s near zone, so nothing ever chased them, and the rolled-dead rule gives the point to
+ the last hitter (the zombie). They also arrive at his feet below legal contact height, which is
+ the "ball arrives right at the player" feel. `intercept` now keeps an `anyHit` candidate — the
+ earliest REACHABLE point on his half where the ball is still at hitting height — so the assist
+ runs FORWARD onto the short ball, which is the tennis answer. (Zone points still win: deep is
+ better.) Verified: the chase test shows him sprinting z 23 -> 16.4 and meeting the ball at gap ~0.
+- **`intercept` computed reachability with `autoAssist`** — 0 on any fine pointer — so a desktop
+ match's intercept thought nothing was reachable and answered "home" every time: he had legs
+ (matchAssist) but his destination was always the baseline centre. `assistK()` is the shared
+ helper now; both the mover and the planner use it.
+- **THE VIGNETTE WAS RADIAL IN A PORTRAIT CANVAS.** The circle reaches the corners but arrives at
+ the left/right screen edges at fraction ZERO — "red pulsing from below" was the bottom edge being
+ the only place the circle got close. It is FOUR LINEAR EDGE FADES now, hugging the actual
+ rectangle on any aspect, sqrt(dmg) curve kept, inset deepening with damage. Posed at 6/8 hp: all
+ four edges carry visible red.
+- **Test-measurement trap for the log**: reading `P.z` after the chase loop proves nothing — the
+ point reset teleports him home. Measure the minimum DURING the chase.
+
**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 353a30f..0e15987 100644
--- a/index.html
+++ b/index.html
@@ -400,6 +400,6 @@
-
+