diff --git a/PROJECT.md b/PROJECT.md
index acd7f63..22a2331 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -948,6 +948,25 @@ strength because the balls kept landing where he wasn't.
the state is worn, not reported. At 1 hp the frame is properly blood-rimmed and the court centre
stays legible.
+**NINETEENTH PASS — pace was the missing dial, and the reachability test finally exists.** Oliver:
+*"the vignette can get more pronounced and there are still balls which are basically not reachable
+with auto run.. please recheck"* — plus, asked twice and deserving a straight answer: *"did you
+write tests for the last issues we encountered?"* **No — the unreachable-balls issue only ever had
+config assertions, which is exactly why it came back twice.**
+- **Pace, the ladder's FOURTH dial** (`matchOppPace` 0.78, `matchOppPacePer` 0.05/rung): width alone
+ never fixed reachability because the returns left at ~27 m/s — crossing to your baseline in
+ ~0.6 s, less than auto-run needs from the far corner. Opponent one now returns at ~20 m/s
+ (measured live: twelve returns, 20.0-20.7), a quarter more flight time; the rungs take it back.
+- **The vignette deepens**: `dmg * 0.8` (was 0.5), cap 0.85, and the clean centre SHRINKS with
+ damage rather than only the rim darkening.
+- **The REACHABILITY REGRESSION** (the test this issue always deserved): a headless 90 s autopilot
+ soak — auto-run, fixed tap window, no placement — asserting ≥10 returns sampled and ≤15% that
+ never came within volley reach. Sabotage-verified: cranked knobs trip the suite.
+ **Its honest limit, recorded so nobody overtrusts it**: the autopilot attends perfectly and taps
+ frame-precisely, so it OUT-COVERS a human — knob-legal-but-hostile values still pass it. It is a
+ floor against catastrophic regressions, not a proxy for Oliver's thumb; his playtest stays the
+ real gate for "reachable".
+
**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 67a311b..0a5424d 100644
--- a/index.html
+++ b/index.html
@@ -400,6 +400,6 @@
-
+