diff --git a/PROJECT.md b/PROJECT.md
index 9d4e960..9e359cb 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -356,6 +356,13 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
±4 m either side of the centre line at the baseline, so the walk bound alone let him leave the
frame entirely. `xLimit()` in gameplay — the camera limit, floored at the sideline so every legal
ball stays catchable. The walk and the sidestep share it.
+- **The auto-assist recovers in DEPTH ONLY in splatter — it must never undo a sidestep.** The
+ recovery target used to be `HOME.P`, x included, so firing walked you back toward the centre line:
+ measured, a step out to 1.94 m was dragged to 0.77 m over one ball's flight, i.e. most of a dodge
+ you had spent a cooldown on, handed back for free. That is the "welded in place" complaint the
+ sidestep exists to answer, arriving slowly instead of all at once. **Tennis keeps the full
+ recovery** — recovering to centre is the real sport's footwork and there is no sidestep there to
+ protect. (Oliver: *"the dodge swipe should not reset to the middle when firing"*.)
- **The sidestep is how you move outside `rally`, and it is not a walk.** One committed step
(`TUNE.dodgeDist`) on a cooldown, carrying `TUNE.dodgeIFrame` seconds that beat BOTH damage
channels — the chip damage in `hurtPlayer` and the instant-death contact test. It exists because a
@@ -598,6 +605,17 @@ are the ones being called now, which is a better decoy than the old fixed-batch
established soak trick; and never compare `zombies[i]` across frames, because bodies despawn at the
baseline and the array shifts (that read as a 1.5 m lane drift that never happened).
+**FIFTH PASS — two cuts.** *"what are the dice dots for?"* -> *"drop them"*, and *"the dodge swipe
+should not reset to the middle when firing"*.
+- **The die-face pips are gone from the bib and the HUD chip.** They were colourblind redundancy —
+ a channel so the mode did not rest on hue alone — but they were noise to everyone who can separate
+ the colours, and they shrank to nothing on a body at distance, which is exactly where the channel
+ had to work. **This is a known accessibility gap now, recorded rather than solved**: if the mode
+ ships, the answer is bibs that differ by SHAPE or marking at sprite scale, not dots. A channel that
+ fails at the far baseline is not a channel.
+- **The dodge fix is in gameplay.js, not in the drill**, because it was never a drill bug — see the
+ new invariant above. It changes the gore mode too, and deliberately.
+
**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** — measured: one serve
killed bib 1 and then bib 2 standing behind it, banking two correct steps in one shot. Had the
diff --git a/index.html b/index.html
index 19dd183..5858af0 100644
--- a/index.html
+++ b/index.html
@@ -399,6 +399,6 @@
-
+