diff --git a/PROJECT.md b/PROJECT.md
index 1eb9487..1d2bdb9 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -636,6 +636,21 @@ Each phase ships to staging and gets a phone verdict, and tests ride along with
5. **LATER.** The metal bed (when Oliver has a track: start at the transformation, gore only) and Members'
Night (option C).
+## Session log: the burning ball and the gore grade (2026-10-16, v389)
+
+Oliver picked two of the polish ideas (1 and 5; weather only after he has seen a preview):
+- **The burning ball** (idea 1, reshaped by the old verdict): the spark ring around a perfect contact was
+ "too much" once (see the comment where it lived in render), so nothing is drawn AROUND the contact.
+ A perfect strike (rally or serve, yours only) stamps `ball.hotT = G.idleT`; render draws the ball
+ white and 1.5x through the 50 ms hitstop (the impact frame), a warm additive halo cooling over
+ `TUNE.hotGlowT` 0.45 s, and the ghost streak in gold, at least six long, for the whole flight. Any other
+ hit and every toss clear it. Test: every perfect strike burns, the reply is cold.
+- **The gore grade** (idea 5): when the slaughter owns the court (splatter/eaten, no match, no bench or
+ drill) the world pass gets a `saturation` grey fill and a `multiply` blood cast, weight eased in over
+ ~1.5 s; `TUNE.goreGrade` 0.5 (1.0 tried — the zombies lose their green). The HUD is drawn after it
+ and stays clean. In the story it starts at the TURN (`morph.boss` set), so the boss growing is the
+ moment the picture drains — the metal follows at `run`.
+
## Session log: the cup's tableau returns, the act card shows its court (2026-10-16, v388)
Oliver after a full replay: "das im Storyboard benannte 03 Turnier-Tableau sehe ich nie" — right, phases
diff --git a/index.html b/index.html
index faedf1a..cc3f685 100644
--- a/index.html
+++ b/index.html
@@ -1211,6 +1211,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
REC
-
+