diff --git a/docs/plans/Plan.md b/docs/plans/Plan.md index 0ea37a4..030ab29 100644 --- a/docs/plans/Plan.md +++ b/docs/plans/Plan.md @@ -1,5 +1,27 @@ # Plan +## Status: COMPLETE (all phases implemented + validated 2026-06-02) + +| Phase | What | Status | +|-------|------|--------| +| 1 | Hazmat/PHMSA handler + product (`hazmat-phmsa`, $149) | ✅ | +| 1.5 | Order-form bundle/mutual-exclusion enforcement (server-side) | ✅ | +| 2 | State-trucking intake form (slug-gated) + REQUIRED_FIELDS + admin-todo fields | ✅ | +| 2.5 | BOC-3 authority-aware (active/pending/revoked/none) + upsell-approve follow-ups | ✅ | +| 2.6 | Pipeline activation gating (`require_active` edges, FMCSA poll, waiting_on_activation) | ✅ | +| 3 | State emissions (non-CA) product `state-emissions` ($199) | ✅ | +| 4 | Order landing pages for all state/hazmat/emissions slugs (48 pages build) | ✅ | +| Adv | Prerequisite-aware DOT lookup + state recommendations | ✅ | +| 5 | Campaign builder deficiency segments + LP routing + --list-segments | ✅ | +| Val | Consistency checker (24/24) + campaign segment test (synthetic) | ✅ | + +**Remaining ops (not code):** create the 6 Listmonk source-campaign templates and +set their `CAMPAIGN_*_ID` envs (`CAMPAIGN_FOR_HIRE_ID`, `CAMPAIGN_IRP_IFTA_ID`, +`CAMPAIGN_INTRASTATE_ID`, `CAMPAIGN_WEIGHT_TAX_ID`, `CAMPAIGN_EMISSIONS_ID`, +`CAMPAIGN_HAZMAT_ID`). Until set, those segments are reported by +`--list-segments` but skipped by the scheduled run. Optional follow-up: a +client-side incompatibility UX hint in the order form (server already enforces). + ## Goal Make every trucker deficiency type we flag actually *fulfillable*: each flagged