You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Distinct subsystems — CI workflows, Android manifests/Gradle, consumption providers, Play Console policy.
Architectural decision — repo-variable-gated FGS enable (one switch, zero code change on approval).
Cross-feature coordination — CI + Android + Play Console + on-device validation.
Validation needed
@fdittgen-png — please confirm before I file the child issues:
You agree this is an Epic (not a single task).
The proposed task breakdown below is correct and complete.
File each child issue in the listed order.
Problem statement
Background recording is architecturally complete but dark in every shipped Android build: Play builds dropped the FGS_FORM_APPROVED define (#3376) because Play's upload API 403s until the Foreground services declaration is completed in Play Console — and that declaration was never findable because (1) it lives under Monitor and improve → App content → Foreground services (not under any "background" heading — Android's background execution IS a foreground service with a persistent notification), and (2) the task typically only appears after an artifact declaring the FGS permissions reaches a track, which our API-only pipeline could never achieve (the 403 catch-22). Without the FGS: background GPS batches to ~5 s, AutoRecordForegroundService reports unavailable, CDM/battery-exemption/motion-gating are all no-ops. F-Droid needs no form and could ship the FGS today; iOS already records in background (plist location + bluetooth-central modes, ungated).
F-Droid + sideload dev-APK builds get the FGS now (no Play review path).
A complete declaration package: manual internal-track upload recipe to surface the form, per-type declaration texts (location, connectedDevice), demo-video scripts. Only the Play Console submission itself remains a human step.
Triage
Classification: epic. (4 of 6 signals)
recording_location_settings.dartseams,companion_auto_record_coordinator.darttrigger,gps_only_trip_wal.dart, docs/declaration package.Validation needed
@fdittgen-png — please confirm before I file the child issues:
Problem statement
Background recording is architecturally complete but dark in every shipped Android build: Play builds dropped the
FGS_FORM_APPROVEDdefine (#3376) because Play's upload API 403s until the Foreground services declaration is completed in Play Console — and that declaration was never findable because (1) it lives under Monitor and improve → App content → Foreground services (not under any "background" heading — Android's background execution IS a foreground service with a persistent notification), and (2) the task typically only appears after an artifact declaring the FGS permissions reaches a track, which our API-only pipeline could never achieve (the 403 catch-22). Without the FGS: background GPS batches to ~5 s,AutoRecordForegroundServicereportsunavailable, CDM/battery-exemption/motion-gating are all no-ops. F-Droid needs no form and could ship the FGS today; iOS already records in background (plistlocation+bluetooth-centralmodes, ungated).Target design
vars.FGS_FORM_APPROVED) — after the declaration clears, flipping ONE GitHub variable enables everything (Dart flag + manifest overlay swap in lockstep, per the feat(android): un-throttle trip GPS + re-enable Auto service when the Play FGS form clears (restore points documented in-code) #3173 mechanised restore).location,connectedDevice), demo-video scripts. Only the Play Console submission itself remains a human step.ensureAssociatedproduction trigger (feat(android): Companion Device Manager association to auto-start the OBD2 connectedDevice FGS from background — Epic #3314 #3320 leftover) andGpsOnlyTripWal.flushNowon backgrounding.Proposed tasks
daily-beta.yml,daily-github-release.yml,dev-apk.ymlreadvars.FGS_FORM_APPROVED; pin test for the off-default.fdroid-publish.ymldefine (overlay exists); dev-APK sideload build for on-device validation.ensureAssociatedtrigger → feat(obd2): wire the CDM ensureAssociated production trigger at first manual pinned-dongle trip start (epic #3417 task 4) #3437 — first manual OBD2 trip start with a pinned dongle, feature-boundary-safe.GpsOnlyTripWal.flushNowon app backgrounding → fix(consumption): flush the GPS-only trip WAL on app backgrounding (epic #3417 task 5) #3438 — currently test-only.Out of scope
ACCESS_BACKGROUND_LOCATION(Manual store-console tasks for Sparkilo open testing + TestFlight #1498) — deliberately NOT needed (foreground-started location FGS works on while-in-use permission).