fix(legal): declare what the app sends as collected, not shared (D84) #44
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/play-data-safety-collected"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Step 2 of M8's order (docs
android/PLAN.mdM8, decided by the org lead 2026-10-29): the data-safety audit and the generator.Why
Play counts data that leaves the device as collected, whoever runs the server it lands on.
PLAY_DATA_SAFETY.mdanswered "not collected" almost everywhere because we run no server the app talks to. That sentence is still true, and/privacykeeps it, but it was the wrong answer to the form's question.The audit
I read every request body, query and header in the app's
data/api/onedge(19c2f77, the branch the first Play bundle ships from). More leaves the phone than section 2 listed:RunicGatewayApp/x (Android y)on every requestThe server address and the inbox snapshot stay on the phone and are still "not collected". There are no SDKs, no crash reporter and no advertising ID. The dependency list and the manifest confirm that, and the release build forbids cleartext.
Everything collected is declared collected, not shared, encrypted in transit, required, as decided.
What changed
collection.mjs: new rows for the items above.PlayMappingnow takes a list oftypesplusrequiredandpurposes, checked againstPLAY_DATA_TYPESandPLAY_PURPOSES, the console's own vocabulary. The check caught a real error: the old file filed "Other user-generated content" under Messages, and on the form it is under App activity.playDataSafety.mjs: one answer per data type, folded across rows. It also lists every type that is not collected, and answers the form's security questions: encrypted in transit (yes), processed ephemerally (no), and the free text.requiredand purposes./privacyrenders the new rows, solegal.lastUpdatedmoves to 2026-10-29. PLAN.md gains D84, which amends D33.Not in this PR
Checked
check:terms,check:tokens,check:datasafety,astro check,npm test(57 pass),build,check:links,check:terms:builtandcheck:cspall pass.check:terms:builtcaught two uses of "shard" on/privacybefore the commit, and I replaced them with core's words. I didn't runcheck:facts,test:servedorcheck:a11y; CI runs them.🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY