Skip to content

Commit 3a42ced

Browse files
authored
docs: add backend deletion verification checklist (#439) (#489)
1 parent 6810132 commit 3a42ced

2 files changed

Lines changed: 157 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Issue 439 Backend Deletion Verification Handoff
2+
3+
Issue: #439, parent track #464
4+
Branch: `codexd/439-backend-deletion-verification`
5+
Status: externally blocked
6+
Date: 2026-05-10
7+
8+
## Summary
9+
10+
Repo-side review found no frontend code change that can honestly complete #439.
11+
The release client already routes account deletion by provider, and the remaining
12+
acceptance criteria require backend owner confirmation of real server-side
13+
deletion and retention behavior.
14+
15+
Use this document as the evidence form for the backend owner, privacy owner, and
16+
release QA owner. Treat all filled-in values as release evidence.
17+
18+
## Repo-Side Evidence Already Available
19+
20+
- Normal account deletion uses `DELETE /users/me/delete`.
21+
- Google account deletion uses `DELETE /oauth2/google/me`.
22+
- Apple account deletion uses `DELETE /oauth2/apple/me`.
23+
- Optional deletion feedback is sent in the deletion request body when present.
24+
- The app chooses the endpoint from `GET /users/me` `socialType`.
25+
- PR #378 added deletion endpoint routing and tests.
26+
- PR #471 verified in-app deletion UX and success/failure behavior.
27+
28+
## Backend Verification Prerequisites
29+
30+
- Backend owner or environment operator with access to the release backend data
31+
store.
32+
- Test accounts for every auth provider enabled in the release build:
33+
- Normal account
34+
- Google account
35+
- Apple account
36+
- Agreement on the environment to verify, for example staging release candidate
37+
or production-equivalent backend.
38+
- Privacy/product owner available to compare the verified behavior against the
39+
privacy policy draft.
40+
41+
## Provider Evidence
42+
43+
Fill one row per auth provider that is enabled in the release build. Do not add
44+
Kakao unless it is active in the release build.
45+
46+
| Provider | Endpoint Called | Environment | Test Account ID | Request Time | Response | Re-login Fails? | Owner | Evidence Link |
47+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
48+
| Normal | `DELETE /users/me/delete` | TBD | TBD | TBD | TBD | TBD | TBD | TBD |
49+
| Google | `DELETE /oauth2/google/me` | TBD | TBD | TBD | TBD | TBD | TBD | TBD |
50+
| Apple | `DELETE /oauth2/apple/me` | TBD | TBD | TBD | TBD | TBD | TBD | TBD |
51+
52+
## Data Deletion and Retention Matrix
53+
54+
Backend owner must replace `TBD` values with verified behavior. If a row is not
55+
part of the backend data model, mark it `N/A` and explain why.
56+
57+
| Data Category | Backend Location | Deleted, Anonymized, Retained, or N/A | Retention Duration | Retention Reason | Verification Method | Owner |
58+
| --- | --- | --- | --- | --- | --- | --- |
59+
| User profile fields such as email, name, and social identity | TBD | TBD | TBD | TBD | TBD | TBD |
60+
| Password or auth credentials for normal accounts | TBD | TBD | TBD | TBD | TBD | TBD |
61+
| OAuth provider linkage or revoke state for Google | TBD | TBD | TBD | TBD | TBD | TBD |
62+
| OAuth provider linkage or revoke state for Apple | TBD | TBD | TBD | TBD | TBD | TBD |
63+
| Access and refresh tokens | TBD | TBD | TBD | TBD | TBD | TBD |
64+
| Device records and FCM tokens | TBD | TBD | TBD | TBD | TBD | TBD |
65+
| Alarm settings and alarm status | TBD | TBD | TBD | TBD | TBD | TBD |
66+
| Default preparation settings | TBD | TBD | TBD | TBD | TBD | TBD |
67+
| Schedules | TBD | TBD | TBD | TBD | TBD | TBD |
68+
| Schedule preparation steps | TBD | TBD | TBD | TBD | TBD | TBD |
69+
| Spare time setting | TBD | TBD | TBD | TBD | TBD | TBD |
70+
| General feedback sent through `/feedback` | TBD | TBD | TBD | TBD | TBD | TBD |
71+
| Account deletion feedback sent in delete request body | TBD | TBD | TBD | TBD | TBD | TBD |
72+
| Operational logs, audit logs, crash logs, analytics, or monitoring events | TBD | TBD | TBD | TBD | TBD | TBD |
73+
| Backups or disaster recovery snapshots | TBD | TBD | TBD | TBD | TBD | TBD |
74+
75+
## Privacy Policy Cross-Check
76+
77+
Before closing #439, confirm the privacy policy draft states:
78+
79+
- Which account and app data is deleted after account deletion.
80+
- Which data is retained, why it is retained, and for how long.
81+
- Whether deletion feedback or support messages may be retained.
82+
- Whether logs or backups retain account-related data temporarily.
83+
- Which auth providers are supported in the release build.
84+
85+
## Exact Remaining Human Tasks
86+
87+
- Backend owner completes the provider evidence table.
88+
- Backend owner completes the data deletion and retention matrix.
89+
- Privacy/product owner reconciles the completed evidence with the privacy
90+
policy draft for #434.
91+
- Release owner updates #439 with the completed evidence and decides whether the
92+
backend behavior satisfies the acceptance criteria.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Issue 439 Backend Deletion Verification Plan
2+
3+
Issue: #439, parent track #464
4+
Status: externally blocked by backend owner or environment access
5+
Date: 2026-05-10
6+
7+
## Goal
8+
9+
Verify that backend account deletion removes or retains OnTime user data exactly
10+
as the release privacy policy will describe.
11+
12+
## Current Repo Facts
13+
14+
- The release track orders #439 immediately after #438.
15+
- #438 is closed by PR #471, which verified the in-app deletion UX.
16+
- PR #378 routes deletion requests through the release client endpoints and
17+
includes tests for optional feedback payloads and auth-provider routing.
18+
- The client deletion endpoints currently used by the app are:
19+
- Normal account: `DELETE /users/me/delete`
20+
- Google account: `DELETE /oauth2/google/me`
21+
- Apple account: `DELETE /oauth2/apple/me`
22+
- The app checks `GET /users/me` for `socialType` before choosing the deletion
23+
endpoint.
24+
25+
These facts verify client behavior only. They do not verify server-side data
26+
deletion, third-party token revocation, audit logging, backups, or retention.
27+
28+
## Decision-Complete Plan
29+
30+
1. Backend owner identifies every persisted data category tied to a user in the
31+
release backend, including user profile, auth identity, tokens, devices, FCM
32+
tokens, alarm settings, default preparations, schedules, schedule
33+
preparations, feedback, deletion feedback, logs, analytics, and backups.
34+
2. Backend owner runs deletion for each auth provider supported in the release
35+
build: normal, Google, and Apple. Do not test or document Kakao unless it is
36+
enabled in the release build.
37+
3. For each provider, backend owner records the deletion endpoint called,
38+
environment, account identifier, timestamp, response, and post-deletion
39+
database/API evidence.
40+
4. For each data category, backend owner records whether it is deleted,
41+
anonymized, retained, or not applicable, plus the retention reason and
42+
duration when retained.
43+
5. Product or privacy owner compares the verified backend behavior with the
44+
privacy policy draft before approving #434.
45+
6. If backend behavior and policy text diverge, fix the backend or update the
46+
policy before closing #439.
47+
7. Once verified, use the #439 evidence to unblock #441 Data safety and #458
48+
account deletion end-to-end QA.
49+
50+
## Acceptance Mapping
51+
52+
- Backend behavior verified for each release auth provider: requires backend
53+
owner evidence for normal, Google, and Apple accounts.
54+
- Associated user data deletion confirmed by data type: use the evidence matrix
55+
in `handoff/issue-439-backend-deletion-verification.md`.
56+
- Retained data and retention reason documented: use the retention columns in
57+
the handoff matrix.
58+
- Privacy policy text matches backend behavior: complete only after #434 has a
59+
policy draft and owner review against this evidence.
60+
61+
## Exit Criteria
62+
63+
#439 can be closed only after a backend owner or environment operator provides
64+
the completed evidence matrix and a product/privacy owner confirms that the
65+
privacy policy text matches the verified behavior.

0 commit comments

Comments
 (0)