Bifrost — Sprint 1 Goals (2026-Q3)
Sprint window: 2026-07-06 → 2026-07-20 (extended from the original 07-17; see the ledger's date-correction history in the pass files)
Approach: priority-ordered backlogs per engineer, not capacity-boxed. Each person works their
list top to bottom; if an item is genuinely blocked (external dependency, governance gate, or a
missing design/spec — not just "no time left"), skip to the next ready item and circle back once
the blocker clears. There is no man-day ceiling in this plan — effort figures live in
../capacity.md and each initiative's task-breakdown for sequencing context
only; you are encouraged to work the list as far as it goes.
Source: the ## Priority table in ../roadmap.md, reconciled against each
initiative's rfcs/*.task-breakdown.md.
Note vs. an earlier capacity-boxed draft of this plan: Syafrizal M.'s queue below leads with Qontak One Team Migration + Sales Invoice/Jurnal (P4/P5) rather than Self-Subs/Lite Seats (P6/P7). The Self-Subs-first order recorded elsewhere in the roadmap was a 2026-07-01 EM resequencing made specifically because he was over capacity for the quarter; since this sprint plan does not optimize for what fits, raw priority order takes over instead.
How to point your AI agent at this plan
This file is written to be handed to a coding agent as-is. Copy-paste brief:
Read
bifrost/delivery/sprints/2026-07-06-sprint-01.md. Find the section## <my name>— that table is my priority-ordered sprint queue. Start at item #1 that is not marked Blocked. Before writing any code for an item, read (in order) its task-breakdown, its RFC, and its PRD from the Initiative index table — the task-breakdown defines the task ids/order referenced in my queue, the RFC defines the design, the PRD's Section-8 story tables define the acceptance criteria. Work the tasks in the stated order; when a task is done per its breakdown acceptance, move to the next. If I hit a blocker listed under "The only real blockers", stop that item, note it, and move to my next Ready item.
Ground rules for the agent (and the human driving it):
- The task-breakdown is the work contract. Task ids in the queue tables (
Task 1 → 2 → 3,T1 → T7,2.1/2.2/…) refer to the linked*.task-breakdown.md, never to Jira ticket numbers. Read it first, every time. - Done means the breakdown's acceptance for that task is met — code merged behind the
stated flags/contracts, and the PRD's composite AC ids (
<STORY-ID>/AC-n) it maps to are satisfied. QA items are done when the covered ACs have executed test evidence. - Never renumber or invent AC/story ids — they key Jira tickets and test specs. Cite existing composite ids exactly as written in the PRD.
- Effort numbers are context, not caps. Do not stop a queue because "the estimate is used up". Only the named blockers below justify skipping an item.
- Blocked ≠ idle. For blocked items you may still do non-gated prep the row allows (test planning, scaffolding behind a flag) if explicitly noted — otherwise skip cleanly to the next Ready item and record what you're waiting on.
- Do not touch Jira automation. Never trigger the
jira-syncpipeline; the Jira mirror for these epics is maintained by hand per the repo convention (jira_epicon each initiative README, sitejurnal.atlassian.net). - Cross-person handoffs: if your task unblocks someone else's queue (e.g. Madani's P8/P9 unblock Satya's and Syafrizal's Downgrade User items), say so in your status update the day it merges.
- 🎯 PULL-TO-CLOSE = a commitment to finish this sprint, never "already closed" —
completion is evidenced only by
sprint:reconcile(verdict semantics).
Initiative index (agent lookup table)
All paths are relative to this file. Priority ranks come from the roadmap ## Priority table.
| Pri | Initiative (Epic) | Task breakdown | RFC | PRD |
|---|---|---|---|---|
| P1 | Deduction V2 (BIF-8644) | breakdown | rfc · review | prd |
| P2 | Meta WhatsApp Pricing (BIF-8755, minted 2026-07-06) | breakdown (12 md, authored 2026-07-06) | rfc (draft) | prd (draft) |
| P3 | Self Top-up (BIF-7797) | breakdown | — | prd |
| P4 | Qontak One Team Migration (BIF-8642) | breakdown | rfc · review | prd |
| P5 | Sales Invoice + Jurnal (BIF-8117) | breakdown | rfc | prd |
| P6 | Self-Subs (BIF-8639) | breakdown | rfc · review | prd |
| P7 | Lite Seats (BIF-8638) | breakdown | rfc · review | prd |
| P8 | Downgrade Webhook (BIF-8643) | breakdown | rfc · review | prd |
| P9 | Quota Management (BIF-8713) | breakdown | rfc | prd |
| P10 | Downgrade User (BIF-8684) | breakdown | rfc | prd |
| P11 | One CID Multiple WABA (BIF-8910; supersedes BIF-6428, the original Phase-1 build Epic — see F-1 resolution + decision 0001, 2026-07-19) | breakdown | rfc · review | prd |
| P12 | Centralized SSO Token (BIF-7802) | rfcs folder — per-repo FE breakdowns (crm-fe, hub-fe, hub-chat-v2-fe, launchpad-fe, cross-repo) | same folder, per-repo RFCs + reviews | prd |
| P13 | Meta x Modpanel Call Usage (BIF-8658) | breakdown | rfc | prd |
| P14 | Billing Expired Handling (BIF-8640) | breakdown | rfc | prd |
| P15 | Qontak Launchpad Audit Logs (BIF-8659) | breakdown | rfc | — (RFC-driven; no PRD) |
| P16 | Postpaid Usage Scheduler (BIF-8641) | breakdown | rfc | prd |
| Adhoc lane | 26Q3 Adhoc Requests (BIF-8695, bucket — classed, not ranked) | — (unsized; small self-contained stories) | — (no RFC per story) | 11 PRDs · README per-story tracker — story ids A1…A11 with per-story Class (🔴 Expedite / 📅 Fixed-Date / 🟡 Standard / ⚪ Intangible), live Status, owners + Jira keys. Pull 🔴 Expedite first (A1/A2/A3/A9), ⚪ Intangible last (A10); Expedite MAY preempt ranked work (WIP ≤3 in flight, logged in the README ## Expedite log) — A9 is the current in-flight preemption for Syafrizal; A1/A3 remain FE-capacity escalations. Not a ## Priority rank; see the roadmap ## Adhoc / Interrupt lane. |
Each initiative folder also has a README.md (DRI, jira_epic, QA lane) and
delivery/timeline.md (dependencies & gates) — consult them when a row's status here is
ambiguous.
Grehasta (BE)
Agent brief: backend spine of the sprint — migration plumbing first (P4), then Self-Subs Phase-2 BE, then the two fully-open BE-only initiatives.
| # | Epic (Jira) | Focus (task ids from the breakdown) | Status |
|---|---|---|---|
| 1 | Qontak One Team Migration (BIF-8642, P4) | Task 1 → 2 → 3 → 4(BE) → 5, in order (source-tracking cols → receive path → General-team retry → invite BE → Chat/CRM trigger) | Ready |
| 2 | Self-Subs (BIF-8639, P6) | Task 2.1 → 2.2 → 2.3 → 2.4 (migration → expose flags → initiate proxy → moderator-be gate) | Ready |
| 3 | One CID Multiple WABA (BIF-6428, P11) | Full BE scope | Ready — RFC review is BE PROCEED even though FE is on hold. Your BE progress is what Izzul's QA execution (his #2) follows — flag milestones to him. Gre's 2026-07-06 note: FE design review is needed on Detail 2.F before Syafrizal's #6 can unblock — flag your BE milestones to him so he can check the designs against them. ⚠️ 2026-07-07 Jira reconciliation: the BIF-6428 Epic shows status: Done in Jira — conflicts with this row still being open work. Confirm with PM/TPM before continuing spend — see Jira reconciliation section below. |
| 4 | Meta x Modpanel Call Usage (BIF-8658, P13) | Full BE scope (backend-only initiative) | Ready — alerting confirmed required 2026-07-06 (Gre); the RFC's Google Chat discrepancy alert (§3/MMCU-S04) stays in scope, no descope |
| 5 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — BE for A4 (BIF-8749) | Qontak One re-invite — BE half | 🟡 BE-advance → Q4 close (BE+FE; FE over cap). Contingent on BIF-6428 confirmed Done. Verdict per the Pull rule; story state in the tracker. |
Satya (BE)
Agent brief: Lite Seats immediately-startable tasks (2.1/2.2/2.4/2.5) are done + code-corroborated (pass-06, 2026-07-16); only 2.3 (B1 — ModPanel component codes) and 2.8 (B2 — permission list) remain, both blocked on external answers. Update 2026-07-16: pull Adhoc A2 (BIF-8751, SSO Change Owner webhook — BE-only 🔴 Expedite) immediately — it was this sprint's one forecasted firm bucket close that was never actually pulled (F-7); your #2 (Downgrade User) and #3 (SSO Token) are both Blocked so the eligibility gate is met. #3 (Centralized SSO Token) is externally blocked and downranked to P12 on 2026-07-08 — skip it.
| # | Epic (Jira) | Focus (task ids from the breakdown) | Status |
|---|---|---|---|
| 1 | Lite Seats (BIF-8638, P7) | Phase-2 BE — 2.1/2.2/2.4/2.5 done + code-corroborated (pass-06, 2026-07-16); only 2.3 (B1 — ModPanel component codes) and 2.8 (B2 — permission list) remain, both blocked on external answers — chase them, don't wait | Done (startable) — blocked remainder |
| 2 | Downgrade User (BIF-8684, P10) | Full BE scope | Blocked on Downgrade Webhook + Quota Management (Madani) landing first — once those ship, pull this ahead of #4 |
| 3 | Centralized SSO Token (BIF-7802, P12) | — | Blocked — "no RFC is execution-ready" (Account & Launchpad SDK/infosec). Downranked P7 → P12 on 2026-07-08 (tech-debt, no instant customer value); skip it. |
| 4 | Qontak Launchpad Audit Logs (BIF-8659, P15) | Full BE scope | Ready |
| 5 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — BE for A1, A2, A7 | A1 BIF-8750 · A2 BIF-8751 · A7 BIF-8736 — BE halves | 🎯 A2 = PULL-TO-CLOSE — never effective on the board (F-7) (BE-only Expedite). A1 = BE-advance + ESCALATE; A7 = BE-advance → Q4. Verdicts per the Pull rule; state in the tracker. |
Hafriz (BE)
Agent brief: P1 is the team's top priority and is now confirmed unblocked (2026-07-06, Hafriz's own alignment note) — start at #1 T1 → T7, then continue down the queue in order.
| # | Epic (Jira) | Focus (task ids from the breakdown) | Status |
|---|---|---|---|
| 1 | Deduction V2 (BIF-8644, P1) | T1 → T7 in order (hold ledger → create hold → available-balance gate → webhook transitions → EOD settlement → sweeper → cron) | Ready — confirmed unblocked 2026-07-06 (Hafriz, team alignment); engineering may resume T1 at the top of the queue. Note: the RFC frontmatter is still in-review and the PRD still draft — PM should formally move the RFC to approved to close the paper trail on the Non-Goal #4 vs. authorize-at-send reconciliation. |
| 2 | Sales Invoice + Jurnal (BIF-8117, P5) | Task 1 → Task 2 → Task 3 (flag round-trip → Jurnal timeout → auth allowlist) | Task 3 needs an OQ-2 + infosec call; 1 & 2 are ready now |
| 3 | Billing Expired Handling (BIF-8640, P14) | Full BE scope | Ready, low-confidence estimate — expect to firm it up as you go |
| 4 | Postpaid Usage Scheduler (BIF-8641, P16) | Full BE scope | Ready |
| 5 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — BE for A3, A8 | A3 BIF-8696 · A8 BIF-8718 — BE halves | 🎯 A8 = PULL-TO-CLOSE if a window opens (BE-only Standard; your P1 fills the sprint). 🔴 A3 = ESCALATE (Expedite BE+FE, second FE-hire trigger); BE-advance only if idle. Verdicts per the Pull rule. |
Madani (BE)
Agent brief: four items now, reordered 2026-07-06 to follow roadmap Priority rank
(P2 → P3 → P8 → P9) per the alignment-notes update. #1 (Meta WhatsApp Pricing) is real work, not
just review — the task-breakdown is now authored (12 md, 2026-07-06), so review it then start
executing the Phase-1 tasks it flags as startable (Tasks 1.1–1.5; the open pricing decision +
hub_core access gate still block the Phase-2 data values + verification).
That means it can genuinely eat into time for #3/#4, which are still the sprint's highest-leverage
items — they gate Downgrade User (Satya #2, Syafrizal M. #5, Izzul #1). If #1 runs long, flag it and
pull #3/#4 forward rather than letting the unblock slip silently. Announce each merge; three queues
are waiting on #3/#4.
| # | Epic (Jira) | Focus (task ids from the breakdown) | Status |
|---|---|---|---|
| 1 | Meta WhatsApp Pricing (BIF-8755, minted 2026-07-06, P2) | The task-breakdown is now authored (12 md, 2026-07-06) — review it, then start building the Phase-1 tasks it flags as startable (1.1–1.5); only the Phase-2 data values + the pieces gated on the open pricing decision / hub_core access wait | Ready — mid-sprint addition (Madani's 2026-07-06 note); highest-ranked item in the queue (P2); not review-only, so it may push #3/#4 later than planned — see Deviations note below |
| 2 | Self Top-up (BIF-7797, P3) bugfix — BE half | Fix BIF-8708 (wrong MUV nominal — likely option_value seed data) and BIF-8709 (MUV shows despite Unlimited component — show_by_component/hide_by_component gating), the 2 of 6 retest bugs (2026-07-06) that are BE-owned; the other 4 are FE and went to Syafrizal M. (his #11) per 2026-07-07 Jira triage | Ready — mid-sprint addition; unblocks Yoddi #2's retest and initiative close alongside Syafrizal's FE half |
| 3 | Downgrade Webhook (BIF-8643, P8) | Phase 1 (schema) → Phase 2 (logic & workers), full scope | Ready — Bifrost-owned scope has no blockers; the chat/crm/content-team webhook contracts are separate cross-squad work, not a gate on this queue |
| 4 | Quota Management (BIF-8713, P9) | T1 → T8 in order | Ready — plus, per Madani's 2026-07-06 note, start exploring with QA how to raise confidence on this initiative (decide the "how," then collaborate with Yoddi/Izzul on test-case coverage) |
| 5 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — BE for A5, A6, A10 | A5 BIF-8787 · A6 BIF-8788 · A10 BIF-8747 — BE | 🎯 A10 = PULL-TO-CLOSE (Intangible BE-only, pull when #1 hits its gate). A5/A6 = BE-advance → Q4 (BE+FE, FE over cap). Verdicts per the Pull rule. |
Syafrizal M. (FE)
Agent brief: the only FE queue — many small, independent Ready items (#1, #2, #3, #4, #5, #10, #11, #12) with the blocked ones interleaved; skip blocked rows without waiting and keep moving down. Syafrizal M. confirmed 2026-07-06 that #1 and #2 below are valid, active work; A9 is the 2026-07-14 Expedite amendment at #3.
| # | Epic (Jira) | Focus (task ids from the breakdown) | Status |
|---|---|---|---|
| 1 | Qontak One Team Migration (BIF-8642, P4) | Task 4 (FE half — mandatory team on invite) | Ready — confirmed active 2026-07-06 (Syafrizal M.) |
| 2 | Sales Invoice + Jurnal (BIF-8117, P5) | Task 4 (Download-SI button + handling) | Ready — confirmed active 2026-07-06 (Syafrizal M.) |
| 3 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — A9 Custom Solution Insights UI polish (BIF-8682), FE only | Settings-menu entry, sidebar-label rename, remove page title (3 ACs, no BE half) | 🔴 PREEMPT — reclassified ⚪ Intangible → 🔴 Expedite 2026-07-14, pulled in-progress now. Trivial single-discipline scope (~0.5 md) means no BE-without-FE WIP trap, so it closes this window at #3 by preempting Self-Subs (P6), formerly #3 and now #4. #1 (Qontak One Team) is already In Deployment and #2 (Sales Invoice + Jurnal) is In Progress per the 2026-07-13 Jira reconciliation. Self-Subs resumes at #4 right after; see ## Adhoc interrupts (this sprint) and the Expedite log. Read the PRD §8. |
| 4 | Self-Subs (BIF-8639, P6) | Task 1.1 → 1.3 → 2.5 | Ready |
| 5 | Lite Seats (BIF-8638, P7) | Task 1.1 (Phase-1 UI) | Ready |
| 6 | Downgrade User (BIF-8684, P10) | FE | Blocked on Downgrade Webhook + Quota Management BE landing |
| 7 | One CID Multiple WABA (BIF-6428, P11) | FE | Blocked — RFC review HOLD on Detail 2.F (component contracts/frames/UI states not decided). Gre's 2026-07-06 note: this needs an FE review of the proposed designs — check the designs against Grehasta's BE milestones (his #3) as the concrete next step to clear the hold. ⚠️ 2026-07-07: BIF-6428 shows status: Done in Jira — see Jira reconciliation section below before treating this as live scope. |
| 8 | Centralized SSO Token (BIF-7802, P12) | All FE (per-repo breakdowns: crm-fe, hub-fe, hub-chat-v2-fe, launchpad-fe, cross-repo) | Blocked — same external SDK gate as Satya's item above; also downranked P4 → P7 in this queue (roadmap P7 → P12) on 2026-07-08. |
| 9 | Billing Expired Handling (BIF-8640, P14) | FE | Not yet spec'd — the FE RFC hasn't been authored, this is a stub estimate. Flag to PM to scope; do not have an agent invent the FE design from the BE RFC. |
| 10 | Qontak Launchpad Audit Logs (BIF-8659, P15) | FE | Ready |
| 11 | Postpaid Usage Scheduler (BIF-8641, P16) | FE | Ready |
| 12 | Self Top-up (BIF-7797, P3) bugfix — FE half | Fix BIF-8704 (help-center redirect), BIF-8705 (continue-button blocked), BIF-8706 (minus balance/excess not showing), BIF-8707 (missing PPN/Service Fee hint) | Ready — assigned 2026-07-07 per Jira triage (see Jira reconciliation section); runs alongside Madani's BE half (BIF-8708/8709) to unblock Yoddi #2's retest |
| 13 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — FE for the 6 remaining BE+FE stories | A1, A3, A4, A5, A6, A7 — FE halves (keys in the tracker) | 🔴 ESCALATE — no real slot (queue full through #12); these 6 FE halves are the gate behind every "BE-advance → Q4" verdict above. A1 + A3 are the two Expedite second-FE-hire triggers (ADR 0001). If a second FE lands, pull in Class order. |
Yoddi (QA, primary)
Agent brief: #2 (Self Top-up E2E BIF-8382) was the sprint's one guaranteed initiative-closer,
but is now blocked on new bugs found during retest (2026-07-06) — skip to #1 (now Ready,
Deduction V2 unblocked) and the rest of the queue, and circle back to #2 once Madani's bugfix
lands. For each item, QA scope =
the composite AC ids (<STORY-ID>/AC-n) in the initiative PRD's Section-8 story tables; check
the initiative README's qa_lane for how heavy the manual gate is.
| # | Epic (Jira) | Focus | Status |
|---|---|---|---|
| 1 | Deduction V2 (BIF-8644, P1) | — | Ready — epic confirmed unblocked 2026-07-06 (Hafriz) |
| 2 | Self Top-up (BIF-7797, P3) | Finish BIF-8382 E2E | Blocked — new bugs found during retest 2026-07-06 (Syafrizal M./Yoddi); holds until both halves land — Madani's BE bugfix (his #2, BIF-8708/8709) and Syafrizal M.'s FE bugfix (his #11, BIF-8704–8707), assigned 2026-07-07 — then retest closes this initiative |
| 3 | Qontak One Team Migration (P4) | QA for Tasks 1–5 | Ready |
| 4 | Sales Invoice + Jurnal (P5) | QA for Task 1/2/4 | Ready |
| 5 | Self-Subs (P6) | QA Phase 1 + Phase 2 | Ready |
| 6 | Lite Seats (P7) | QA Phase 1 + Phase 2 | Ready |
| 7 | Downgrade Webhook (P8) | QA | Ready |
| 8 | Quota Management (P9) | QA | Ready |
| 9 | Centralized SSO Token (P12) | — | Blocked with the epic; downranked P6 → P9 in this queue (roadmap P7 → P12) on 2026-07-08 |
| 10 | Meta x Modpanel (P13) | QA | Ready |
| 11 | Billing Expired Handling (P14) | QA | Ready (stub scope) |
| 12 | Qontak Launchpad Audit Logs (P15) | QA | Ready |
| 13 | Postpaid Usage Scheduler (P16) | QA | Ready |
| 14 | 26Q3 Adhoc (BIF-8695, Adhoc lane) — QA for all 11 stories (Lane B) | Per-story AC verification against each PRD §8 | 🎯 Only the PULL-TO-CLOSE stories are testable this sprint (A2 firm; A8/A10 if windows open; A9 after its FE merge) — run in gaps as each BE merge lands, not batched (you are at 0.95; Izzul backup ≈1 day). BE+FE stories sequence QA in Q4. |
| 15 | QA BAU — Automation Coverage & Deployment Support (BIF-8869) | Own automation-coverage improvements and partner with Izzul on release verification; create a Jira item for every discrete BAU outcome using the contract below | Ongoing — scheduled deployment verification takes precedence; otherwise pull into gaps between ready initiative work |
Izzul (QA, backup)
Agent brief: both items are gated on BE progress, but #2 has agent-ready prep now — author the test plan against the BE-PROCEED half of the One CID RFC while Grehasta builds.
| # | Epic (Jira) | Focus | Status |
|---|---|---|---|
| 1 | Downgrade User (BIF-8684, P10) | QA | Blocked on BE prereqs (same as Satya/Syafrizal's items) |
| 2 | One CID Multiple WABA (BIF-6428, P11) | QA | Can start test planning now against the BE-PROCEED half; full execution follows Grehasta's BE progress. ⚠️ 2026-07-07: BIF-6428 shows status: Done in Jira — see Jira reconciliation section below before continuing test-planning spend. |
| 3 | QA BAU — Automation Coverage & Deployment Support (BIF-8869) | Lead or back up release verification and partner with Yoddi on automation coverage; create a Jira item for every discrete BAU outcome using the contract below | Ongoing — scheduled deployment verification takes precedence; otherwise pull into gaps between ready initiative work |
QA BAU Jira-item contract (Yoddi & Izzul)
This is a standing QA workstream, not a new initiative or capacity estimate. Yoddi and Izzul share ownership: Yoddi leads automation-coverage improvements, while Izzul leads or backs up deployment verification as availability permits.
AI execution instruction — create Jira items: For every discrete QA BAU outcome, Yoddi's or
Izzul's AI must manually create a Jira item in the BIF project before starting work. Use a
Task for planned automation or deployment-support work, and a Bug when verification finds a
product defect. Put work expected to finish in this window in Bifrost 26Q3 Sprint 1; otherwise
leave it in the backlog. Set BIF-8869 as the parent Epic. Do not use the jira-sync pipeline.
Each Jira item must include:
- one of these summaries:
QA Automation — <flow> regression coverageorQA Deployment Support — <service/release> verification; - Yoddi or Izzul as assignee; the affected service, user flow, and related initiative, release, incident, or defect when applicable;
- the coverage gap or deployment trigger, the checks to automate or execute, and the expected evidence of completion (test-run result, smoke-test result, or defect report);
- a completion note containing the outcome, remaining risk, and linked follow-up issues.
| BAU workstream | Required practice | Outcome |
|---|---|---|
| Increase automation coverage | Identify regression gaps from delivered changes, retests, and escaped defects; add or maintain automated coverage for the highest-frequency and highest-risk paths; stabilise flaky tests and test data that block dependable execution. | More release-critical flows have reliable automated regression coverage. |
| Support regular deployments | Confirm test scope and environment readiness for each planned deployment; execute the agreed pre-release checks; run post-deployment smoke verification; and promptly report the result or a blocking defect. | Each deployment has timely QA confidence and a recorded verification outcome. |
Deviations from roadmap priority
The one fact this sprint owns (everything else above is a render of the roadmap ## Priority table).
Queues follow roadmap Priority rank except:
- Syafrizal M. (FE): this sprint runs his queue in raw priority order — Qontak One Team (P4) + Sales Invoice/Jurnal (P5) lead, then Self-Subs (P6) / Lite Seats (P7). The roadmap's 2026-07-01 EM resequencing put Self-Subs first because he is over capacity for the quarter; this sprint is deliberately not capacity-boxed, so raw rank takes over for the window. Tactical, one-sprint only — if it recurs, it must be reconciled into the roadmap Priority table (or an ADR), not left to live here.
- Meta WhatsApp Pricing (new roadmap P2, inserted 2026-07-06 mid-sprint): the roadmap ranks above
were shifted down one (old P2→P3 … P15→P16) to match. It was originally intentionally absent from
the engineer queues —
draftwith no RFC/task-breakdown, so there were no task ids to queue. Update 2026-07-06 (Madani's alignment note): a PRD (service-message-billing.md) and RFC (service-message-billing.md) now exist (both stilldraft), and the task-breakdown is now authored (service-message-billing.task-breakdown.md, 12 md, Phase 1 actionable) — the roadmap/capacity "no task-breakdown" notes are reconciled to the 12 md figure. Madani reviews the breakdown and starts building the Phase-1 tasks it flags as startable (1.1–1.5, his #1) — this is real engineering work, not just review. The pricing decision (absorb / pass-through / bundle) andhub_coreaccess gate are still open and remain PM-owned, and block the Phase-2 data values + whichever tasks depend on them, but the rest can proceed this sprint rather than waiting for next sprint. (The breakdown has landed — agents should build from it, not from the impact analysis.) - Madani's queue reordered 2026-07-06 to follow roadmap Priority rank (P2 Meta WhatsApp Pricing → P3 Self Top-up bugfix → P8 Downgrade Webhook → P9 Quota Management), now that P2 and P3 both carry actionable work for him. This is not a deviation from Priority rank — it's the queue catching up to it — but it is a real deviation from the leverage-first framing this sprint plan originally used for Madani ("shortest queue, highest leverage — P8+P9 first"): #3/#4 still gate three other queues (Satya #2, Syafrizal M. #5, Izzul #1), and unlike a quick review, #1 is genuine build work that can push #3/#4 later than planned. Accepted trade-off for now since it follows Priority rank; if #1 runs long, escalate rather than letting the Downgrade User unblock slip silently — pull #3/#4 forward if the delay becomes material.
- Self Top-up bugfix + Meta WhatsApp Pricing review (Madani #2/#1) and Self Top-up retest hold (Yoddi #2), both mid-sprint additions, 2026-07-06: captured directly in each queue table above rather than here, since they map cleanly to existing initiatives (P3, P2).
- "USMAN Team" new payload request (Gre's alignment note, 2026-07-06): a cross-team ask to add a new payload, requested by another team, that does not map to any initiative in the index table above. Per sprint doctrine this is not invented into a queue row without a roadmap/effort decision — it needs PM scoping (which initiative it belongs to, or whether it is net-new) before it can enter any engineer's queue. Flag to PM; do not have an agent start building against it yet.
- 26Q3 Adhoc bucket (BIF-8695) — accommodated mid-sprint 2026-07-08, revised 2026-07-09 to the
Class-of-Service model (doctrine):
classed not ranked, no
## Priorityrank, append-only; canonical per-story state in the README tracker, rendered into the queues above via the Pull rule. Deterministic forecast: BE-only A2 (firm) / A8 / A10 close; the six BE+FE stories BE-advance → Q4; A1/A3 are the two Expedite FE-capacity escalation triggers (ADR 0001). Effort deliberately unsized. - A9 reclassified ⚪ Intangible → 🔴 Expedite 2026-07-14 — the bucket's first PREEMPT (FE-only,
~0.5 md, so no unfinishable-WIP trap): preempts Self-Subs (P6) on Syafrizal M.'s queue; see his #3
row,
## Adhoc interrupts, the Expedite log, and the Self-Subs status note. No change to the A1/A3 escalation.
Adhoc interrupts (this sprint)
Bounded, append-only record of adhoc stories that entered a running sprint as a genuine
Expedite preemption (doctrine: adhoc-interrupt-doctrine.md).
This renders the decision recorded in the bucket README's ## Expedite log; it does not
originate it. sprint_goal is unchanged by any row here — the displaced ranked item is simply
carried over (or, as below, resumes immediately after a sub-day interrupt).
| Story | Date | Owner queue | Preempts | Status |
|---|---|---|---|---|
| A9 (BIF-8682) | 2026-07-14 | Syafrizal M. (FE) | Self-Subs (P6), formerly his #3 and now #4 | in-progress — see Syafrizal's #3 row above; Self-Subs resumes at #4 right after this ~0.5 md item closes |
The only real blockers (not capacity)
Each blocker names its owner — that's who to escalate to; nobody's queue waits silently.
Resolved this sprint (2026-07-06):
- Deduction V2 (P1) — Hafriz confirmed the blocked status was stale and engineering is clear to
resume. Hafriz #1 and Yoddi #1 both move to Ready. Paper-trail gap: RFC frontmatter is still
in-reviewand the PRD stilldraft— PM should move the RFC toapprovedto make the repo match the confirmed decision.
Active:
- Centralized SSO Token (P12) — external (Account & Launchpad):
@mekari/sdk/Session Manager + infosec sign-off. No engineering path around this. Unblocks: Satya #3, Syafrizal #7, Yoddi #9. - Lite Seats B1/B2 — need answers from Billing/ModPanel (component codes) and Commercial/Product (permission list); only blocks sub-tasks 2.3 and 2.8, not the epic.
- Downgrade User (P10) — structurally depends on Downgrade Webhook (P8) + Quota Management (P9) shipping first — Madani's queue is the unblock. Unblocks: Satya #2, Syafrizal #5, Izzul #1.
- One CID (P11) FE — RFC review HOLD on Detail 2.F, needs a design/contract decision (PM/Design-owned) before FE can start. BE and QA planning proceed regardless. Concrete next step per Gre's 2026-07-06 note: Syafrizal (FE) reviews the proposed designs against Grehasta's BE progress.
- Self Top-up (P3) retest — new bugs found during Syafrizal M./Yoddi's 2026-07-06 retest. Madani owns the fix (his #2); blocks Yoddi's #2 retest/close.
Everything else is open — no artificial ceiling, just work the list in order.
Alignment notes (2026-07-06) not otherwise actionable this sprint
One item from this date's alignment meeting doesn't map to a queue row or an existing blocker and is recorded here so it isn't lost, without inventing scope:
- Syafrizal M.: recheck and validate initiatives. A general due-diligence ask (not tied to one initiative) to re-verify the roadmap/sprint state is accurate — reflected in this sprint's updates (Deduction V2 unblock, Self Top-up bug status, Meta WhatsApp Pricing RFC now existing) rather than as a separate task.
Jira reconciliation — findings ledger (2026-07-21, CLOSE)
State, not log — final. The sprint closed with pass 10, 2026-07-21 (fresh full pull: 147 issues, +5 vs pass 9; 85 done · 15 WIP · 47 To Do; oldest WIP BIF-8570, ~34 days). Full pass narratives live in
../reconciliations/2026-07-06-sprint-01/. Findings still open below are carried to Sprint 2 as planning inputs — they are re-tested there, not here; this ledger is frozen at close.
Open / escalated at close (10 passes, 2026-07-07 → 2026-07-21 — carried forward):
- F-4
off-plan-load— ⛔ ESCALATED (9 passes): BIF-8570 In Progress ~34d; second-FE ADR 0001 stillproposal/dri: TBD. Owner: EM/TPM — decide in Sprint 2 week 1. - F-8
off-plan-load— STILL OPEN: BIF-8757 grew to 30 in-sprint issues at close. Owner: TPM — tracked-bucket-container decision. - F-14
code-evidence-gap— STILL OPEN, downgraded: BIF-8708/8709 no code trace, but retest BIF-8773 passed + Done 2026-07-20 (functional verification). Owner: Madani — one-line confirmation of where the fix landed. - F-15 (scope question) — STILL OPEN: BIF-7825 off-breakdown; BIF-8760 ended
Ready to Test. Owner: TPM. - F-16
bucket-tracker-drift— ⛔ ESCALATED: A9 Story BIF-8682 still To Do while children are Done and BIF-8829–8833 are Ready to Merged / In Deployment. Owner: Addo — board fix. - F-17
bucket-tracker-drift— STILL OPEN: A11 BIF-8612Waiting Confirmation, unassigned. Owner: TPM. - F-18
blocked-done-conflict— STILL OPEN (decision only): all 10 BIF-8642 issues Done; READMEhealth:needs the completion decision (Sprint-2 remainder = Tasks 7–8 + BIF-8911). Owner: Addo/TPM. - F-19
epic-wiring-drift— ⛔ ESCALATED: 9 off-map parent Epics at close (BIF-7803 ×12, BIF-8101 ×8, BIF-8757 ×30, BIF-7795 ×1, BIF-8869 ×2, BIF-8293 ×3, BIF-7792 ×1, BIF-7550 ×1, BIF-7949 ×3). Owner: TPM →jira-alignment-check. - F-22
coverage-gap(P9) — STILL OPEN, first movement: BIF-8715 Done 2026-07-20; 8 To Do remain. Sprint 2 Madani #4 owns T1–T8.
Resolved / closed at close (one line each; evidence in the linked pass files):
- F-7 forecast-at-risk — closed pass 10: A2 (BIF-8751) confirmed never entered sprint 21367 — recorded as a forecast miss in the Sprint review; Sprint 2 re-routes it to Satya as PULL-TO-CLOSE.
- F-10 coverage-gap — closed pass 10: P13/P14/P15/P16 ended at zero board presence — recorded in Carried over; Sprint 2 queues them deliberately (P15's four tasks are in Sprint 21464).
- F-13 code-evidence-gap — resolved post-close corroboration, 2026-07-19: BIF-8803/8804 were genuine redirects (BIF-8792/8793), code-verified merged.
- F-1 One CID
blocked-done-conflict— resolved pass 8 via decision 0001; Epic BIF-8910 owns the 26Q3 remainder. - F-9 bucket-tracker-drift (core children) — superseded pass 8; residual drift tracked as F-16/F-17.
- F-20 Meta WhatsApp Pricing — substantially resolved pass 8; Phase-1 3/5 corroborated.
- F-21 Downgrade Webhook — Phase-1 half corrected + resolved pass 9; Phase 2 genuinely unstarted;
code_reposoverride added to the README. - F-2 → superseded into F-6/F-10 · F-3 resolved pass 4 · F-5 superseded by F-9 · F-6 resolved pass 4 · F-11 closed benign pass 4 (pattern resurfaced, no reopen) · F-12 superseded by F-18.
- Progress write-ups: deduction-v2 81% (pass 7 → status) · qontak-one-team 81% (pass 6) · lite-seats 13% (pass 6) · self-subs held 3% (pass 5; recompute owed) · meta-whatsapp-pricing 33% held pending F-20 confirmation · downgrade-webhook held pending F-21 confirmation · sales-invoice-jurnal unchanged (F-15).
Sprint review
Final — written at close (pass 10, 2026-07-21) from the 147-issue close digest + the pass-file history.
-
Shipped / done:
- Deduction V2 (P1): T1–T7 BE complete + code-corroborated (BIF-8740–8746); BIF-8824 stakeholder sign-off Done. Reopened daily-rollup scope (M0–M5) is Sprint-2 work per ADR 0002.
- Qontak One Team Migration (P4): all 10 in-sprint issues Done — incl. the BE Launchpad endpoints BIF-8864/8865/8866 (resolved 2026-07-19/20). Completion decision owed (F-18); Tasks 7–8 + BIF-8911 QA are Sprint-2 scope.
- Self Top-up (P3): retest BIF-8773 Done 2026-07-20, closing BIF-8382 E2E. New bugs BIF-8844/8845 carried to Sprint 2 (Madani #2 / Yoddi #3). Fix-evidence caveat: F-14 confirmation still owed by Madani.
- Lite Seats (P7): Phase-2 BE subset done + corroborated (BIF-8848–8851); 2.3/2.8 remain externally blocked.
- Meta WhatsApp Pricing (P2): all 5 in-sprint issues Done (Phase-1 3/5 corroborated per the 2026-07-19 post-close walk; Task 1.4 descoped, 1.5 pricing-gated).
- Downgrade Webhook (P8): Phase 1 (schema) merged + corroborated; Phase 2 confirmed unstarted (F-21) — Sprint 2 Madani #3.
- Self-Subs (P6): Task 2.2 both halves done (BIF-8802 hub-service half resolved 2026-07-20; BIF-8792/8793 redirects code-verified).
- Quota Management (P9): first task Done (BIF-8715, 2026-07-20); T1–T8 remainder is Sprint 2.
- Adhoc A9 (BIF-8682): children BIF-8880 (FE) + BIF-8876 (QA) Done; follow-on FE cluster BIF-8829–8833 Ready to Merged / In Deployment; parent Story still To Do (F-16 board fix owed).
-
Carried over (returned to the backlog; Sprint 2 pulled them deliberately — no default carryover):
- A2 / BIF-8751 — never entered Sprint 1 (F-7 closed as a forecast miss); Sprint 2 Satya #3.
- Centralized SSO Token (P12) — external gate narrowed to SB-2 Session Manager + Infosec CSP whitelist.
- One CID FE (P11) — Detail 2.F HOLD unchanged; BIF-8910 owns the remainder.
- Downgrade User (P10) —
paused, deliberately out of Sprint 2. - P13/P14/P15/P16 — zero Sprint-1 board presence (F-10 closed as outcome); ranked low in Sprint 2 queues, P15's four tasks now in Sprint 21464.
- Open findings F-4, F-8, F-14, F-15, F-16, F-17, F-18, F-19, F-22 — frozen in the close ledger above, each with a named owner; re-tested under Sprint 2's audit cadence.
-
Added mid-sprint:
- Meta WhatsApp Pricing (P2) inserted 2026-07-06 with PRD/RFC/task-breakdown authored.
- 26Q3 Adhoc bucket classed as 🔴/📅/🟡/⚪ and distributed into queues 2026-07-08/09.
- A9 (BIF-8682) reclassified ⚪ Intangible → 🔴 Expedite and preempted Syafrizal's Self-Subs slot on 2026-07-14.
-
Fed into status:
deduction-v2/delivery/status/2026-07-17.md— 81% (13/16).- The 2026-07-20 dated entries written during Sprint 2 pass-01 propagation (self-topup, qontak-one-team, and peers) are the latest evidenced burnups; pass 10 adds no new man-day writes.
- Still held:
sales-invoice-jurnalpending F-15;meta-whatsapp-pricingPhase-2 gated.
-
Decisions taken:
- One CID decision 0001 (F-1 resolution; BIF-8910 minted).
- Deduction ADR 0002 (reopened rollup scope).
- Still owed: second-FE ADR 0001 —
proposal,dri: TBD; due Sprint 2 week 1 (F-4).
Retro actions
- Adopt a per-sprint max-escalation-of-3 rule. F-1 (One CID) was open through 7 passes with no ADR. Any finding still open on its 3rd recheck must route to a
decisions/ADR, datedstatus/risk, or descope — not carry to the 6th+ pass. - Close the qontak-billing / report-worker evidence gap. These repos were skipped in every pass, so all Done issues there grade
PARTIAL. Before Sprint 2 close, either add sibling checkouts to the evidence registry or establish a board-corroboration fallback (merge-commit search / Bitbucket UI) so F-20/F-21-style gaps don't recur. - Enforce Jira Story close when children are Done. A9 (F-16) had FE + QA children Done while the parent Story BIF-8682 stayed
To Do. Add a daily standup check: if all child Tasks are Done, move the Story. - Make the second-FE-engineer decision a Sprint 2 planning input. F-4 and six BE+FE adhocs (A1/A3/A4/A5/A6/A7) are blocked solely by Syafrizal's capacity. Don't let this roll as a passive observation into Sprint 3.
- Reconcile roadmap capacity prose with
capacity.md. F-4 surfaced contradictory figures (1.21/11d canonical vs 1.13/7d stale prose). Roadmap risks should derive fromcapacity.md, not be hand-maintained.
Post-close corroboration addendum (2026-07-19)
Retro action #2 actioned: qontak-billing + report-worker cloned and walked, closing the
evidence gaps F-13/F-14/F-20/F-21 were held on. Full evidence (commits, PRs, Jira quotes):
post-close corroboration file.
Summary — one line per finding:
- F-13 (self-subs BIF-8803/8804) — resolved: both were genuine redirects (BIF-8792/BIF-8793), code-verified merged; Task 2.2 is a real two-repo split, only the 0.267.0 release landing remains.
- F-14 (self-topup BIF-8708/8709) — still open, stronger: zero code trace across all three in-scope repos; board
Donelikely stale unless Madani/TPM confirms a no-diff fix. - F-20 (Meta WhatsApp Pricing) — substantially resolved: Phase-1 3/5 corroborated; only the descoped Task 1.4 and pricing-gated Task 1.5 remain.
- F-21 (Downgrade Webhook) — split: Phase 1 schema merged; Phase 2 logic confirmed unmerged — any Done board status there is a genuine conflict for Madani/TPM.
- New, unresolved: BIF-8813/PR #296 also carries
wa_balance_holds/wa_reconciliation_batchesmigrations mapping to no task-breakdown — flagged to TPM as unexplained scope.
These updates are reflected forward in 2026-07-21-sprint-02.md, where the live, actionable
versions of this evidence now live.