Skip to main content

Deduction V2 — Status 2026-07-15

Delivery / Program Management — periodic status report. health: carries the delivery-health status; the doc-lifecycle status: 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 in hub-worker (the Sidekiq cron host — settlement/sweeper scheduling belongs to the host app, per the T5 runbook, not to hub_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) → sha 8584f122 (2026-07-15): dispatcher 0 1 * * * Asia/Jakarta, sweeper 0 2 * * * Asia/Jakarta, both on queue billing_settle_wa_holds; GLOSSARY + billing flow README updated.
  • 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 (currency is captured on the batch but SettleDaily does no FX; only matters when WABA currency ≠ pool currency); REV-3wa_balance_holds.customer_ref stores a customer identifier in plaintext (no Lockbox), unlike wa_conversation_log. REV-2 / REV-4 / REV-7 also still open.
  • Governance gate (RFC in-reviewapproved, 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_changes now [Backend, Frontend].
  • 🟠 P0 dependency (M1): moderator-be cannot detect a CID's Deduction-V2 state today — no wa_hold_settlement / deduction_v2 / v2_effective_date anywhere in the repo, and the shipped design dropped v2_effective_date. Boundary decided 2026-07-15: derive it from the first reconciliation_settlement settled row (ADR-0001, Option 1 — no schema change), adopted pending bifrost-tech-lead sign-off. M1 is now a read-only service, not a blocker.
  • 🟡 FE unstaffed. No FE implementor assigned for the modpanel work (implementors carries TBD (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.