Bifrost — Program Roadmap
Delivery / Program Management — team-level rollup across the team's initiatives.
Portfolio
| Initiative | Target quarter | Health | DRI | Implementors | QA | Timeline |
|---|---|---|---|---|---|---|
| Deduction V2 | 2026-Q3 | backlog | addo.hernando@mekari.com | Hafriz | Yoddi, Izzul | timeline |
| Downgrade Webhook | 2026-Q3 | — | addo.hernando@mekari.com | Madani | Yoddi, Izzul | timeline |
| Lite Seats | 2026-Q3 | — | pm-group.qontak@mekari.com | Satya, Syafrizal M. | Yoddi, Izzul | timeline |
| Self-Subs — New Subscription, Renewal & Upgrade | 2026-Q3 | at-risk | addo.hernando@mekari.com | Grehasta, Syafrizal M. | Yoddi, Izzul | timeline |
| Billing Expired Handling | 2026-Q3 | — | addo.hernando@mekari.com | Hafriz | Yoddi, Izzul | timeline |
| Postpaid Usage Scheduler | 2026-Q3 | — | pm-group.qontak@mekari.com | Hafriz | Yoddi, Izzul | timeline |
| Qontak One Team Migration | 2026-Q3 | — | pm-group.qontak@mekari.com | Grehasta, Syafrizal M. | Yoddi, Izzul | timeline |
| Meta x Modpanel Call Usage Comparison | 2026-Q3 | — | addo.hernando@mekari.com | Grehasta | Yoddi, Izzul | timeline |
| Qontak Launchpad Audit Logs | 2026-Q3 | — | vinsensius.widhismara@mekari.com | Satya | Yoddi, Izzul | timeline |
| Quota Management — User Quota Integration | 2026-Q3 | — | addo.hernando@mekari.com | Madani | Yoddi, Izzul | timeline |
| Downgrade User | 2026-Q3 | — | addo.hernando@mekari.com | Satya | Yoddi, Izzul | timeline |
| Self Top-up Improvement | 2026-Q3 | — | addo.hernando@mekari.com | Hafriz, Madani, Syafrizal M. | Yoddi, Izzul | timeline |
| Integrate Sales Invoice with Jurnal | 2026-Q3 | — | addo.hernando@mekari.com | Hafriz, Syafrizal M. | Yoddi, Izzul | timeline |
| One CID Multiple WABA | 2026-Q3 | — | addo.hernando@mekari.com | Grehasta, Syafrizal M. | Yoddi, Izzul | timeline |
| Centralized SSO Token (realizes the SSO-token proposal) | 2026-Q3 | at-risk | syafrizal.abdillah@mekari.com | Satya, Syafrizal M. | Yoddi, Izzul | timeline |
Priority
| Priority | Initiative | Depends on | Note |
|---|---|---|---|
| P1 | Deduction V2 | — | Meta max price |
| P2 | Self Top-up Improvement | — | [QA] as-built ~90% (Epic BIF-7797, In Progress); Commit — only E2E BIF-8382 left |
| P3 | Qontak One Team Migration | — | RFC approved (R3 PROCEED); 15.5 md sized incl. Task 5; Chat/CRM trigger contract signed 2026-07-01 (OQ-1/OQ-9 closed) — Commit-ready |
| P4 | Integrate Sales Invoice with Jurnal | — | [QA] — decrease support ticket; FE resequenced 2026-07-01 ahead of Centralized SSO Token (see Capacity summary) |
| P5 | Self-Subs — New Subscription, Renewal & Upgrade | — | No downgrade in this phase |
| P6 | Centralized SSO Token | — | centralized web session via Mekari Session SDK (SSO ops docs: ../sso); FE now serial-last behind Qontak One Team + Sales Invoice + Jurnal (resequenced 2026-07-01) — Q3 E2E fit at risk |
| P7 | Lite Seats | — | [internal] piloting |
| P8 | Downgrade Webhook | — | Pre-req of downgrade user |
| P9 | Quota Management — User Quota Integration | — | Pre-req of downgrade user |
| P10 | Downgrade User | Downgrade Webhook, Quota Management | Downgrade user logic |
| P11 | One CID Multiple WABA | — | [collab test] — sized 2026-07-01 (25.5 md); RFC still draft but reviewed at 7.0/10 (BE PROCEED / FE HOLD on Detail 2.F); Syafrizal M. (FE) still over capacity, no open slot; QA reassigned to Izzul 2026-07-01, Yoddi back under |
| P12 | Meta x Modpanel Call Usage Comparison | — | PM-confirmed rank (2026-07-01) |
| P13 | Billing Expired Handling | — | PM-confirmed rank (2026-07-01) |
| P14 | Qontak Launchpad Audit Logs | — | PM-confirmed rank (2026-07-01) |
| P15 | Postpaid Usage Scheduler | — | PM-confirmed rank (2026-07-01) |
Portfolio progress & forecast
| Initiative | % done | Effort (total man-days) | p85 forecast | Confidence |
|---|---|---|---|---|
| Centralized SSO Token | 0% | 58.5 (FE 37 · BE 8 · QA 13.5) | — | low |
| Lite Seats | 0% | 22.5 (FE 4 · BE 14 · QA 4.5) | — | medium |
| Self Top-up | 90% | 22 (FE 12.5 · BE 5 · QA 4.5) | as-built — ~2 md left (E2E BIF-8382 only) | high |
| Self-Subs | 0% | 17.5 (FE 7.5 · BE 6 · QA 4) | — | medium |
| Deduction V2 | 0% | 16 (BE 13 · QA 3; FE 0) | — | medium |
| Meta x Modpanel Call Usage | 0% | 15.5 (BE 11.5 · QA 4.0; FE 0) | — | medium |
| Qontak Launchpad Audit Logs | 0% | 10 (FE 3.5 · BE 5 · QA 1.5) | — | medium |
| Downgrade Webhook | 0% | 9 (BE 7 · QA 2; FE 0) | — | high |
| Qontak One Team Migration | 0% | 15.5 (BE 10.5 · FE 1.5 · QA 3.5) | — | medium |
| Postpaid Usage Scheduler | 0% | 21 (FE 4 · BE 12.5 · QA 4.5) | — | medium |
| Billing Expired Handling | 0% | 17.5 (FE 5 · BE 8 · QA 4.5; Mobile TBD) | — | low |
| Integrate Sales Invoice with Jurnal | 0% | 6.5 (FE 2 · BE 2.5 · QA 2) | — | medium |
| One CID Multiple WABA | 0% | 25.5 (FE 7.0 · BE 12.5 · QA 6.0) | — | medium |
| all other bifrost initiatives | 0% | — | — | — |
Effort for Centralized SSO Token, Lite Seats, Self Top-up, Self-Subs, Deduction V2,
Qontak Launchpad Audit Logs, Meta x Modpanel Call Usage, Downgrade Webhook, Qontak One
Team Migration, Postpaid Usage Scheduler, Billing Expired Handling, Integrate Sales
Invoice with Jurnal and One CID Multiple WABA is captured from their RFC/PRD task-breakdowns
(as_of 2026-06-29/2026-06-30/2026-07-01);
every other initiative's effort_* stays TBD until its DRI confirms the per-discipline man-days.
One CID Multiple WABA is FE 7.0 · BE 12.5 · QA 6.0 = 25.5 md (medium confidence) from its
2026-07-01 task-breakdown (vertical, 11 tasks) — RFC status is still draft but it has been
reviewed (R1, 7.0/10): Backend half PROCEED; Frontend half HOLD, gated on the single FE-owner task
Detail 2.F: component contracts/frames/UI states. Lands on Grehasta (BE) + Syafrizal M. (FE); QA
reassigned 2026-07-01 to Izzul (was pushing Yoddi over capacity). Syafrizal M. (FE) remains
over capacity — see Capacity summary below; QA is resolved, FE is now this initiative's binding
constraint alongside its still-draft RFC status.
Postpaid Usage Scheduler is FE 4 · BE 12.5 · QA 4.5 = 21 md (medium confidence) from its 2026-07-01
task-breakdown (vertical, 7 tasks T1-T7) — the blocked T7 async ZIP worker is already included in the
total per that breakdown's own scoping. Lands on Hafriz (BE); FE is unstaffed. Billing Expired
Handling is FE 5 · BE 8 · QA 4.5 = 17.5 md (low confidence) — the BE 8 (medium confidence) is this
RFC's own scope (moderator-be + qontak-launchpad + hub_core); the FE 5 is a low-confidence
estimated stub for a separate, not-yet-authored FE RFC, and Mobile (in scope_changes) has no
estimate yet so it is excluded from the 17.5 total — expect it to grow once Mobile is sized. Lands on
Hafriz (BE); FE and Mobile are unstaffed. Integrate Sales Invoice with Jurnal is FE 2 · BE 2.5 ·
QA 2 = 6.5 md (medium confidence) from its 2026-07-01 task-breakdown — backend is agent-execution-ready
(reuses organization_packages.extras, no new endpoint); the FE half is a documented consumer contract
pending a hub-chat RFC + design. Lands on Hafriz (BE) + Syafrizal M. (FE, staffed 2026-07-01) — his
FE 2 md sits on an already-tight queue; resequenced 2026-07-01 (EM decision) to run ahead of Centralized
SSO Token, immediately after Qontak One Team's FE — see Capacity summary below for the consequence on
SSO Token's schedule.
Downgrade Webhook is BE-only, BE 7 · QA 2 = 9 md
(high confidence) from its 2026-06-30 task-breakdown — the Bifrost-owned qontak-billing scope only; the
chat/crm inbound-webhook endpoints, content-team email template and the email consumer are cross-squad external
contracts (not Bifrost man-days) and remain the real gate, not effort. Lands on Madani (BE, ample headroom).
Qontak One Team Migration is BE 10.5 · FE 1.5 · QA 3.5 = 15.5 md (medium confidence) from its 2026-07-01
task-breakdown — now the full actionable total: Task 5 (Chat/CRM trigger + TEAM_MIGRATED contract, BE 1.5 +
QA 0.5) is unblocked as of 2026-07-01, both Chat and CRM having signed off the trigger/event contract
(OQ-1/OQ-9 closed, REV-1 resolved at RFC R3 PROCEED). Only Task 6 (team-URL redirect) is excluded — out of repo
(legacy CRM app). Lands on Grehasta (BE) + Syafrizal M. (FE). Self Top-up is an as-built reconciliation, now Committed (Epic BIF-7797,
not BIF-5840): its 22 md is ~90% spent as of 2026-07-01 — Phase 1 UI + Phase 2 API are shipped across 5 repos, so its
FE 12.5 / BE 5 are not Q3-forward load; all 10 Stories resolved Done in Jira the same day, and the
BIF-7797 Epic moved To Do → In Progress (deprio lifted on the board). ~2 md remain — only the BIF-8382
E2E, still In Testing, owned by Yoddi/Izzul, well inside the runway to 2026-08-31. Meta x Modpanel is backend-only (BE 11.5 · QA 4.0) — its
scope_changes Data/Infra surfaces are delivered as backend code, so they carry no separate man-days. Centralized SSO Token's 58.5 is the bifrost FE-side effort across
4 repos (low confidence) and excludes the upstream @mekari/sdk package/CDN + company-sync
endpoint owned by SSO/Account (BE). p85 forecast still requires available-days/capacity, which
remain TBD.
QA Lanes
| Initiative | Lane | Basis | As of |
|---|---|---|---|
| Deduction V2 | B | money-critical: real-time balance hold, deduction & settlement | 2026-06-26 |
| Downgrade Webhook | B | money-critical: downgrade → billing & quota recalculation | 2026-06-26 |
| Lite Seats | B | money-critical: tiered quota deduction/refund; security: role & permission model | 2026-06-26 |
| Self-Subs | B | money-critical: new subscription, renewal & upgrade with payment/invoicing | 2026-06-26 |
| Billing Expired Handling | B | money-critical: billing-expiry & subscription state; Mobile in scope (out-of-reach) | 2026-06-26 |
| Postpaid Usage Scheduler | B | money-critical: scheduled postpaid usage drives the billing charge | 2026-06-26 |
| Qontak One Team Migration | B | security/isolation: team-assignment/access migration; one-time migration (out-of-reach) | 2026-06-26 |
| Meta x Modpanel Call Usage | B | money-critical: billing reconciliation vs Meta — silent failure = revenue loss/overcharge | 2026-06-26 |
| Qontak Launchpad Audit Logs | B | security/isolation: audit trail of permission changes, PII, permission-gated | 2026-06-26 |
| Quota Management — User Quota Integration | B | money-critical: quota check/deduction/refund vs central service | 2026-06-26 |
| Downgrade User | B | money-critical: quota-deficit role restriction/restoration after downgrade | 2026-06-29 |
| Self Top-up | B | money-critical: payment flows & balance top-up with financial impact | 2026-06-29 |
| One CID Multiple WABA | B | money-critical: shared-pool balance deduction, WABI reset & postpaid limits across multiple WABA IDs | 2026-06-29 |
| Integrate Sales Invoice with Jurnal | B | billing-document: incorrect document buttons or broken Jurnal SI URLs on a payment flow damage client trust and create Finance support burden | 2026-06-29 |
| Centralized SSO Token | B | security/isolation-sensitive: centralized auth/session + cross-company sync across products | 2026-06-29 |
Lane A: 0 of 15 initiatives (target 20–50% in Lane A). Every Bifrost initiative is money-critical or isolation-sensitive, and none has E2E test specs yet — so the Lane-A entry bar (100% E2E, spec-mapped) is unmet across the board. Lane A becomes reachable only once tests/** specs land and a non-core surface clears the entry bar.
Team policy: every Bifrost initiative is Lane B because it touches revenue-sensitive pricing, deductions, quota, subscriptions or billing where a silent failure hits revenue. Targeted automation is still added for specific testcases (e.g. CRUD in user management, permission validation, UI changes).
Capacity summary
See capacity.md for the full per-implementor table.
- Available-days now follow the CDP 2026-Q3 basis (
65eng-days = 13 man-weeks for the 13-week quarter, focus0.8→ 52 effective). QA defaults to Yoddi (65); Izzul is cross-team backup at 15. Loads are computable for fourteen of the fifteen estimated initiatives; only Satya's row (Downgrade User stillTBD) remains a lower bound. - Committed-days / loads so far: Syafrizal M. 59 FE → over (1.13, 7 days over); Satya 27 BE → under (≥0.52); Hafriz 36 BE (deduction-v2 13 + sales-invoice-jurnal 2.5 + billing-expired-handling 8 + postpaid-usage-scheduler 12.5; self-topup BE 5 as-built/spent excluded) → under (0.69, fully sized); Grehasta 40.5 BE (self-subs 6 + meta-modpanel 11.5 + qontak-one-team 10.5 + one-cid 12.5) → under (0.78, fully sized — no more
TBDon his book); Yoddi 57 QA → over (1.10, 5 days over); Madani 16.5 BE (downgrade-webhook 7 + quota-management 9.5) → under (0.32, fully sized). Only Satya's Downgrade User allocation staysTBD. - 🔴 Syafrizal M. is now OVER capacity (1.13, 7 days over) — no longer "at the line," now confirmed over. One CID Multiple WABA's FE was sized at 7.0 md 2026-07-01, landing on top of his already-exactly-1.00 queue (centralized-sso-token 37 + self-subs 7.5 + lite-seats 4 + qontak-one-team 1.5 + sales-invoice-jurnal 2). Known forward FE is now 59 ÷ 52 effective = 1.13 (deduction-v2 carries no FE). Queue resequenced 2026-07-01 (EM decision): qontak-one-team FE (1.5) and sales-invoice-jurnal FE (2) slot ahead of centralized-sso-token — serial order Self-Subs → Lite → Qontak One Team → Sales Invoice + Jurnal → Centralized SSO Token → One CID (no slot). This delivers qontak-one-team's FE without waiting on SSO and resolves sales-invoice-jurnal's queue blocker, but pushes centralized-sso-token's FE start back ~3.5 md: its projected finish moves from ~W9.7 to ~W10.6, past the ~W10.3 finish-by its Lane-B 13.5-md E2E gate needs — see
centralized-sso-token/delivery/timeline.md— and One CID's FE 7.0 md now has no queue slot at all, overflowing into Q4 outright absent a capacity change. Decision needed, now unavoidable — and Syafrizal M. stays the FE owner on One CID: add a second FE engineer, or move other (lower-priority) work off him. - ✅ Yoddi's QA overcommit resolved 2026-07-01 — Izzul takes One CID's QA instead. One CID's QA (6.0 md) would have landed on top of an already-tight ≥0.98 (51/52), pushing Yoddi to 1.10 — over. EM decision same day: Izzul (backup QA) is staffed onto One CID's 6.0 md QA, so Yoddi stays at 51 ÷ 52 effective = 0.98 — under (no spare headroom) and Izzul sits at 6 ÷ 12 effective = 0.50 — under.
- 🟡
qontak-launchpad-audit-logscarries FE 3.5 with no FE implementor (staffed Satya/BE only) — its FE owner isTBDand has no home at all against Syafrizal M.'s over (1.13) load. - 🔴 BE (Satya/Hafriz/Grehasta/Madani) still has real headroom. FE is now the sole binding constraint — Syafrizal M. is over capacity; QA (Yoddi/Izzul) is resolved back to under.
Cross-initiative dependencies
Bifrost-internal edges are sparse — across all 26Q3 RFCs the only dependency between sibling Bifrost initiatives is the downgrade chain:
- Downgrade User (P10) depends on Downgrade Webhook (P8) and Quota Management
(P9) — both are pre-reqs of the downgrade-user logic (mirrors the Priority table's
Depends on). - Deduction V2 and Downgrade Webhook share the Modpanel↔Billing quota-management API surface (sibling RFCs) — a coordination point, not a blocking dependency.
Every other initiative's hard blockers point outward at other squads or external Mekari platform contracts, not at sibling Bifrost initiatives — tracked in the next section.
External & cross-squad dependencies
The dominant delivery risk for 26Q3: most initiatives are gated by artifacts owned outside Bifrost. Sourced from each initiative's RFC(s) as of 2026-06-30; none of these appear in the locked seven-column Portfolio table above. Status legend: 🔴 blocking · 🟡 needs confirmation · ✅ resolved.
| Initiative | Blocking dependency | Owner (squad / vendor) | Status |
|---|---|---|---|
| Centralized SSO Token | @mekari/sdk Session SDK package, Session Manager service (/sm/*), current_company endpoint, canonical iframe path, session.refresh() throttle, CSP frame-ancestors whitelist | Account & Launchpad (+ infosec) | 🔴 blocks all FE execution — no RFC is execution-ready |
| Self-Subs ⏰ | Self-subscription API + Invoicable list API contracts; Mekari Pay redirect-param convention; CID Billing Settings page path | Mekari Billing, Mekari Pay, moderator-be | 🔴 gates Phase-2 ship |
| Downgrade Webhook | triggers_downgrade billing-component column + 6-code backfill; Chat inbound-webhook contract; CRM inbound-webhook + pigeon registration; client email template content | billing-team, chat-squad, crm-squad, content-team | 🔴 needs contracts |
| Lite Seats | Lite component code strings; lite_seats_enabled flag delivery (Kafka / company_features); Lite-config Figma frame | Mekari Billing / ModPanel, Platform, Design | 🟡 needs confirmation |
| Deduction V2 | PRD refresh to authorize-at-send (source PRD Non-Goal #4 forbids send-blocking) — internal governance gate before RFC approved; code (T1–T7) is execution-ready | Bifrost PM (internal) | 🔴 blocks RFC approval |
| Qontak Launchpad Audit Logs | infosec review / sign-off (RFC still at IDEA) | infosec | 🟡 approval gate |
| Qontak One Team Migration | Chat/CRM trigger endpoint (path/auth/payload) + TEAM_MIGRATED event/topic sign-off (RFC OQ-1/OQ-9) | chat-squad, crm-squad | ✅ resolved 2026-07-01 — both squads signed off; Task 5 unblocked, full end-to-end migration buildable |
⏰ Self-Subs carries the hard end-of-August commitment (commitment_date: 2026-08-31)
yet is the initiative most exposed to external contracts it does not own — the
deadline-vs-contract risk is recorded in
its 2026-06-30 status report. (The Deduction V2
row is an internal PM-governance gate, listed here for completeness because it blocks RFC
approval rather than being internal task-sequencing.)
Program-level risks
- 🔴 FE capacity is now confirmed OVER — Syafrizal M. at 1.13, a 7-day shortfall, no longer speculative. Revised 2026-07-01: after self-topup was reconciled as as-built (FE 12.5 already spent, not Q3-forward) and qontak-one-team's FE (1.5 md) and sales-invoice-jurnal's FE (2 md) were staffed onto him, he sat exactly at 1.00 (zero headroom). Later the same day, One CID Multiple WABA's FE was sized at 7.0 md off its 2026-07-01 task-breakdown — exactly the overflow the docs had already predicted. Known forward FE is now 59 vs 52 effective = 1.13. Queue resequencing (2026-07-01, EM decision) — qontak-one-team FE (1.5) and sales-invoice-jurnal FE (2) ahead of centralized-sso-token — remains in place: Self-Subs → Lite → Qontak One Team → Sales Invoice + Jurnal → Centralized SSO Token → One CID (no slot). centralized-sso-token's FE finish is pushed to ~W10.6, past the ~W10.3 finish-by its Lane-B 13.5-md E2E gate needs, on top of its pre-existing 4 external-contract gate. One CID's 7.0 md FE now has no queue slot at all and overflows into Q4 outright unless capacity changes. Decision needed, now unavoidable — Syafrizal M. stays One CID's FE owner: add a second FE engineer, or move other (lower-priority) work off him. Separately, qontak-one-team's cross-squad contract is signed off (2026-07-01, OQ-1/OQ-9 closed) — its full 15.5 md incl. Task 5 remains unblocked and Commit-ready.
- ✅ QA capacity risk resolved 2026-07-01 — Izzul staffed onto One CID's QA instead of Yoddi. One CID's QA (6.0 md) would have landed on top of an already-tight ≥0.98 (51/52) and pushed Yoddi to 1.10 — over. EM decision: Izzul (backup) takes One CID's 6.0 md QA, leaving Yoddi at 0.98 — under (no spare headroom) and Izzul at 0.50 — under. Lower-priority QA (Billing Expired Handling / Postpaid Usage Scheduler, both already unsequenced) still needs a sequencing pass given Yoddi's thin headroom.
- 🟡
qontak-launchpad-audit-logsFE unstaffed. Task-breakdown carries FE 3.5; the initiative staffs only Satya (BE). FE ownerTBD; with Syafrizal M. now over (1.13) it has no open slot at all and competes with One CID's newly-sized, also-unhoused FE — realistically needs a second FE engineer or it slips.