docs(email): record reply recovery evidence
CI and Deploy / test (pull_request) Successful in 4m22s
CI and Deploy / deploy (pull_request) Has been skipped

This commit is contained in:
cesnimda
2026-08-10 10:17:53 +02:00
parent d3d2b6783a
commit 114e3b66ba
6 changed files with 30 additions and 12 deletions
+10
View File
@@ -569,3 +569,13 @@
- **Consequences:** one draft maps to one send attempt identity until the user explicitly starts a new attempt after a confirmed failure. A sent/restored draft can only replay the existing ledger result. The additive migration defaults only during the same pre-exposure rollout; no draft UI existed before it.
- **User approval required:** No; this closes a local safety dependency before UI exposure and sends no email.
- **Reversible:** Downgrade `20260810080858_AddEmailDraftClientRequestId` before reverting `80b5532`. Do not deploy draft UI without an equivalent persisted idempotency identity.
## DEC-058 — Make draft persistence explicit and conflict-visible in the hub
- **Date:** 2026-08-10
- **Decision:** Keep reply editing local until the user chooses Save draft, then adopt the server draft/revision/client-request identity. Offer saved drafts for refresh recovery, require revisioned delete, and surface 409 conflicts without replacing local text.
- **Reason/evidence:** silent autosave introduces navigation/race semantics that are not yet proven. Explicit save is predictable, supports incomplete drafts and preserves the existing final send confirmation. Focused conflict/recovery tests, full frontend and build pass.
- **Alternatives considered:** browser storage; silent debounced autosave; last-write-wins; discard on refresh; auto-send after save. These expose private data, risk lost edits or weaken explicit send consent.
- **Consequences:** unsaved edits are intentionally not refresh-durable; saved replies are. A successful send attempts revisioned draft cleanup, while the persisted client ID keeps any surviving copy duplicate-safe. Compose-new-message and durable failed-attempt identity rotation remain separate increments.
- **User approval required:** No; this is approved local MAIL-001 UI work with mocked APIs and no email/provider action.
- **Reversible:** Revert `d3d2b67`; stored drafts remain available through the API/export but no UI consumes them.