docs(openspec): cancel alarm FGS slice, the alarm service type never existed
Apply-stage SDK verification (javap on android-34/35/36 platform jars plus api-versions.xml) proved FOREGROUND_SERVICE_TYPE_ALARM and the FOREGROUND_SERVICE_ALARM permission are fictional constants. The existing mediaPlayback|systemExempted declaration is the documented correct pattern for an alarm app holding exact-alarm permissions, so slice 1 ships no code and root cause B is withdrawn. Spec, design, and tasks amended with the evidence; volume-override and fade-dedup slices proceed unaffected.
This commit is contained in:
@@ -4,15 +4,15 @@
|
||||
|
||||
### Requirement: Manifest declares alarm-eligible foreground service
|
||||
|
||||
`PluriWaveAlarmService` in `AndroidManifest.xml` MUST use `foregroundServiceType="mediaPlayback|alarm"` and the app MUST declare `FOREGROUND_SERVICE_ALARM`, so the service is eligible to start on Android 14+ (API 34+) from a broadcast receiver.
|
||||
**CORRECTED (2026-07-11, apply-stage SDK verification)**: the originally specified `foregroundServiceType="mediaPlayback|alarm"` + `FOREGROUND_SERVICE_ALARM` permission are FICTIONAL — neither constant exists anywhere in the Android SDK (verified via `javap -constants` on android-34/35/36 platform jars and `api-versions.xml`; 13 real FGS types, no alarm variant). The existing declaration `foregroundServiceType="mediaPlayback|systemExempted"` is the documented correct pattern for an alarm-clock app holding exact-alarm permissions that starts a foreground service from an AlarmManager broadcast on API 34+. The prior `app-quality-and-native-alarms` deviation (T-S1-03/04) that kept `systemExempted` was right. No manifest or runtime change ships in this change; the requirement is re-scoped to the service-start behavior below.
|
||||
|
||||
#### Scenario: Manifest declares required FGS type and permission
|
||||
#### Scenario: Manifest keeps the verified-correct FGS declaration
|
||||
**Testability**: static/grep-verifiable
|
||||
|
||||
- GIVEN the built `AndroidManifest.xml`
|
||||
- WHEN the `PluriWaveAlarmService` `<service>` element is inspected
|
||||
- THEN `android:foregroundServiceType` MUST contain `alarm`
|
||||
- AND a `<uses-permission android:name="android.permission.FOREGROUND_SERVICE_ALARM"/>` MUST exist
|
||||
- THEN `android:foregroundServiceType` MUST be `mediaPlayback|systemExempted`
|
||||
- AND the runtime `startForeground` type constants in `PluriWaveAlarmService.kt` MUST match the manifest declaration
|
||||
|
||||
#### Scenario: Native service starts from broadcast context on Android 14+
|
||||
**Testability**: manual on-device QA (Android 14+; agent cannot install/verify)
|
||||
|
||||
Reference in New Issue
Block a user