{ "title": "Alarm-driven enforcement service that survives reboot and Doze", "objective": "Give the enforcement decision a runtime: something that applies it at the moments it can change, survives a reboot, and is not silently deferred by Doze. Success is a service that runs, arms its own next run, fires exactly at scheduled times, and refuses to act when not provisioned rather than failing quietly.", "acceptance_criteria": [ "The service applies one pass then stops; it is not resident and does not poll", "Curfew boundaries fire exactly - window=0 in dumpsys alarm, not a multi-minute window", "A reboot re-arms the schedule even before the user unlocks", "The service reports and does nothing when neither device owner nor profile owner, rather than failing silently", "A failure inside a pass cannot stop the next run being scheduled", "packagesToShow is applied unconditionally each pass so a missed run self-repairs" ], "out_of_scope": [ "Device Owner provisioning - the service correctly no-ops without it", "The actual hide/show application: the decision layer and the DPM call both exist, wiring them together is next", "Location and workout providers - interfaces exist, platform plumbing does not", "DNS filtering, still parked" ], "verifier": "adb install + am start; adb logcat for the boot and service lines; dumpsys alarm to confirm window=0 and exactAllowReason; flutter analyze && flutter test" }