isCompromised
The default gate a caller acts on. Emulator alone does NOT compromise; root/jailbreak or a (non-tolerated) debugger do. A caller that wants to tolerate root reads rooted directly.
Fails closed. An un-run inspection (inspected == false) reports compromised. A security check that cannot run must not answer "safe": before this, an Android app that forgot installDeviceIntegrityContext(context) silently received rooted=false / emulator=false / debuggerAttached=false and would happily proceed on a rooted device. The misconfiguration was recorded only as a string inside signals, which nothing was obliged to read. Failing open is the worst property a root-detection library can have — it manufactures assurance it never earned.