template compliance answers never reach a store: init writes unanswered (dataSafety, appPrivacy, reviewNotes, ageRating, accounts, reviewAccess), older configs are recognised by the template values; check / validate / scan block, play data-safety (also --dry), console plan / fill, apple review-details and appinfo refuse. onboard --declarations replaces them on a live app: name and copyright from the stores (a copyright with a private term is left out), the rows the code proves (scan proposal, sign-up methods from auth code and login SDKs), the rest as one owner question list. play data-safety --dry prints the answers that change (old -> new, account and deletion first) against the last uploaded CSV; pitfall 60; tests

This commit is contained in:
CRTkafa 2026-10-14 11:36:30 +08:00
parent 34c2fa22e5
commit 7219ded3e8
27 changed files with 659 additions and 19 deletions

View file

@ -700,3 +700,15 @@ that fails without the fix (see CONTRIBUTING.md).
- **Guard:** `cli/art.ts`, `cli/lib/art-pull.ts` (`decide`, `pulledChecksum`, `storeEmptySets`), the pulled-file rules
in `scanRenders` (`cli/shots/report.ts`) and `check`, `tests/art-pull.test.ts` (recorded ASC screenshot sets with
`templateUrl` and Play `images.list`, the layout, the upsert and `--force`).
## 60. `init` + `onboard` on live apps left the template compliance answers in the config
- **Do:** treat every answer `storebound init` wrote as unanswered. The game template declares approximate location,
app interactions, diagnostics and device id as shared for advertising and `PSL_ACM_NONE`; pushing that from a live
app is a false declaration. Templates list the areas in `unanswered`; configs from before it are recognised by the
template values. `check`, `validate` and `scan` block; `play data-safety` (also `--dry`), `console plan` / `fill`,
`apple review-details` and `apple appinfo` refuse. For a live app run `storebound onboard --declarations --write`:
name and copyright from the stores (a copyright with a private term from `STOREBOUND_PRIVATE_TERMS` is left out),
the template answers out, the rows the code proves in (scan proposal, sign-up methods from auth code), the rest as
one owner question list. Remove an area from `unanswered` only after the owner answered it.
- **Guard:** `cli/lib/template-answers.ts`, `cli/lib/onboard-declarations.ts`, the `template-answers` scan rule,
`tests/template-answers.test.ts` (init blocks, data-safety --dry refuses, onboard on auth code without an ad SDK).