diff --git a/context/multiplayer.md b/context/multiplayer.md index 94ad51e..85fc194 100644 --- a/context/multiplayer.md +++ b/context/multiplayer.md @@ -638,6 +638,25 @@ phase). Plan: `~/.claude/plans/partitioned-snuggling-piglet.md`. relay's console+game ports need to be reachable inbound — one forwarded port total; or a playit.gg-style tunnel in front of the relay, host-side only). +## Relaunch STORM + duplicate seats (issues #33/#34, night-2 2026-07-23) [T2 rig-verified; awaiting live] +The night-2 capture: one flapping pod → ROUND ABORT → rejoiners re-ACKed within a second → +eggs instantly RE-released → the flapper's next drop aborted the NEW round (3 aborts / 8 s); +meanwhile a client with a stale identity HELLO'd `hostID 7 not in roster` → bare drop → +relaunch ~1/s → overlapping generations exhausted the D3D adapter → the device-creation 20 s +deadline fired on EVERY machine ("could not connect direct 3d"). Claim-less manual restarts +also minted DUPLICATE seats (old seat reserved with the same callsign). Fixes (d3ede2e): +**console** — abort clears stale conn ACK flags + holds egg release 8 s (`ABORT_SETTLE_SECONDS`, +`_tick_settle` re-releases when quiet); HELLO-unknown → ROUTE_REJOIN reply (identity resync, +5 s/IP limit) instead of a drop; **static seats** — `seat_identity[tag]=(ip,callsign)`, a +claim-less request from the same identity reclaims its OWN seat (displacing a zombie beacon) — +the pod contract (fixed box = fixed seat; key on IP alone in pod mode); **client** — +storm damper in `BTFE_RelaunchSelfAndExit` (uptime<15 s → Sleep 5 s; `gBTBootTick` stamped in +WinMain; `gBTRelaunchUserInitiated` exempts menu clicks); **operator** local instances log +append-across-generations. Rig: mid-MISSION drop = no abort (correct); mid-LOAD kill = ONE +abort + hold + tag-reclaim + no cascade. OPEN: the host-7 derivation (a 4-seat egg cannot +yield 7 = template position of tag .6) — not reproducible synthetically; the first-breath + +append forensics will capture it live if it recurs. + ## Remaining (P6 phase 4 / Phase 7) Pod-LAN config: **real-IP path VALIDATED (2026-07-15)** — an egg with the machine's real LAN IP in `[pilots]` (not `127.0.0.1`) connected + replicated + moved end-to-end (`Connected to