diff --git a/PROJECT.md b/PROJECT.md
index dddaf49..878305c 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -491,6 +491,28 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
`RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud
FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone.
+## Session log: the licence, the peer line, the steward's vest (2026-08-29, Oliver's small-finds batch)
+
+Three of five items from his post-merge test built (training xp and the level/xp display are
+under discussion):
+
+- **THE WEAPON LICENCE hardened.** His catch: the duel's tin was league-gated but the BARRELS
+ still paid every weapon. Root fix, not a barrel patch: the league is a LICENCE and the run's
+ `from` gates are the PACING — both must hold, in `tinLadder()` AND `pickBarrelWeapon()`. The
+ tins' old OR (league unlocks early) just moved his complaint one screen over, so it went:
+ below league 3 there are no lasers anywhere, ever; rockets need league 4; the gore director's
+ tuned income curve is untouched for licensed players. Tin test rewritten to licence semantics.
+- **THE PEER LINE**: every walk-on modal now carries "LEVEL 34 — YOURS: 20" (config.foeLevel —
+ the ladder position spread over the profile's 50 levels, display only, nothing scales off it),
+ so you can feel whether you are that body's equal yet. His ask, verbatim.
+- **THE STEWARD GOT HIS VEST BACK.** The tennis family was rolled off z_d1 (which wears the
+ orange hi-vis) but the FAMS words said "dark uniform jacket" — and the words won. The words
+ name the vest now ("on him in EVERY single pose"); family re-rolled through
+ _famroll -> _zsheet, review-cut checked, installed (SPRV 149 -> 150). z_sthead was already cut
+ from the gore frame and stayed byte-identical. NOTE: a full `_heads.py --install` rebuilds SIX
+ OTHER head icons differently from what is installed (script drift, br/ch/dr/gk/ma/r) — those
+ were reverted, not shipped as a side effect; whoever touches heads next should reconcile first.
+
## Session log: THE LEVEL IS YOU, IN THE LEAGUE — legs and window (2026-08-29, after the merge)
Oliver's deep-test question ("wie wirkt sich mein level aus? werde ich schneller, genauer?")
diff --git a/assets/_famroll.py b/assets/_famroll.py
index ae29df2..17de3e2 100644
--- a/assets/_famroll.py
+++ b/assets/_famroll.py
@@ -33,7 +33,11 @@ FAMS = {
'rounded shoulders. Far bulkier, heavier and wider than the figure in image 1'),
'sh': ('z_a1', 'a lean SHAMBLING ZOMBIE in a filthy dark red tennis shirt and grey shorts, gaunt and stooped'),
'bb': ('z_e1', 'a small young ZOMBIE BALL BOY in a pale tournament polo and shorts, slight and short'),
- 'st': ('z_d1', 'a ZOMBIE STEWARD in a dark uniform jacket with a high collar, stiff and official'),
+ # 2026-08-29 (Oliver): the roll dropped his HI-VIS VEST — the words said "dark uniform jacket"
+ # while the anchor frame z_d1 wears bright orange over it, and the words won. Name the vest.
+ 'st': ('z_d1', 'a ZOMBIE STEWARD wearing a BRIGHT ORANGE HI-VIS SAFETY VEST with grey reflective '
+ 'stripes OVER a dark uniform jacket, stiff and official. The orange vest is on him in '
+ 'EVERY single pose — it is his uniform'),
'ru': ('z_f1', 'a wiry FAST ZOMBIE RUNNER in a sleeveless tennis top, lean and forward-leaning'),
# THE GROUNDSKEEPER ANCHORS ON THE HAND-FINISHED FRAME, not on z_boss1 (2026-08-16). His boss art
# is the last of the coarse legacy sheets, and the old description here ("work overalls and a
diff --git a/assets/z_st1.png b/assets/z_st1.png
index efa8751..619460b 100644
Binary files a/assets/z_st1.png and b/assets/z_st1.png differ
diff --git a/assets/z_st2.png b/assets/z_st2.png
index 2b3db42..158480b 100644
Binary files a/assets/z_st2.png and b/assets/z_st2.png differ
diff --git a/assets/z_st3.png b/assets/z_st3.png
index 99dc6b3..58b0fa0 100644
Binary files a/assets/z_st3.png and b/assets/z_st3.png differ
diff --git a/assets/z_st4.png b/assets/z_st4.png
index 6022b63..291b1f0 100644
Binary files a/assets/z_st4.png and b/assets/z_st4.png differ
diff --git a/assets/z_stbounce.png b/assets/z_stbounce.png
index ff1e905..4925286 100644
Binary files a/assets/z_stbounce.png and b/assets/z_stbounce.png differ
diff --git a/assets/z_stfall1.png b/assets/z_stfall1.png
index 5c38baf..072ca4b 100644
Binary files a/assets/z_stfall1.png and b/assets/z_stfall1.png differ
diff --git a/assets/z_stfall2.png b/assets/z_stfall2.png
index 798c398..eae1a98 100644
Binary files a/assets/z_stfall2.png and b/assets/z_stfall2.png differ
diff --git a/assets/z_stfall3.png b/assets/z_stfall3.png
index 501c028..2cc117f 100644
Binary files a/assets/z_stfall3.png and b/assets/z_stfall3.png differ
diff --git a/assets/z_strise.png b/assets/z_strise.png
index cb96f92..367dbe1 100644
Binary files a/assets/z_strise.png and b/assets/z_strise.png differ
diff --git a/assets/z_stserve.png b/assets/z_stserve.png
index 1ea7858..4856707 100644
Binary files a/assets/z_stserve.png and b/assets/z_stserve.png differ
diff --git a/assets/z_sttoss.png b/assets/z_sttoss.png
index 02bf921..c99baa5 100644
Binary files a/assets/z_sttoss.png and b/assets/z_sttoss.png differ
diff --git a/assets/z_stw1.png b/assets/z_stw1.png
index d42f2d7..379b943 100644
Binary files a/assets/z_stw1.png and b/assets/z_stw1.png differ
diff --git a/assets/z_stw1b.png b/assets/z_stw1b.png
index dc41fc4..3ea484d 100644
Binary files a/assets/z_stw1b.png and b/assets/z_stw1b.png differ
diff --git a/assets/z_stw1bounce.png b/assets/z_stw1bounce.png
index 2975096..012e690 100644
Binary files a/assets/z_stw1bounce.png and b/assets/z_stw1bounce.png differ
diff --git a/assets/z_stw1fall1.png b/assets/z_stw1fall1.png
index 7a1886d..f2cb7df 100644
Binary files a/assets/z_stw1fall1.png and b/assets/z_stw1fall1.png differ
diff --git a/assets/z_stw1fall2.png b/assets/z_stw1fall2.png
index ea7bdfa..6a6b5b4 100644
Binary files a/assets/z_stw1fall2.png and b/assets/z_stw1fall2.png differ
diff --git a/assets/z_stw1fall3.png b/assets/z_stw1fall3.png
index 6685393..7779290 100644
Binary files a/assets/z_stw1fall3.png and b/assets/z_stw1fall3.png differ
diff --git a/assets/z_stw1rise.png b/assets/z_stw1rise.png
index d840440..d7f5a9f 100644
Binary files a/assets/z_stw1rise.png and b/assets/z_stw1rise.png differ
diff --git a/assets/z_stw1s.png b/assets/z_stw1s.png
index d159448..4f08eb2 100644
Binary files a/assets/z_stw1s.png and b/assets/z_stw1s.png differ
diff --git a/assets/z_stw1serve.png b/assets/z_stw1serve.png
index d04da9e..0ac8a8e 100644
Binary files a/assets/z_stw1serve.png and b/assets/z_stw1serve.png differ
diff --git a/assets/z_stw1toss.png b/assets/z_stw1toss.png
index 9e46057..0e09401 100644
Binary files a/assets/z_stw1toss.png and b/assets/z_stw1toss.png differ
diff --git a/assets/z_stw2.png b/assets/z_stw2.png
index b84f745..0526bdc 100644
Binary files a/assets/z_stw2.png and b/assets/z_stw2.png differ
diff --git a/assets/z_stw2b.png b/assets/z_stw2b.png
index 710ad2a..9c8b76d 100644
Binary files a/assets/z_stw2b.png and b/assets/z_stw2b.png differ
diff --git a/assets/z_stw2bounce.png b/assets/z_stw2bounce.png
index e58e156..a045c69 100644
Binary files a/assets/z_stw2bounce.png and b/assets/z_stw2bounce.png differ
diff --git a/assets/z_stw2fall1.png b/assets/z_stw2fall1.png
index 6f089ac..ceab2c9 100644
Binary files a/assets/z_stw2fall1.png and b/assets/z_stw2fall1.png differ
diff --git a/assets/z_stw2fall2.png b/assets/z_stw2fall2.png
index 972f11c..01c6fdc 100644
Binary files a/assets/z_stw2fall2.png and b/assets/z_stw2fall2.png differ
diff --git a/assets/z_stw2fall3.png b/assets/z_stw2fall3.png
index 5cc0251..9e6840a 100644
Binary files a/assets/z_stw2fall3.png and b/assets/z_stw2fall3.png differ
diff --git a/assets/z_stw2rise.png b/assets/z_stw2rise.png
index 21ddcf0..dc9071f 100644
Binary files a/assets/z_stw2rise.png and b/assets/z_stw2rise.png differ
diff --git a/assets/z_stw2s.png b/assets/z_stw2s.png
index 1d19637..04053fb 100644
Binary files a/assets/z_stw2s.png and b/assets/z_stw2s.png differ
diff --git a/assets/z_stw2serve.png b/assets/z_stw2serve.png
index 2bd1765..4015eff 100644
Binary files a/assets/z_stw2serve.png and b/assets/z_stw2serve.png differ
diff --git a/assets/z_stw2toss.png b/assets/z_stw2toss.png
index 800e85f..402a776 100644
Binary files a/assets/z_stw2toss.png and b/assets/z_stw2toss.png differ
diff --git a/index.html b/index.html
index 4a198bb..04e3451 100644
--- a/index.html
+++ b/index.html
@@ -864,6 +864,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
-
+