Found during the PR #82 docked validation (2026-07-15).
Since 6adab75 (#37) a controller disconnect deliberately does NOT tear down the slot — the instance is preserved so the player can rejoin (watchdog reaps only on process/window death). Stage3 was partially updated: it PASSes "D3.7 P2 instance window persists after disconnect (owner design)" — but the same section still asserts:
D3.7 slot 2 inactive after disconnect (timed out, 15s) — state correctly kept active: true
D3.7 P1/P3/P4 reposition to 3-up after disconnect — no reflow happens by design; all four windows correctly stayed in their quad cells
Live behavior confirmed by operator: P2's game kept running, P1/P3/P4 stayed controllable and isolated, no slot re-shuffle; on re-plug, slot 2 reactivated in state and reclaimed the SAME slot (no #61 new-slot grab in this scenario) — only gameplay input couldn't reattach, the documented #62 static-bind limitation awaiting the #38 uinput proxy.
Fix: rewrite D3.7's asserts to the post-#37 contract (slot stays active, windows stay put) and drop the 3-up reflow expectations for the disconnect case.
Found during the PR #82 docked validation (2026-07-15).
Since 6adab75 (#37) a controller disconnect deliberately does NOT tear down the slot — the instance is preserved so the player can rejoin (watchdog reaps only on process/window death). Stage3 was partially updated: it PASSes "D3.7 P2 instance window persists after disconnect (owner design)" — but the same section still asserts:
D3.7 slot 2 inactive after disconnect(timed out, 15s) — state correctly keptactive: trueD3.7 P1/P3/P4 reposition to 3-upafter disconnect — no reflow happens by design; all four windows correctly stayed in their quad cellsLive behavior confirmed by operator: P2's game kept running, P1/P3/P4 stayed controllable and isolated, no slot re-shuffle; on re-plug, slot 2 reactivated in state and reclaimed the SAME slot (no #61 new-slot grab in this scenario) — only gameplay input couldn't reattach, the documented #62 static-bind limitation awaiting the #38 uinput proxy.
Fix: rewrite D3.7's asserts to the post-#37 contract (slot stays active, windows stay put) and drop the 3-up reflow expectations for the disconnect case.