[Decision][Epic 953][Stage I][chat-api] Preserve account deletion across Cloud migration - #383
Conversation
Review✅ Approved — no blocking issues. The change matches #380's scope and acceptance criteria. Local finalization still deletes the Notes below are non-blocking. 1. Rollout ordering vs. the interactive delete pathsThe same upstream calls are still live outside the worker:
Both map a non-200 to a 502 for the user. Leaving them is correct (#379 owns them), but if this ships ahead of #379, user-initiated deletes break while account deletion works. Worth stating the intended order explicitly in the rollout notes. 2. Records already parked by the pre-rollout workerThe acceptance criterion holds for new runs, but anything the old worker already pushed to The admin retry endpoint recovers them ( 3.
|
🧭 IronLoop Run · ReviewThis comment updates in place as the Run moves through its stages. 🟩 Final result · Completed
Automatic trigger · attempt 1 of 3 · completed in 45s IronLoop completed the review and posted it to GitHub. 🔗 Result |
There was a problem hiding this comment.
🔍 IronLoop review
🟢 No actionable findings
No actionable defects found. The change removes retired upstream cleanup calls while preserving transactional deletion of local conversation and file rows, and legacy progress data remains non-blocking for retries.
Validation
- ✅ Account-deletion flow inspection — Verified the worker no longer constructs Cloud/VPC deletion dependencies or invokes provider cleanup, while local account finalization still deletes conversations and files transactionally.
- ✅ Diff integrity — The complete change contains no whitespace errors.
Review details
- Run:
f854bb98-a09a-41ae-994f-aec09866abd5 - Workflow: Review
- Attempts: 1
02cc9ba to
90d2ff0
Compare
Stage I rollout clarificationCloud API's Conversation and File mutation endpoints are write-disabled in Stage I. This worker change is therefore a Stage I compatibility prerequisite, not final stateful-surface removal: account deletion must not retry those upstream deletes or fail because they return It preserves local account-deletion finalization and does not alter the temporary read/export views. Deploy it before or with the Stage I proxy boundary and Cloud API #943; final removal remains Stage III work. |
|
Update: the Stage I decision is now to disable self-service account deletion, not to preserve local finalization behind an archive/deferred choice. This Draft must be reworked to return |
|
Clarification: the Stage I decision is not to cancel accepted account-deletion jobs. New requests become |
90d2ff0 to
62c5d71
Compare
|
Reworked at |
62c5d71 to
9bf6ab0
Compare
Review: Stage I account-deletion cutoffNo blocking correctness or safety defects found. The handler is genuinely inert (no Non-blocking items worth addressing: 1. Coverage regression on still-live guards (highest-value item)
Suggest keeping the two cases at repository level rather than deleting them, e.g.: // insert non-terminal subscription, then:
let err = db.user_repository()
.delete_user_account(user.id, &[], &[])
.await
.expect_err("non-terminal subscription must block finalization");
assert!(matches!(err, AccountDeletionError::BlockingSubscriptions { .. }));2. No accepted path for new erasure requests during the window There is no admin equivalent — 3. Orphaned code left behind
None of these break anything; each is a trap for the next reader. A comment tying them to #380 would do if you want to keep them for Stage III. 4. Minor
✅ |
|
Final Stage I decision: normal |
Tracks #380
Resolved — no Chat API code change required
The existing Chat account-deletion contract remains unchanged in Stage I:
DELETE /v1/users/meremains the authenticated asynchronous account-deletion endpoint.DELETE /v1/conversations/{conversation_id}andDELETE /v1/files/{file_id}as the explicit Stage I compatibility exception, so the worker continues to use its existing API-key/workspace-scoped calls.Why this PR is closed
The earlier worker-change direction—removing Cloud cleanup calls while retaining local finalization—would have produced partial deletion and is intentionally not used. With the retained Cloud DELETE endpoints, no Chat worker or user-facing API change is required for the selected Stage I plan.
This closed PR is retained as the decision record. Account-deletion verification is tracked by #380 and must be included in the Cloud/Chat rollout.
Out of scope