Bifrost — Capacity Plan 2026-Q3
Delivery / Program Management — squad capacity & load for the quarter.
Capacity
Committed days roll up from each initiative's per-discipline effort (effort_<discipline>_days on
the initiative README) assigned to the named implementor. Load = Committed ÷ (Available × Focus)
→ over (>1.0) · at (≈1.0) · under (<1.0). Focus defaults to 0.8. Most committed-days are
TBD until each initiative's DRI confirms its man-days. Captured so far: deduction-v2 (BE 13 ·
QA 3), lite-seats (BE 14 · FE 4 · QA 4.5), centralized-sso-token (FE 37 · BE 8 · QA 13.5),
self-subs (FE 7.5 · BE 6 · QA 4), self-topup (FE 12.5 · BE 5 · QA 4.5 — as-built/~80% spent; see note),
qontak-launchpad-audit-logs (FE 3.5 · BE 5 · QA 1.5), meta-modpanel-call-usage
(BE 11.5 · QA 4.0 — backend-only), downgrade-webhook (BE 7 · QA 2 — backend-only, high
confidence), qontak-one-team (BE 10.5 · FE 1.5 · QA 3.5 — medium confidence; Task 5 trigger now
unblocked, Chat/CRM contract signed 2026-07-01), postpaid-usage-scheduler (FE 4 · BE 12.5 · QA 4.5 — medium
confidence), billing-expired-handling (FE 5 · BE 8 · QA 4.5 — low confidence; Mobile still TBD),
sales-invoice-jurnal (FE 2 · BE 2.5 · QA 2 — medium confidence), quota-management
(BE 9.5 · QA 2 — medium confidence, backend-only), and one-cid-multiple-waba
(FE 7.0 · BE 12.5 · QA 6.0 = 25.5 md — medium confidence) from their RFC/PRD task-breakdowns
(as_of 2026-06-29/2026-06-30/2026-07-01).
Available eng-days follow the same 2026-Q3 basis as CDP — 1 man-week = 5 eng-days. 2026-Q3 spans
13 calendar weeks, so a full-time engineer has 13 man-weeks = 65 days; with focus 0.8
→ 52 effective days/quarter. QA assignment defaults to Yoddi (65); Izzul is held as
cross-team backup at 15 (3 man-weeks — a partial cross-team allocation, not a function of quarter
length; same person/figure CDP holds), pulled in only when Yoddi's timeline clashes or Bifrost needs
extra QA support. Load = Committed ÷ (Available × Focus) is now computable for
fourteen of the fifteen estimated initiatives; it remains partial because downgrade-user's
committed-days are still TBD pending its DRI's man-days (so Satya's row below is a lower
bound that only rises). one-cid-multiple-waba was reconciled 2026-07-01 off its task-breakdown
(FE 7.0 · BE 12.5 · QA 6.0 = 25.5 md, medium confidence) — Grehasta's row is now fully sized. FE
(Syafrizal M.) crosses into over as a direct result; QA was reassigned the same day — Izzul
takes One CID's 6.0 md QA instead of Yoddi, so Yoddi stays under (see the callout below).
| Implementor | Available eng-days | Focus factor | Committed days | Allocation (by initiative) | Load |
|---|---|---|---|---|---|
| Grehasta Mahardika | 65 | 0.8 | 40.5 (self-subs BE 6 + meta-modpanel BE 11.5 + qontak-one-team BE 10.5 + one-cid BE 12.5) | self-subs (BE) 6, meta-modpanel-call-usage (BE) 11.5, qontak-one-team (BE) 10.5, one-cid-multiple-waba (BE) 12.5 | under (0.78) |
| Hafriz | 65 | 0.8 | 36 (deduction-v2 BE 13; sales-invoice-jurnal BE 2.5; billing-expired-handling BE 8; postpaid-usage-scheduler BE 12.5; self-topup BE 5 as-built/spent, excluded from load) | deduction-v2 (BE) 13, sales-invoice-jurnal (BE) 2.5, billing-expired-handling (BE) 8, postpaid-usage-scheduler (BE) 12.5, self-topup (BE) 5 (as-built — done, co-staffed with Madani) | under (0.69) |
| Syafrizal M. | 65 | 0.8 | 59 (centralized-sso-token FE 37 + self-subs FE 7.5 + lite-seats FE 4 + qontak-one-team FE 1.5 + sales-invoice-jurnal FE 2 + one-cid FE 7.0; self-topup FE 12.5 as-built/spent) | centralized-sso-token (FE) 37, self-subs (FE) 7.5, lite-seats (FE) 4, self-topup (FE) 12.5 (as-built — done), qontak-one-team (FE) 1.5, sales-invoice-jurnal (FE) 2, one-cid-multiple-waba (FE) 7.0 | over (1.13, 7 days over) |
| Madani | 65 | 0.8 | 16.5 (downgrade-webhook BE 7 + quota-management BE 9.5; self-topup BE 5 as-built/spent, excluded from load) | downgrade-webhook (BE) 7, quota-management (BE) 9.5, self-topup (BE) 5 (as-built — done, co-staffed with Hafriz) | under (0.32) |
| Satya | 65 | 0.8 | 27+ (lite-seats BE 14 + centralized-sso-token BE 8 + qontak-launchpad-audit-logs BE 5) | lite-seats (BE) 14, centralized-sso-token (BE) 8, qontak-launchpad-audit-logs (BE) 5, downgrade-user (BE) TBD | under (≥0.52) |
| Yoddi (QA, primary) | 65 | 0.8 | 51 (deduction-v2 3 + lite-seats 4.5 + self-subs 4 + web-session 13.5 + self-topup 2 remaining [E2E BIF-8382; 2.5 of 4.5 as-built] + audit-logs 1.5 + meta-modpanel 4.0 + downgrade-webhook 2 + qontak-one-team 3.5 + sales-invoice-jurnal 2 + billing-expired-handling 4.5 + postpaid-usage-scheduler 4.5 + quota-management 2) | deduction-v2 (QA) 3, lite-seats (QA) 4.5, self-subs (QA) 4, centralized-sso-token (QA) 13.5, self-topup (QA) 4.5 (2.5 as-built — done; 2 remaining, E2E BIF-8382), qontak-launchpad-audit-logs (QA) 1.5, meta-modpanel-call-usage (QA) 4.0, downgrade-webhook (QA) 2, qontak-one-team (QA) 3.5, sales-invoice-jurnal (QA) 2, billing-expired-handling (QA) 4.5, postpaid-usage-scheduler (QA) 4.5, quota-management (QA) 2, downgrade-user (QA) TBD | under (0.98) |
| Izzul (QA, backup) | 15 | 0.8 | 6 (one-cid-multiple-waba QA 6.0 — pulled onto One CID 2026-07-01 to relieve Yoddi's overcommit) | one-cid-multiple-waba (QA) 6.0; otherwise backup for Bifrost QA timeline clashes / extra QA support | under (0.50) |
Over/under-commitment
- Available-days are now set from the CDP-equivalent 2026-Q3 man-week capacity (65 eng-days = 13
man-weeks, focus 0.8 → 52 effective). Loads are computable for fourteen of the fifteen estimated
initiatives; only Satya's row remains a lower bound —
downgrade-useris stillTBD, so his load only rises as its DRI's man-days land. Hafriz's, Madani's, and now Grehasta's rows are fully sized (no remainingTBD) —one-cid-multiple-wabareconciled 2026-07-01 off its task-breakdown (FE 7.0 · BE 12.5 · QA 6.0). - 🔴 Syafrizal M. (FE) is now OVER capacity — 1.13, a 7-day shortfall, no longer speculative.
Corrected 2026-06-30 once
self-topupwas reconciled as as-built (its FE 12.5 is already spent, not Q3-forward work — Epic BIF-7797, build materially complete; seebifrost/self-topup/rfcs/self-topup.task-breakdown.mdv2.0), then bumped 2026-07-01 onceqontak-one-team's FE (Task 4) was sized at 1.5 md, then bumped again the same day when he was staffed as FE onsales-invoice-jurnal(2 md) — landing him exactly at 1.00, zero headroom. Now (2026-07-01, later):one-cid-multiple-waba's FE was sized at 7.0 md off its task-breakdown — the docs had already flagged this as "will push him strictly over the moment it is sized," and it now has. His known forward FE is 59 man-days (centralized-sso-token 37 + self-subs 7.5 + lite-seats 4 + qontak-one-team 1.5 + sales-invoice-jurnal 2 + one-cid 7.0) ÷ 52 effective = 1.13 — a confirmed 7-day overcommit, not a caution. Queue resequenced 2026-07-01 (EM decision):qontak-one-team(1.5 md) andsales-invoice-jurnal(2 md) slot ahead ofcentralized-sso-token— his serial queue is Self-Subs → Lite → Qontak One Team → Sales Invoice + Jurnal → Centralized SSO Token → One CID (unscheduled, no slot).centralized-sso-token's FE was projected to finish ~W9.7 (within the ~W10.3 finish-by for its Lane-B 13.5-md E2E gate); re-projected with the extra 3.5 md ahead of it, that finish moves to ~W10.6 — past the ~W10.3 threshold, and now One CID's FE 7.0 md has no queue slot at all — it overflows into Q4 outright unless capacity changes. Seebifrost/centralized-sso-token/delivery/timeline.mdfor the SSO-side risk. Lever unchanged, now urgent and no longer avoidable: add a second FE engineer (mirroring CDP's two-FE Jovi+Azani setup) or move work off Syafrizal M. — without it, One CID's FE cannot land in Q3 regardless of Rev status. - ✅ Yoddi (QA) overcommit resolved 2026-07-01 — back to under (0.98).
one-cid-multiple-waba's QA (6.0 md) was sized on top of an already-tight ≥0.98 (51/52), which would have pushed him to 1.10 — over. Resolved same day (EM decision): Izzul takes One CID's 6.0 md QA instead of stacking it on Yoddi. Yoddi's committed QA is now 51 man-days ÷ 52 effective = 0.98 — under, no headroom to spare but no longer over. Izzul (backup, 15 available / 12 effective days) now carries 6 md, load 0.50 — under, well within his backup allocation. - 🟡
qontak-launchpad-audit-logshas FE 3.5 with no FE implementor — its task-breakdown carries FE 3.5, but the initiative staffs only Satya (BE); the FE owner isTBD. With Syafrizal M. now over (1.13, no slack at all) this FE has no home at all without a second FE hire. - 🟢 BE has real headroom — Satya ≥0.52, Hafriz 0.69 (fully sized at 36 md — deduction-v2 13 +
sales-invoice-jurnal 2.5 + billing-expired-handling 8 + postpaid-usage-scheduler 12.5; self-topup
BE 5 stays excluded as as-built/spent), Grehasta 0.78 (was ≥0.54; +12.5 md from one-cid BE now
that it is fully sized — his row is no longer a lower bound), Madani 0.32 (downgrade-webhook BE 7
- quota-management BE 9.5 — fully sized). BE is not the constraint; the remaining
downgrade-userTBD (BE-weighted) can still absorb load if FE doesn't gate it.meta-modpanel-call-usage(BE 11.5, backend-only) lands wholly on Grehasta and still leaves him under — it adds no FE demand and does not touch the binding constraint.
- quota-management BE 9.5 — fully sized). BE is not the constraint; the remaining
- ✅ QA fits again — Yoddi at 0.98 (under), Izzul now staffed on one-cid-multiple-waba (0.50,
under). FE remains the sole binding constraint (Syafrizal M. still over at 1.13).
quota-management's QA 2 md and the Sales Invoice + Jurnal / Billing Expired Handling / Postpaid Usage Scheduler QA (11 md combined) remain sized but not yet sequenced into either QA's queue — that sequencing pass is still worth doing given Yoddi has no spare headroom (0.98).
Notes
- Quarter window: 2026-Q3 (Jul–Sep). Seed staffing taken from
bifrost/delivery/roadmap.md. - QA (Yoddi, Izzul) is shared across every bifrost initiative; their per-initiative QA man-days
sum into
Committedonce each initiative confirmseffort_qa_days.