WEBMAIL.md's status header and its intro contradicted each other on the doc's most important question. Both are written to be read first:
Status: Phases 0–6 done + Phase 9 built & locally verified over HTTPS — full read+write client …
Read Current State first … There is a lot of scaffolding and design work, but none of it is live and none of it serves real mail.
The intro is the stale half, and it's checkable rather than a judgement call. Its claim comes from the Current State inventory, which is explicitly dated 2026-05-29 — before the backend was wired up — and two of that inventory's findings are now false:
webmail.zigis no longer "never imported anywhere":main.zigimportsapi/webmail_http.zigand starts it behindenable_webmail/enable_auth.- "No HTTP/HTTPS port is opened at all" no longer holds.
Its crosswind row is still accurate (packages/webmail/package.json carries only bun-plugin-stx), so the inventory is labelled superseded rather than rewritten — it earns its place explaining why the plan is shaped the way it is.
Changes
- Intro no longer asserts nothing is live. It points at Current State as history and at the per-phase markers as the current record.
- Current State gets a superseded banner naming what is and isn't stale, so nobody has to diff it against the code to find out.
- Status header narrowed. "Phases 0–6 done" over-claimed against the doc's own markers: 1, 2, 3, 5 and 6 carry a DONE marker, 0 and 4 don't. Phase 4's reading UI plainly exists in the shipped 3-pane client, so that's noted as a marker lagging the code rather than quietly ticked.
- v1 success criteria stay unticked, now with a line saying why: the phases covering them are done, but nothing has been verified end-to-end against a deployed instance. Those belong to the deploy.
Last updatedmoved to 2026-10-05; changelog entry added.
Docs only — no code changes.
Context: this came out of reviewing #2, which the doc is the status record for. #11 fixes the same class of staleness in CLAUDE.md.
🤖 Generated with Claude Code