play data-safety: PSL_SUPPORT_DATA_DELETION_BY_USER as Play's single choice (partialDeletion true | false | 'auto90'), drop the removed PSL_DATA_COLLECTION_USER_REQUEST_DELETE (deletionRequest deprecated, check notes it); ship Google's empty form (cli/data/play-data-safety-form.csv, exported 2026-10-12), take every Answer requirement from it and report pairs not in it (formPairIssues) in check, declarations and play data-safety. Pitfall 21
This commit is contained in:
parent
dfc28c15f8
commit
b5b8f2da9d
35 changed files with 1824 additions and 859 deletions
|
|
@ -83,13 +83,22 @@ CLI: `storebound` (or `bunx storebound` in a project that has it, or `bun <toolc
|
|||
- Conditional required rows: some questions become required by another answer, and Play refuses the import with
|
||||
"Response missing for <id>" (400). Account creation not `PSL_ACM_NONE` -> `PSL_ACCOUNT_DELETION_URL` (from
|
||||
`accounts.deletionUrl`) and `PSL_SUPPORT_DATA_DELETION_BY_USER` ("delete some or all data without deleting the
|
||||
account?", `dataSafety.partialDeletion: true | false`, ask the owner); that answer true -> `PSL_DATA_DELETION_URL`
|
||||
account?", a single choice: `dataSafety.partialDeletion: true | false | 'auto90'` = `DATA_DELETION_YES` /
|
||||
`DATA_DELETION_NO` / `DATA_DELETION_NO_AUTO_DELETED` "no, but deleted automatically within 90 days", ask the
|
||||
owner); that answer true -> `PSL_DATA_DELETION_URL`
|
||||
(`dataSafety.partialDeletionUrl`, default `accounts.deletionUrl`); `PSL_HAS_OUTSIDE_APP_ACCOUNTS` is refused next
|
||||
to sign-up methods. A selected data type needs collected / shared, ephemeral, required / optional and a purpose
|
||||
(a sharing purpose when shared). `storebound check` and `play data-safety --dry` name each missing row as
|
||||
`missing: <id> (<when>; set <config field>)` and the real run stops before sending. Rules:
|
||||
`DATA_SAFETY_RULES` / `typeRules` in `cli/lib/data-safety.ts`. A `dataSafety.extra` row with a generated
|
||||
question id replaces that question (use it when your Play Console export shows other ids).
|
||||
- Only the current form's ids: Play answers 400 ("Line N: Response ID missing", "Invalid response ID") for a row its
|
||||
form does not have, e.g. a choice question written as a bare TRUE / FALSE, or a removed question
|
||||
(`PSL_DATA_COLLECTION_USER_REQUEST_DELETE` is gone, so `dataSafety.deletionRequest` is no longer used). storebound
|
||||
checks every (Question ID, Response ID) pair, `dataSafety.extra` included, against Google's empty form in
|
||||
`cli/data/play-data-safety-form.csv` (exported 2026-10-12) and takes each row's Answer requirement from it. When
|
||||
Play changes the form: Play Console > App content > Data safety > Export to CSV with nothing answered, save it over
|
||||
that file, run the tests.
|
||||
- "Optional" data is only allowed when the user can really choose for that data; otherwise required.
|
||||
- Ads SDKs: read each network's own Play data safety guidance; adding a network can add data types.
|
||||
- Target audience under 13 pulls the app into the Families policy (certified ad networks, no ad id): only if true.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue