fix: guard bounded lifecycle and claim recovery
Scope
Ref #3325. Guard bounded lifecycle disposal and claim recovery before refused steps. Outer batch/replay authorization, progress, takeover fields, and public command-name guidance with original arguments and session remain. Recovery gateways recheck claims.
Capture/provider disposal and unsafe recovery refuse. Ordinary reopen preserves resources. Under the approved IME policy, IME-only bounded close restores the keyboard and retires the session. No universal native deadline, zero-bind, or cross-daemon atomicity guarantee is claimed.
35 files, +2341/−157 = 2498 gross on merged main b08b5e7; head 87e8e21 unchanged. Screened evidence holds exact clean run-wOpmey, Sol/Sonnet reviews, negatives, range-diff, and native JSON. CI: 17 success, one skipped, one neutral.
Android bounded batch/replay IME close restored the keyboard; app-log close still refused, and reopen preserved its manifest. New bounded batches proved fresh iOS Settings open matched standalone device selection, no-app foreground selected the sole allowed booted iOS simulator with a 19-node snapshot, and stopped owned AVD boot by name returned its serial. Initial native foreground ambiguity cleared after rebooting only the disposable simulator and launching Settings alone. Earlier iOS/AVD runs were direct.
Same-session alternateFrom after direct close returned SESSION_NOT_FOUND; native failed-IME-restore has routed/unit evidence only. Owned devices and claims were released. #3325 awaits acceptance and merge.