Deduction V2 — Status 2026-07-15
Delivery / Program Management — periodic status report.
health:carries the delivery-health status; the doc-lifecyclestatus:stays in the linter enum (active).
Summary
The hub_core hold/settlement engine is code-complete — all 7 backend tasks (T1–T7) are Done
and merged (BE 13 / 13 md). Two things move the headline number the opposite direction from a pure
"81%": DED-S07/S08 (modpanel UI) were re-scoped back into the initiative on 2026-07-15, landing
in moderator-be (+10.5 md across a new modpanel breakdown),
so the initiative denominator grew from 16 → 26.5 md and initiative-level progress is 13 / 26.5
= 49% even though the engine slice is 100%. This entry supersedes the earlier same-day figures
(38% at sprint-resync pass 5 pre-T4–T7 merges; a transient 81% before the re-scope).
Highlights
- T1–T7 merged and code-corroborated. T1–T6 in
hub_core, T7 inhub-worker(the Sidekiq cron host — settlement/sweeper scheduling belongs to the host app, per the T5 runbook, not tohub_core):- BIF-8740 (T1, hold ledger schema) → PR #8049, sha
070b20de02(2026-07-13) - BIF-8741 (T2, create hold at send) → PR #8050, sha
cd2a6d15f0(2026-07-13) - BIF-8742 (T3, available-balance helper + gates + display) → PR #8051, sha
30daf7ac63(2026-07-13) - BIF-8743 (T4, webhook state transitions + dual-emit guard) → PR #8087, sha
43be469ab5(2026-07-15) - BIF-8744 (T5, EOD settlement against Meta) → PR #8088, sha
f50f35e6db(2026-07-15) - BIF-8745 (T6, stale-hold sweeper) → PR #8092, sha
a998b084f0(2026-07-15) - BIF-8746 (T7, cron scheduling + docs,
hub-worker) → sha8584f122(2026-07-15): dispatcher0 1 * * * Asia/Jakarta, sweeper0 2 * * * Asia/Jakarta, both on queuebilling_settle_wa_holds; GLOSSARY + billing flow README updated.
- BIF-8740 (T1, hold ledger schema) → PR #8049, sha
- Code↔design review (2026-07-15): the settlement engine matches the RFC design — FIFO allocation, unit-price + residual-to-completing-hold, margin/base split, lazy 7-day fetch window, 30-day shortfall (recorded, never deducted), idempotent re-runs, and per-org mutual-exclusion all verified against the merged code. No double-deduction hole found.
Lowlights & blockers
- 🟡 QA not yet independently confirmed. The task-breakdown allocates 3 QA-days (T2/T3/T4/T5/T6); Yoddi/Izzul evidence has not landed yet. QA (3 md) excluded from this progress figure — counted only once QA evidence lands. This is the gate before pilot.
- 🟡 Open eng risks not resolved in code (tracked in the RFC, not blocking merge):
OQ-3 — Meta-currency conversion is not implemented (
currencyis captured on the batch butSettleDailydoes no FX; only matters when WABA currency ≠ pool currency); REV-3 —wa_balance_holds.customer_refstores a customer identifier in plaintext (no Lockbox), unlikewa_conversation_log. REV-2 / REV-4 / REV-7 also stillopen. - Governance gate (RFC
in-review→approved, PRD refresh for the authorize-at-send reversal of Non-Goal #4) is unchanged — still open, still PM-owned, not a blocker on engineering. (The PRD and RFC are intentionally left as-is this pass.)
Risk & dependency changes
- 🔺 Scope grew — DED-S07/S08 re-scoped into
moderator-be(modpanel daily-aggregate history + MCC download gating). New modpanel breakdown (M1–M5, 10.5 md). Effort totals updated: BE 18.5 · FE 3 · QA 5 = 26.5 md (was 16). This is the first FE surface in the initiative —scope_changesnow[Backend, Frontend]. - 🟠 P0 dependency (M1): moderator-be cannot detect a CID's Deduction-V2 state today — no
wa_hold_settlement/deduction_v2/v2_effective_dateanywhere in the repo, and the shipped design droppedv2_effective_date. Boundary decided 2026-07-15: derive it from the firstreconciliation_settlementsettled row (ADR-0001, Option 1 — no schema change), adopted pendingbifrost-tech-leadsign-off. M1 is now a read-only service, not a blocker. - 🟡 FE unstaffed. No FE implementor assigned for the modpanel work (
implementorscarriesTBD (Frontend)); the 3 FE md have no owner yet.
Metrics
- Progress: 13 / 26.5 md (49%). Engine slice (hub_core) 13/13 = 100%; modpanel slice (moderator-be) 0/10.5; QA 0/5.
- Throughput this period: +13 md (all 7 hub_core BE tasks) since the 2026-07-01 snapshot.
- Forecast: p50/p85 still TBD — unchanged.