PASS S1 drain required (app was SIGSTOP/frozen) PASS S1 no drain needed (media keep-alive, never stopped) PASS S1 drain window > SDK 200ms throttle PASS S1b keep-alive app needs EVIOCGRAB isolation PASS S1b frozen app -> SIGCONT drain, not grab PASS S1b keep-alive: grab path (drain==0) PASS S1b frozen: drain path (grab==0) PASS S2 force status bar re-sync after unlock PASS S2b lock re-cover ms > SDK suppression window (200ms) PASS S2b lock re-cover ms = 300 (marker-window margin) PASS S1c wake, no sleep -> no lock PASS S1c timeout sleep (auto) -> lock PASS S1c manual power sleep (manual) -> lock (was missing) PASS S1c both -> lock PASS S4 system 0 (never) -> lock caps 30s PASS S4 system absent -> lock caps 30s PASS S4 system 30 -> 30 PASS S4 system 60 -> 30 (cap, shorter) PASS S4 system 10 -> 10 (respect shorter) PASS S4 system 1 -> 1 (respect shorter) PASS S4 idle>=off & screen on -> self sleep PASS S4 idle not yet PASS S4 screen off -> no re-sleep PASS S4 power edge -> wake to lock PASS S4 touch -> wake to lock PASS S4 no wake input -> stay asleep PASS S3 app died -> unified exit path (redraw home) PASS S3 app alive -> normal restore PASS S3 abort=0 (menu lock, no overlay pid) PASS S3 abort=0 (no overlay pid, zombie ignored) PASS S3 abort=0 (overlay pid, app alive) PASS S3 abort=1 (overlay pid + zombie -> abort lock) ALL PASS (32 passed, 0 failed)