diff --git a/PROJECT.md b/PROJECT.md
index 75a92d8..cf77c6d 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -5709,6 +5709,33 @@ flipping by metres, every other frame, between two candidates:
200 ms. The old code makes 26. The early-tap test's floor moved 0.45 → 0.42: he now stops 0.12 m from his
mark instead of 0.35, so contact comes a hair later. The old curve still reads 0.33.
+### The run in and out is a DOUBLE TAP (2026-10-14, v376)
+Oliver on v375: *"das Vorlaufen und Zurücklaufen sollte durch einen Doppeltipp ausgelöst werden"*. It
+replaces v374's flick-length rule. The shot and the run are separate decisions now: the long up-flick is
+only the deep hard ball, the long down-flick only the lob.
+- **While his OWN ball flies** (rally modes, `ball.lastHit === 'P'`) there is nothing to hit, so a tap there
+ is not a swing at all. Two taps inside `dblTap` (0.35 s) are `moveCall`: from the back to the net
+ (`ball.approach = 'P'`), from the net (or while already running in) back (`ball.retreat`). A word pops
+ under him ("TO THE NET" / "BACK"). A single tap there does nothing (it used to be a pointless swish).
+- **An incoming ball keeps every tap a swing**, so the two meanings never share a moment. The rule from
+ the 2026-08-22 lob holds: the meaning depends on whose ball is in the air, which he always knows, never
+ on where the opponent stands.
+- **After his own serve it is serve and volley.** `P.rushing` no longer excludes the serve. His reply is a
+ net man's plan from wherever his run has got to.
+- **The short-ball approach stays automatic** (step 1, decision (c)). A double tap during that run takes him
+ back.
+- Input: a tap fires at lift if under 250 ms (input.js), and the canvas has `touch-action: none`, so the
+ browser's double-tap zoom never sees it.
+- Measured (σ60, level 26, 8 seeds; the bot follows 30% of its deep flicks in with a double tap): the base
+ ladder is unchanged. Attacking still pays against the pushers (Steward 52 → 61) and costs against the big
+ hitters and the Champion (Brute 29 → 20, Champion 33 → 25). It is a little weaker than v374's, because he
+ sets off after the shot, not with it.
+- Tests (172): a double tap from the back takes him in, one tap or two too far apart do nothing and never
+ swing, the long up-flick alone no longer runs; a double tap at the net takes him back, the lob alone does
+ not; an incoming ball keeps both taps swings.
+- **Not built:** a lesson for it. The ghost hand teaches the tap and the side flick only; the double tap
+ is undiscoverable without being told. Add one if the phone test says so.
+
# OPEN — leftovers, in rough priority order
Nothing here is broken; these are known gaps and unverified risks.
@@ -5723,7 +5750,8 @@ Nothing here is broken; these are known gaps and unverified risks.
v374 adds the player's own net game: long up-flick = attack and follow in, long down-flick = lob and
go back, and the SMASH. See "The player's way to the net and back" above.
v375: the auto-run's shake is gone (a latched chase plan); he is a little stronger for it, so the bottom
- of the Climb and classic easy may now be too easy. See "The auto-run stops shaking". Fallback tag `rally-baseline-v360`.
+ of the Climb and classic easy may now be too easy. See "The auto-run stops shaking".
+ v376: the run to the net and back is a DOUBLE TAP while his own ball flies (replaces v374's flick length). Fallback tag `rally-baseline-v360`.
1. **`RES` 4 is unverified on a real phone under load.** It nearly doubled the fill rate (810 -> 1080
device px across). Oliver has not reported stutter, but he also has not played a late horde since.
diff --git a/index.html b/index.html
index 03cb406..08cae4c 100644
--- a/index.html
+++ b/index.html
@@ -1140,6 +1140,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
REC
-
+