Delivery Timeline
| Milestone | Effort (BE/FE/QA…) | Confidence | Progress | Target Date | Status |
|---|---|---|---|---|---|
| PRD finalized | — | — | — | 2026-06-23 | Done (v1.4; still draft, authorize-at-send refresh pending — OQ-1) |
| RFC kickoff | — | — | — | 2026-06-29 | Done (RFC in-review; task-breakdown 7 BE tasks) |
| Engine dev (T1–T7, hub_core) | BE 13 | medium | 13/13 md | 2026-07-15 | Done — merged (T1–T6 hub_core, T7 hub-worker) |
| Usage/download APIs (DED-S07/S08; hub_core + hub + moderator-be) | BE 8 · FE 2.5 · QA 2.5 | medium (low for M4) | 0/13 md | TBD | Not started — redesigned 2026-07-20 (ADR-0002); reports off the wa_reconciliation_batches rollup (M0), not the 200M-row log; FE (M4/M5) unstaffed |
| QA + pilot | QA 3 (engine) | medium | 0/3 md | TBD | In progress — Lane B human gate; QA evidence + pilot opt-in pending |
| Release / GA | — | — | — | TBD | Planned |
Dependencies & gates
- 🔴 Bifrost PM (governance) — refresh the source PRD to the authorize-at-send design;
PRD v1.4 Non-Goal #4 still forbids send-blocking, which this RFC does. Gates RFC
approved— not code (chunks T1–T7 are execution-ready). - 🟡 Bifrost eng (spec) — Meta currency-conversion source/rate when WABA
currency ≠ pool currency (OQ-3, T5); the Available-only balance-endpoint contract (REV-2, T3).
(OQ-2 resolved; enablement shipped as the company-scoped
Services::Billing::FeatureFlagwa_hold_settlementflag — as-built, superseding RFC Decision 6's un-shipped two-tier design.) - ✅ Meta
pricing_analyticsAPI — already integrated; no change needed. - ✅ V2-detection (M1) — redesigned 2026-07-20 (ADR-0002,
supersedes ADR-0001). No boundary date is
computed or stored — moderator-be replicates hub_core's own
Services::Billing::FeatureFlag(M1b) and hub_core exposes the same flag viabilling_info(M1a) for FE. No longer pending a sign-off gate. See../rfcs/deduction-v2.task-breakdown.md(Part 2, M0–M5). - 🟠 M0 edits shipped money-path code — adds
settled_charged_amounttowa_reconciliation_batches+ accumulates it inSettleDaily(T5/BIF-8744) so the reports read the pre-aggregated rollup, not the 200M-rowwa_conversation_logs. Small/additive but on the settlement core; needs its own QA (BIF-8959). - 🟡 FE implementors unstaffed for M4 (client
hubapp, 2 FE md — repo not checked out, unverified) and M5's FE slice (moderator-beERB/Stimulus, 0.5 FE md).
Internal critical path (engine, done): T1 → T2 → T4 → T5 → T7; T3 & T6 parallelize off T1.
Usage/download-API critical path (not started): M0 (rollup charged column) → M2 (hub_core GET)
→ M3 (hub_core download) → M5 (moderator-be wiring); M1a/M1b (V2-detection, both repos) alongside,
M4 (client hub FE) parallel off M2.
Shares the Modpanel↔Billing quota-management API surface with Downgrade Webhook (sibling RFCs
— coordination only).