Skip to content

Keryx Play Data Safety, permissions, and FGS compliance

Approved: 25 August 2026

This document is the P1-08 compliance packet for Keryx for SafeCall on Google Play. It records Data Safety draft answers, permission and foreground-service posture, App content checklist items, and the reviewer-access plan.

It does not claim that a signed release AAB was inspected, that Play Console forms are filled or submitted, that perpetual dataSync FGS is already removed from source, or that a reviewer QR URL is live.

Purpose and non-goals

Purpose

Non-goals

  • Building or signing a release AAB — see android-signing.md (#109 closed at policy + wiring level; Play Console paste remains #125).
  • Filling or submitting Play Console forms (#125).
  • Removing FGS from source (post-#96 implementation).
  • Hosting a durable reviewer QR (#123).
  • Completing the full dependency/license audit (#102; inventory approved in dependency-ownership.md; machine SBOM/CI remain #112).

Approved decisions

  • Owner and approver: Thomas Minitsios, 25 August 2026.
  • Data Safety posture: derive answers from P1-05 and the privacy draft. Do not answer “no data collected” or “no sharing” without matching the on-device history, config, lock-screen exposure, and client-deployer ntfy/FCM roles.
  • Ads: no ads; no advertising ID use; no ads SDK.
  • Analytics / crash SDK: none at launch (P0-05).
  • Foreground service (launch target): no perpetual dataSync / boot FGS. Prefer a release AAB that does not declare FOREGROUND_SERVICE_DATA_SYNC or a dataSync service unless a short, clearly eligible residual use remains. FGS demonstration video is required only if a residual declared FGS type remains in the submitted AAB (P1-03).
  • App access: free administrator companion; account-free install; configuration via SafeCall-generated QR on the administrator’s own device; reviewer path via durable static QR + isolated test ntfy (#123 / P0-03).
  • Audience / rating: Business category; target age 18+ only; not designed for children or Families; expected IARC result Everyone; no health functionality; not a medical device (P0-02). Return to P0-02 if the questionnaire differs.
  • Privacy policy URL: {public_base}/keryx/privacy after deploy per public-web-pages.md (P2-04). Do not submit a dead link.

Current gap baseline

SurfaceCurrent evidencePacket target
App manifest permissionsCAMERA, INTERNET, WAKE_LOCK, FOREGROUND_SERVICE, FOREGROUND_SERVICE_DATA_SYNC, POST_NOTIFICATIONSKeep camera / notifications / network; remove or minimize FGS/dataSync for launch
Vendored ntfydataSync FGS + RECEIVE_BOOT_COMPLETED boot/package-replace restartAlign to P1-03 FCM poll_request + authenticated poll; no perpetual FGS
Delivery designP1-03 approved; code still has perpetual FGSImplementation then match Play forms to the tested AAB
Data SafetyRunbook forbids “no collection”; no approved answer sheetThis packet
Privacy policy URLPlanned path only; not liveP2-04 packet then deploy
Reviewer QRRequired for review; not hosted#123
SigningRelease still debug-signed#109

Evidence sources: keryx/android/app/src/main/AndroidManifest.xml, keryx/vendor/ntfy/android/src/main/AndroidManifest.xml, android-delivery-architecture.md, data-classification.md, legal/privacy.md, P0-02/P0-03 roadmap decisions.

Permission inventory (source today vs launch target)

Permission / componentPresent todayLaunch target
CAMERAYes (QR scan)Keep — SafeCall QR only
POST_NOTIFICATIONSYesKeep — administrator alerts
INTERNETYesKeep — HTTPS ntfy subscribe/poll and FCM wakes
WAKE_LOCKYes (plugin)Keep only if still required by residual wake/poll path; do not claim always-on
FOREGROUND_SERVICE / FOREGROUND_SERVICE_DATA_SYNCYesRemove unless a short residual eligible FGS remains after P1-03 implementation
dataSync NtfyForegroundServiceYesDeprecate / remove perpetual service
RECEIVE_BOOT_COMPLETED + boot restart of FGSYesDo not restart perpetual FGS; boot behavior must match launch design
FCM / Play servicesNot yet wired for launch designExpected after P1-03 implementation + #119

Do not declare permissions that the submitted AAB no longer needs. Re-inspect the merged manifest of the signed release AAB before console answers (#109/#125).

Data Safety draft answers

Draft Google Play Data Safety answers derived from data classification and privacy draft. Re-verify against the signed AAB and #102 inventory before submission. Do not pre-answer “no collection.”

TopicDraft answer
Does the app collect or share user data?Yes, disclose. Keryx processes provisioning config and alert history on device, and communicates with the client-deployed ntfy host (and FCM/upstream when configured). sourcectl does not operate a Keryx analytics backend.
Data types — app activity / messagesAlert title, body, tags, timestamps, topic metadata, and recovery JSON may be stored locally and shown in notifications. Bodies may include device names, MACs, or operational / location-like SafeCall content.
Data types — app info and performanceLocal pause flag, tombstones, subscription state. No third-party analytics or crash SDK.
Data types — device or other IDsNo advertising ID. FCM/device tokens (when implemented) register with the client ntfy host for wakes — not with a sourcectl analytics service. Identifiers inside alert bodies are SafeCall-generated content, not Keryx tracking IDs.
Collected forApp functionality (provisioning, delivery, history).
Shared withClient deployer of ntfy (and optional FCM/APNs upstream they configure) as transport processors. Not sold. Not used for advertising.
Tracking / advertisingNo. Not used for advertising or cross-app tracking. No ads SDK.
Encryption in transitYes — HTTPS (TLS) to the ntfy host (P1-02).
Data deletionAdministrator can delete local history and Reset App; token revoke is offboarding on the ntfy host (P1-05 / P1-02). Disclose honestly on the form.
Lock screenFull notification title and body may appear on a locked device — disclose consistently with the privacy draft.
ChildrenNot designed for children; target age 18+ only.
Security practicesFollow Play form prompts; align narrative with SharedPreferences launch storage and HTTPS transit (P1-05 / P1-02).

Final checkbox mapping must be filled in Play Console from this draft plus the tested release AAB (#109/#125).

App content checklist

Play App content areaApproved draft
Privacy policyURL {public_base}/keryx/privacy after deploy (P2-04); until live, do not submit
AdsNo ads
App accessFree companion; no paid unlock; QR configures connectivity from SafeCall; provide reviewer instructions + durable QR (#123); do not ask reviewers to configure ntfy/topics manually (P0-03)
Target audience18+ only; not for children / Families
Content rating (IARC)Complete questionnaire honestly; expected result Everyone; return to P0-02 if different
News / COVID / etc.Not applicable unless questionnaire requires explicit “no”
Health appsNo health functionality; not a medical device (P0-02)
Permissions declarationMatch merged manifest of the launch AAB; justify camera and notifications; do not justify perpetual dataSync after removal
Data safetyUse draft table above
Foreground serviceSee next section

Foreground-service declaration plan

  1. Preferred launch AAB: after P1-03 implementation, no perpetual dataSync FGS and no FOREGROUND_SERVICE_DATA_SYNC permission → no FGS declaration text and no demonstration video required for that type.
  2. If a residual short FGS remains in the submitted binary: declaration text and demo video must match the exact type, eligibility, and user-visible behavior; owned at submission under #125.
  3. Current source has no perpetual dataSync FGS. Re-inspect the signed AAB merged manifest before pasting Play FGS answers (#125).

Reviewer access plan

Play review must exercise the configured experience without client production data or manual ntfy setup.

RequirementOwner
Non-expiring static HTTPS page with SafeCall-style reviewer QR, friendly categories, and administrator instructions#123
Isolated HTTPS/authenticated test notification environment#123
Free-companion / QR-connectivity fact block (not an external purchase unlock)P0-03 narrative; listing copy #105; #123 packaging
Hosts and URLsControlled records only — do not invent in this repository

Until #123 is live, this packet records the plan only.

Evidence handoffs

EvidenceOwner
Remove/minimize perpetual FGS; wire FCM poll_requestLater implementation (post-#96)
Complete dependency / SDK inventory#102 packet: dependency-ownership.md; machine SBOM/CI #112
Production Android signing and release AAB#109android-signing.md
Live privacy URLpublic-web-pages.md (P2-04); HTTPS deploy
Durable reviewer QR + test ntfy#123
Play Console forms without unresolved warnings#125
Final safety / delivery-limitation claims#103 packet: safety-claims.md
Physical-device delivery matrix#117

Explicit non-claims

Closing #101 approves this packet. It does not:

  • claim a signed release AAB was inspected;
  • claim Play Console forms are filled or submitted;
  • claim perpetual FGS is already removed from the Android tree;
  • claim a reviewer QR URL is live;
  • claim an IARC content-rating certificate was obtained.

Review record

  • Status: approved as the P1-08 Play Data Safety compliance packet.
  • Date: 25 August 2026.
  • Approver: Thomas Minitsios under the P0-05 RACI.
  • Depends on: data-classification.md, legal/privacy.md, android-delivery-architecture.md, P0-02/P0-03 store facts.
  • Evidence sources: Android app and vendored ntfy manifests, P1-03/P1-05 approvals, publishing runbook Play checklist.