Duckbill™ product completion
Owner-facing status for the MAIL product-completion program. This page is the live report: milestone percent complete, active sprint remaining work, and latest changes as work ships.
Counts come from Jira on as_of in docs/operations/product-status.json. Task story points in MAIL-222..MAIL-306 currently sum to 144. No secrets belong on this page.
The milestone, sprint, and latest-changes tables are rendered from that JSON so the numbers do not drift from the snapshot.
Snapshot as of 2026-09-26. 85 issues · 10 done (12%) · 6 in progress · 13/144 story points (9%).
Milestones
| Milestone | Fix version | Deliverable | Issues | Story points | Status |
|---|---|---|---|---|---|
| M1 | Duckbill M1 Accounts | Accounts page, unlimited Microsoft connect, session gate. Testable: signed-in /accounts lists mailboxes and can start another Graph connect. | 10/22 (45%) | 13/27 (48%) | In progress |
| M2 | Duckbill M2 Providers | Live Gmail and iCloud product connect. Testable: both Gmail and both iCloud identities listed on /accounts. | 0/22 (0%) | 0/39 (0%) | Not started |
| M3 | Duckbill M3 Inventory | Folder scan on connect and Mail folder tree. Testable: user can inspect actual and proposed folders. | 0/11 (0%) | 0/21 (0%) | Not started |
| M4 | Duckbill M4 Migration | Migration UI and dry-run targeting Microsoft. Testable: plan and counts visible; StartMigration denied. | 0/11 (0%) | 0/20 (0%) | Not started |
| M5 | Duckbill M5 Cleanup | Live classify, Review queue, one approved safe write-back, Read Later. Testable: triage from live inferences and one approved cleanup action. | 0/19 (0%) | 0/37 (0%) | Not started |
Active sprints
| Sprint | State | Deliverable | Remaining work | Issues |
|---|---|---|---|---|
| MAIL Sprint 09a Accounts | active | /accounts + Connect Microsoft | Code on production. Open: signed-in mailbox rows and a second Microsoft Graph connect (Tests MAIL-276/277/281/279). Stories/Tasks In Review. | 0/10 (0%) |
| MAIL Sprint 09b Session | complete | login redirect + status page | None. Anonymous /inbox→/login verified; status page live; Story/Task/Test sets Done (MAIL-230/244/262–265/278/280/303/305). | 10/10 (100%) |
Latest changes
- 2026-09-26 Sprint 09b closed: session gate + status page Done (10/10 issues, 13 SP on M1). MAIL-230, MAIL-244, MAIL-262, MAIL-263, MAIL-264, MAIL-265
- 2026-09-26 Accounts page and unlimited Microsoft connect live on production (/accounts). MAIL-270, MAIL-271, MAIL-259, MAIL-258, MAIL-231, MAIL-229
- 2026-09-26 Session gate and product-completion status page live on production. MAIL-262, MAIL-264, MAIL-265, MAIL-230, MAIL-244
- 2026-09-26 MAIL Sprint 09a Accounts and MAIL Sprint 09b Session started. MAIL-230, MAIL-231
- 2026-09-26 All MAIL-222..MAIL-306 issues assigned to fix versions M1–M5 (85/85). MAIL-263
- 2026-09-26 Fix versions Duckbill M1 Accounts through M5 Cleanup created (ids 10297–10301). MAIL-263
- 2026-09-26 Charter created the Duckbill product-completion plan MAIL-222..MAIL-306. MAIL-222
Jira fix versions (MAIL-263)
Planning already created the five versions. Do not recreate them. Every issue in MAIL-222..MAIL-306 is assigned (85/85).
| Id | Version | Deliverable |
|---|---|---|
| 10297 | Duckbill M1 Accounts | Accounts page, unlimited Microsoft connect, session gate |
| 10298 | Duckbill M2 Providers | Live Gmail and iCloud product connect |
| 10299 | Duckbill M3 Inventory | Folder scan on connect and Mail folder tree |
| 10300 | Duckbill M4 Migration | Migration UI and dry-run targeting Microsoft |
| 10301 | Duckbill M5 Cleanup | Live classify, Review queue, one approved cleanup action |
JQL recipes
project = MAIL AND fixVersion = "Duckbill M1 Accounts"
project = MAIL AND fixVersion = "Duckbill M2 Providers"
project = MAIL AND fixVersion = "Duckbill M3 Inventory"
project = MAIL AND fixVersion = "Duckbill M4 Migration"
project = MAIL AND fixVersion = "Duckbill M5 Cleanup"
project = MAIL AND key >= MAIL-222 AND key <= MAIL-306 AND fixVersion is EMPTY
sprint = "MAIL Sprint 09a Accounts"
sprint = "MAIL Sprint 09b Session"
The empty-fixVersion query must stay at zero for this plan.
Update rule
Update docs/operations/product-status.json in the same PR whenever a MAIL product-completion issue closes. Do not wait for a follow-up. Refresh as_of, totals, the matching milestone and sprint counts, and prepend a latest_changes row (newest first, keep at least five slots).
ENABLE_SEND and ENABLE_DELETE stay false.
