Each story was reviewed (two M4 proto/auth stories via an adversarial opus pass) and merged to dev green. Open non-blocking follow-ups: #216, #219, #225.
Releases remain tag-only; this promotion advances main but does not cut a release.
Milestone-boundary promotion of `dev` → `main`.
Brings **M3 (JMAP)** and all of **M4 (Filters made live + complete)** to `main` (main was last promoted at the pre-M3 point).
## Included since the last main promotion
- **M3 — JMAP** (#189): real JMAP HTTP client wired into the Mail sync fetch→store path.
- **M4 — Filters made live + complete:**
- #190 — FilterEngine wired into live sync; fires exactly once per newly-arrived message.
- #191 — fixed the `account` condition-field bug; honest rejection of unsupported `header[...]` conditions.
- #192 — filter edit/export/import/logs moved onto the authenticated `Filters` gRPC service.
- #193 — `Filters.Triage` server-streaming RPC for retroactive bulk rescan.
- Docs: ROADMAP.md / rendered roadmap / HANDOFF marked M1–M4 complete, M5 next.
Each story was reviewed (two M4 proto/auth stories via an adversarial opus pass) and merged to `dev` green. Open non-blocking follow-ups: #216, #219, #225.
Releases remain tag-only; this promotion advances `main` but does not cut a release.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Milestone-boundary promotion of
dev→main.Brings M3 (JMAP) and all of M4 (Filters made live + complete) to
main(main was last promoted at the pre-M3 point).Included since the last main promotion
accountcondition-field bug; honest rejection of unsupportedheader[...]conditions.FiltersgRPC service.Filters.Triageserver-streaming RPC for retroactive bulk rescan.Each story was reviewed (two M4 proto/auth stories via an adversarial opus pass) and merged to
devgreen. Open non-blocking follow-ups: #216, #219, #225.Releases remain tag-only; this promotion advances
mainbut does not cut a release.