docs(email): record draft persistence evidence
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
Updated: 2026-08-10
|
||||
|
||||
Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-confirmed send API, editable reply UI, interrupted-send recovery, legacy SMTP retirement, send-attempt export coverage and shared application context are implemented and locally verified; remaining provider actions and full account-deletion lifecycle remain.
|
||||
Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-confirmed send API, editable reply UI, interrupted-send recovery, legacy SMTP retirement, send-attempt export coverage, shared application context and inert tenant-owned draft persistence are implemented and locally verified; remaining draft API/UI, provider actions and full account-deletion lifecycle remain.
|
||||
|
||||
## Revalidated current boundaries
|
||||
|
||||
@@ -69,9 +69,9 @@ Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-c
|
||||
- Focused delivery/provider/capability: 18/18; send ledger: 3/3; provider/correspondence controllers: 5/5; hub detail: 5/5.
|
||||
- Explicit-send controller/store/read focused tests: 12/12.
|
||||
- Confirmed composer focused tests: 7/7.
|
||||
- Full backend: 620/620; full frontend: 49/49 suites, 190/190 tests.
|
||||
- Current full backend: 625/625; full frontend: 50/50 suites, 194/194 tests.
|
||||
- Production build/TypeScript and `git diff --check`: pass.
|
||||
- Implementation commits: `6008b4a`, `536d403`, `a20775c`, `653f011`, `e9937ac`, `123fc55`, `449faeb`, `ee5ef7e`, `8fe3903`, `aff34cc`, `ff547df`, `1dabbeb`, `f9e641c`, `7f41cb2`.
|
||||
- Implementation commits: `6008b4a`, `536d403`, `a20775c`, `653f011`, `e9937ac`, `123fc55`, `449faeb`, `ee5ef7e`, `8fe3903`, `aff34cc`, `ff547df`, `1dabbeb`, `f9e641c`, `7f41cb2`, `14b396a`.
|
||||
|
||||
## Implemented editable composer increment
|
||||
|
||||
@@ -136,12 +136,20 @@ Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-c
|
||||
- The hub has no AI-assistance action today, so there is no AI email feature to mislabel as Free or Pro. Any future AI drafting must use the existing Pro/privacy admission boundary without changing basic email access.
|
||||
- Focused send tests pass 7/7 and full backend passes 624/624.
|
||||
|
||||
## Implemented inert durable-draft persistence
|
||||
|
||||
- Added a dedicated owner-filtered `EmailDraft` model for provider, job, recipient, subject, plain-text body, optional thread, timestamps and optimistic revision metadata. It does not reuse recruiter drafts, correspondence or browser storage.
|
||||
- The owning job has a cascade relationship; a real-SQLite two-owner test proves User A sees only User A's draft and deleting User A's job removes only that draft while preserving User B's data.
|
||||
- The additive migration has explicit SQLite and MariaDB types plus reversible down SQL. EF reports the model current; backend passes 625/625 and both provider scripts generate successfully.
|
||||
- No route, UI, provider call, token or content log was added. Export coverage and the complete SEC-009 deletion lifecycle remain prerequisites before private draft content becomes reachable.
|
||||
- A disposable full migration-chain SQLite rehearsal is blocked in the older `AddJobEntityAndProspectStages` migration because it references `LastReminderEmailSentAt` before any migration creates it. The failure occurs before `AddEmailDrafts` and remains tracked as JT-019 schema-chain debt.
|
||||
|
||||
## Remaining MAIL-001 work
|
||||
|
||||
- Extend shared provider-neutral thread navigation while preserving provider capability differences; application context and Gmail unlink are now shared.
|
||||
- Add read/unread, pin/read-later/archive/spam/trash only where the provider supports it; identity, disconnected/read-only/send-capable and provider-status failure states are now explicit.
|
||||
- Share thread detail and link/unlink actions between hub and job workspace.
|
||||
- Add durable draft/refresh recovery and compose-new-message behavior if confirmed by the remaining workflow inventory; replies are implemented.
|
||||
- Add a bounded owner/job-validating draft API, readable export coverage, refresh recovery and compose-new-message behavior on top of the inert persistence model; replies are implemented.
|
||||
- Complete account deletion coverage under SEC-009 before production rollout; job-level hard-delete cascade and export coverage are verified.
|
||||
- Preserve minimal audit metadata without sensitive body logging. Free non-AI access is verified; future AI assistance remains a Pro/privacy-gated addition, not a prerequisite for basic email.
|
||||
- Complete remaining link/unlink/dismiss/draft/send/failure/two-user browser/production provider gates. Shared application-context behavior is now covered locally. No real email may be sent during repository verification.
|
||||
|
||||
Reference in New Issue
Block a user