26Q3 Adhoc Requests
Bucket initiative for small, unrelated adhoc requests handled by the Bifrost team in
26Q3. Each request is a self-contained user story with its own PRD file under
prds/; they do not share a single product theme beyond being adhoc work that
rolls up to Jira epic BIF-8695.
Per the repo's Jira alignment convention, jira_epic lives here on the initiative README
(not on the individual PRDs) so the manual per-AC sync is never accidentally triggered.
Each PRD references its own Jira Story key in its body.
Flagged exception — A11. Its Jira Story (BIF-8612) is currently parented under BIF-7949 ("26Q2 BIF
- Production Support"), not under this bucket's Epic BIF-8695 — it was folded into this tracker from a separate body of work rather than created here. Re-parenting it under BIF-8695 is a real Jira write and is left for the TPM to decide/execute, not done silently here.
Scope Changes
- Backend — billing/subscription sync, schedulers, Modpanel user operations, SSO owner webhook, Self Topup settings, email removal.
- Frontend — Custom Solution / Insights UI, subscription banner, Modpanel user index, Self Topup checkout.
Stories — per-story tracker (canonical)
This table is the canonical per-story home for the bucket. Each row is one self-contained
user story = one Jira Story under Epic BIF-8695, and it is priced, classed, pulled and
completed independently — the bucket is one container initiative (one Portfolio row, one Epic),
but nothing here shares a fate. The bucket is classed, not ranked: it takes no ## Priority
rank on the roadmap (a heterogeneous bucket can't be ordered by one integer, and an urgent adhoc
can outrank a ranked initiative) — instead each story carries a Class of Service and the roadmap
renders the bucket in its parallel ## Adhoc / Interrupt lane. This is why the per-story detail
lives here and not lumped into the roadmap: the roadmap carries only the container + an aggregate
rollup; this tracker carries the specifics. It is append-only — the bucket grows by adding
rows, never by restructuring the roadmap (see How the bucket grows).
Full doctrine + real-world grounding: .claude/reference/adhoc-interrupt-doctrine.md.
Story— stable identityA<n>, assigned in creation order and never reused/renumbered (keys the sprint queues; new adhocs get the next freeA<n>). Gaps (A5,A6) are intentional — those ids were retired when their stories moved out (see Moved out of this initiative).Class— per-story Class of Service (Kanban): 🔴 Expedite (customer-/revenue-/ security-facing — may preempt ranked work, WIP-limited toexpedite_wip_limitin flight + logged in## Expedite log) · 📅 Fixed-Date (hard external date — reusescommitment_date) · 🟡 Standard (normal pull-in fill, never ahead of ranked work) · ⚪ Intangible (cosmetic / cleanup, slack only). This is where "some items are customer-urgent" is expressed — and, via Expedite, where an adhoc can outrank a ranked initiative. A class, not a rank, so a new story slots in without renumbering. (Migrated 2026-07-09 from the old High/Med/Low tiers: High→Expedite, Med→Standard, Low→Intangible.)Status— live completion, the canonical per-story state:backlog→in-progress→in-review→done. The roadmap forecast row's% doneis just the rollupdone ÷ totalderived from this column; update the cell as work moves and the aggregate follows.BE·FE·QA·Mobile— canonical per-story staffing, one column per discipline (assigned 2026-07-08 by discipline + domain affinity + BE/QA headroom); the roadmapImplementors,capacity.mdAllocationand the Sprint-1 queues mirror these.—= that discipline isn't in the story'sScope. Separate header-keyed columns (not one merged cell) so the delivery drift linter reconciles each owner. No adhoc story touches Mobile yet — the column exists for growth.- Effort is deliberately unsized (captures-never-estimates) — these enter the sprint as goal-led-Kanban pull-in fill, not a capacity-boxed load.
| Story | Class | Status | Added | Scope | BE | FE | QA | Mobile | Jira Story | Summary (→ PRD) |
|---|---|---|---|---|---|---|---|---|---|---|
| A1 | 🔴 Expedite (reassigned BE-only 2026-07-19) | backlog | 2026-07-08 | BE | Satya | — | Yoddi | — | BIF-8750 | Block replace/delete of SSO Owner in Modpanel → prd |
| A2 | 🔴 Expedite | backlog | 2026-07-08 | BE | Satya | — | Yoddi | — | BIF-8751 | Listen to SSO Change Owner webhook → prd |
| A3 | 🔴 Expedite | backlog | 2026-07-08 | BE+FE | Hafriz | Syafrizal M. | Yoddi | — | BIF-8696 | Payment button for not-enabled SO clients → prd |
| A4 | 🟡 Standard | backlog | 2026-07-08 | BE+FE | Grehasta | Syafrizal M. | Yoddi | — | BIF-8749 | Re-invite pending Qontak One user → prd |
| A7 | 🔴 Expedite (reclassified 2026-07-19; owner corrected 2026-07-20) | backlog | 2026-07-08 | BE | Satya | — | Yoddi | — | BIF-8736 | Modpanel user index — last activity + masked export → prd |
| A8 | 🟡 Standard | backlog | 2026-07-08 | BE | Hafriz | — | Yoddi | — | BIF-8718 | IG Comment validity follows subscription end_date → prd |
| A9 | 🔴 Expedite (reclassified 2026-07-14) | in-progress | 2026-07-08 | FE | — | Syafrizal M. | Yoddi | — | BIF-8682 | Custom Solution page — Insights UI polish → prd |
| A10 | ⚪ Intangible | backlog | 2026-07-08 | BE | Madani | — | Yoddi | — | BIF-8747 | Remove e-commerce expiry-reminder email → prd |
| A11 | 🔴 Expedite | in-progress | 2026-07-14 | — | — | — | Yoddi | — | BIF-8612 | Seamless logout across Qontak One, Chat, and CRM — session-invalidation fanout (9 of 13 linked Jira Tasks already Done); BE/FE owners pending staffing → prd |
| A12 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-7775 | Self-service message retry in Modpanel → prd |
| A13 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-8236 | Modpanel account index — columns, filters, export → prd |
| A14 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-8298 | Script — bulk create Qontak One users (>100) → prd |
| A15 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-8467 | Modpanel account quota — recording & loyalty quotas → prd |
| A16 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-8806 | Quota API — reset usage on contract_id change → prd |
| A17 | 🟡 Standard | backlog | 2026-07-16 | — | — | — | Yoddi | — | BIF-8826, BIF-8585 | Launchpad invite email validation (1 email = 1 CID) → prd |
| A18 | 🟡 Standard | backlog | 2026-07-17 | BE | TBD | — | Yoddi | — | BIF-8901 | Modpanel subscription end_date follows Mekari Billing updates (stop false "about to expire" email after paid renewal) → prd |
| A19 | 🟡 Standard | backlog | 2026-07-17 | BE | TBD | — | Yoddi | — | BIF-8902 | Auto-resolve stale monitoring alerts when the anomaly clears in the datamart (Support › Monitorings) → prd |
| A20 | 🟡 Standard | backlog | 2026-07-17 | BE | TBD | — | Yoddi | — | BIF-8903 | Initial AI quota (qontakchat_ai_credit) stops resetting monthly — persists/carries over, no refill (Billing V1 & V3) → prd |
| A21 | 🔴 Expedite | backlog | 2026-07-21 | BE | Satya | — | Yoddi | — | BIF-9001 | Launchpad CRS role-name compatibility for new/custom company roles → prd · implementation Task BIF-8906 |
| A22 | 🟡 Standard | backlog | 2026-07-27 | BE | TBD | — | Yoddi | — | BIF-9093 | Add company name to consultant leader approval email subject → prd |
A18–A20 mirror their existing Jira allocations (BIF-8901, BIF-8902, and BIF-8903); their repository artifacts (rows + PRDs) were added 2026-07-17. A21 was minted with its own ID (BIF-9001) rather than reusing theirs.
A12–A17 are the 2026-07-16 BIF-8695 sync additions — five previously-unmirrored epic stories (A12–A15, A17) plus the quota-reset PRD (A16). Classed 🟡 Standard on 2026-07-19 per their live Jira priority (all P2/P3 → not Expedite; all functional → not Intangible).
Scope/BE/FE stay—(unstaffed) with QA defaulted to Yoddi (Lane B) until a staffing pass — classing is orthogonal to staffing. As 🟡 Standard they are pull-in fill, never ahead of ranked work, so classing adds no Expedite-log row and no WIP/preemption.
Progress rollup: 0 of 20 done (0%) as of 2026-07-27 — the count of Status: done rows over
total rows. This is the single number mirrored to the roadmap ## Portfolio progress & forecast
row; it grows/shrinks automatically as rows are added and Statuses move, with no roadmap
edit required beyond refreshing that one derived cell. A11 itself is in-progress (not done)
at the tracker level even though 9 of its own 13 linked Jira Tasks are already Done — see
prds/seamless-logout.md for that sub-breakdown. (Count rose from 11 to
15 on 2026-07-16: −2 for the Self Top-up stories moved out (old A5/A6), +6 for the BIF-8695 sync
additions A12–A17; to 18 on 2026-07-17 with A18/A19/A20 (🟡 Standard billing / monitoring-alert /
initial-AI-quota items); then to 20 with A21 (Launchpad/CRS compatibility incident) and A22
(consultant-approval email subject).)
Owner rollup (for the mirrors): BE — Satya (A1, A2, A7, A21), Hafriz (A3, A8), Madani (A10),
Grehasta (A4); A11 and A12–A17 BE/FE unstaffed (— until a staffing pass), A18–A20 BE-scoped
with owner TBD. FE — Syafrizal M.
carries the 3 staffed FE stories (A3, A4, A9; A1 reassigned BE-only to Satya 2026-07-19); A11
and A12–A17 remain unstaffed, while A18–A21 have no FE scope. QA — Yoddi primary on all tracker rows
(Lane B default), Izzul backup (initiative qa: only, not per-story). Izzul has ~1 effective
QA-day left this quarter. A11 (Seamless Logout) folded in 2026-07-14 from what had briefly been
drafted as its own standalone initiative, then a bifrost/engineering-q3-2026 bucket item — like
the A12–A17 sync additions its BE/FE owners are genuinely unassigned (not just unsized), so it isn't
added to Syafrizal M.'s or any BE engineer's committed load in capacity.md until a real owner is
staffed.
⚠️ FE is the binding constraint. 3 of the 8 remaining originally-staffed adhoc stories (A1–A10) carry FE work and all land on Syafrizal M., whose ranked initiative work now reads under at 0.89 after the 2026-07-19 Centralized SSO Token chunk (was 1.21; decision 0002 deferred SSO Phase 2 to Q4 —
capacity.md). The chunk clears the over-commit, not the constraint: it opens only ~5.5 effective FE-days of headroom, and these unsized adhoc FE stories are exactly what's meant to fill it — so FE stays the binding lane. They still have no reserved queue slot; they are pull-in-when-clear items, and any that overflow the thin headroom will slip to Q4 unless a second FE engineer is added — the same lever the roadmap/capacity docs already flag. See the Sprint-1 Deviations note. The BE distribution deliberately favours the deepest-headroom engineers (Madani 0.50, Satya 0.64) and keepsrelatedSSO/Modpanel stories (A1/A2) together on Satya. A7 moved off this FE-blocked set 2026-07-19 — reclassed 🔴 Expedite (matching Jira BIF-8736's 2026-07-17 bump toHighest - P0) and corrected back to BE-only Satya ownership on 2026-07-20: the last-activity column and masked export are an internal Modpanel admin-panel surface he can build end-to-end without booking Syafrizal M.'s FE queue, so it closes independent of this constraint. A1 moved off the same way 2026-07-19 — its FE half (block the Replace action, trial-delete confirmation popup) is the same internal Modpanel admin surface, so it was reassigned BE-only to Satya (its existing BE owner, keeping therelatedA1/A2 pair together) and no longer routes to ESCALATE. A11 and the A12–A17 sync additions are excluded from this count and from Syafrizal M.'s load — their owners are genuinely unassigned (not just unsized), so they carry no committed capacity until staffing lands. A21 is also excluded because it is BE-only; its BE/QA owners are assigned and it carries no FE capacity.
Expedite log
Append-only record of the bucket's 🔴 Expedite classifications. Classifying a story Expedite is
free; the act of pulling one in flight (in-progress/in-review) — where preemption actually
happens — must have a row here (linter BUCKET_EXPEDITE_UNJUSTIFIED). Preempting a ranked
initiative is also persisted into the displaced initiative's dated delivery/status/. WIP limit:
expedite_wip_limit: 3 in flight at once (Bifrost's chosen cap; linter BUCKET_EXPEDITE_WIP).
| Story | Date | Authorized by | Preempts | Reason |
|---|---|---|---|---|
| A1 | 2026-07-08 | addo.hernando@mekari.com | — (ESCALATE) | Security-facing: block replace/delete of the SSO owner in Modpanel. Expedite-eligible, but BE+FE and FE (Syafrizal M.) is over capacity → routes to ESCALATE (second-FE-engineer decision), not active preemption, this sprint. |
| A2 | 2026-07-08 | addo.hernando@mekari.com | — (gap-fill) | Security-facing: listen to the SSO change-owner webhook. BE-only and closeable on Satya alone → pulled in a gap in his blocked queue; displaces no ranked work. |
| A3 | 2026-07-08 | addo.hernando@mekari.com | — (ESCALATE) | Customer-/revenue-facing: payment button for not-enabled SO clients. Expedite-eligible, but BE+FE and FE over capacity → ESCALATE, not active preemption, this sprint. |
| A9 | 2026-07-14 | addo.hernando@mekari.com | Self-Subs (P6, Syafrizal M.'s FE queue) | Reclassified from ⚪ Intangible → 🔴 Expedite (Custom Solution Insights UI polish now needs to ship now, not queue behind everything else). Unlike A1/A3, A9 is FE-only (no BE half) and trivial — 3 ACs, a settings-menu entry, a sidebar-label rename, and removing a page title, no new capability — so there is no BE-without-FE "unfinishable WIP" trap forcing an ESCALATE. It closes this window by preempting the first genuinely not-yet-in-flight Ready item on Syafrizal M.'s queue: P4 (Qontak One Team) is already In Deployment and P5 (Sales Invoice + Jurnal) is In Progress per the 2026-07-13 Jira reconciliation, so Self-Subs (P6) is the item that actually yields. Pulled in-progress same day. |
| A11 | 2026-07-14 | TBD | — | Folded in 2026-07-14 from a standalone bifrost/engineering-q3-2026 bucket item. Classed Expedite reflecting reality already recorded in sprint reconciliation: the originating bug BIF-8570 has recurred as an escalated, off-plan, In Progress item across multiple sprint passes. Unlike A9, this is not a fresh preemption event — the work (9 of 13 linked Tasks) was already in flight before entering this tracker, and its per-repo owners are still TBD (pending Sprint 7), so no ranked Bifrost initiative yields FE/BE capacity to it yet. No formal Expedite authorization is on record — TPM should confirm the classification and name an authorizer. |
| A1 | 2026-07-19 | addo.hernando@mekari.com | — (BE-only, no preemption) | Reassigned BE+FE → BE-only on Satya (existing BE owner; keeps the related A1/A2 SSO/Modpanel pair together), applying the same rule as A7: both halves — the owner/is_trial checks and the block-Replace/confirmation-popup UI — are the internal Modpanel admin surface, untouched by clients/real users, so the BE engineer builds it end-to-end without booking Syafrizal M.'s FE queue. Supersedes the 2026-07-08 ESCALATE routing above: A1 no longer waits on the second-FE-engineer decision (ADR 0001) and closes without preempting ranked work (Satya pulls it behind A2, his Sprint-2 PULL-TO-CLOSE). |
| A7 | 2026-07-19 | addo.hernando@mekari.com | — (BE-only, no preemption) | Reclassified from 🟡 Standard → 🔴 Expedite, matching Jira BIF-8736's 2026-07-17 bump to Highest - P0 (flagged during Sprint 2 planning, sprint-02 #6 on Satya's queue). Reassigned BE-only from Satya to Grehasta same day: the Modpanel last-activity column + masked export is an internal admin-panel surface Grehasta can build end-to-end without booking Syafrizal M.'s FE queue, so unlike A1/A3 this Expedite closes without preempting any ranked work. Grehasta has a genuine gap right now — Qontak One BE and Self-Subs BE both fully shipped as of 2026-07-19; One CID BE is a flagged blocker pending PM/TPM confirmation, so it isn't absorbing his capacity either. |
| A7 | 2026-07-20 | addo.hernando@mekari.com | — (owner correction; no preemption) | Sprint-planning correction: A7 belongs to Satya, not Grehasta. Preserve the 2026-07-19 entry as history; this row supersedes only its owner. Satya pulls A7 after the related A2 → A1 pair. Live Jira still assigns BIF-8736 to Addo and remains an assignment-drift finding. |
| A21 | 2026-07-21 | addo.hernando@mekari.com | — (not yet pulled) | Customer-impacting upstream CRS role-name contract break caused login/consultant-mode failures for newly created Qontak One clients; rollback/backfill was initiated, and the Launchpad compatibility fix is tracked as an Expedite backlog item. |
A1/A2/A3 are still backlog as of 2026-07-08, so none of them is yet strictly log-required (seeded
to record the authorization and why FE capacity prevents them from actually preempting). A9 is the
bucket's first real preemption — see the roadmap ## Adhoc / Interrupt lane and the
Self-Subs 2026-07-14 status note for the propagated
record. A11 is already in-progress on entry (backdated production-support work), not a
preemption of ranked Bifrost work. A7 is also still backlog — BE-only and corrected to Satya,
so like A2 it's expected to PULL-TO-CLOSE without ever needing to preempt anything. The A12–A17 sync
additions are classed 🟡 Standard (2026-07-19) and carry no Expedite row until one is reclassed 🔴 and
pulled in flight. A21 is deliberately seeded in the log for its customer-impact rationale but remains
backlog; it is not an in-flight preemption until Jira leaves To Do.
Class ↔ Jira-priority realignment (through 2026-07-21). Every row's
Classagrees with its live Jira priority (P0/P1 = 🔴 Expedite; P2/P3 not) except A9 (JiraLow - P3), A11 (Jira `Medium
- P2
), and **A21** (JiraP2`), intentionally 🔴 Expedite per their rows above — cost-of-delay calls that outrun the P-level, kept not reverted. Making Jira match instead is a TPM priority write, not done here.
Pull rule (deterministic — how an adhoc gets scheduled)
A bucket takes no ## Priority rank — it holds stories of incompatible urgency (a 🔴 Expedite
payment button beside a ⚪ Intangible cleanup), so no single integer can order them. Handling is this
per-story pull rule, run off data already captured above (Class / Scope / owner) ×
capacity.md load × the sprint queue's blocked flags. It replaces "rank the bucket" with "derive
each pull," so every future adhoc is scheduled by the rule, never a raw decision. Generic contract:
.claude/reference/adhoc-interrupt-doctrine.md.
Eligibility gate — pull A<n> when both hold:
- E1 — queue gate: the owner's ranked (P1–P12) queue is blocked or between items — UNLESS
the story is 🔴 Expedite, which by definition may interrupt ranked work (the one exception,
bounded by
expedite_wip_limit+ the Expedite log above; 📅 Fixed-Date interrupts only as its date nears). 🟡 Standard / ⚪ Intangible never run ahead of ranked work. (source: sprint queue Status × theClasscolumn) - E2 — dependency: any
relatedpredecessor story is merged. (source: this tracker)
Pull order among eligible stories (lexicographic, deterministic):
- Class — 🔴 Expedite > 📅 Fixed-Date (near date) > 🟡 Standard > ⚪ Intangible. (source: the
Classcolumn) - Closeability. Can the story reach
donethis window with current staffing? A BE-only or FE-only story owned by an engineer with a slot is closeable; a BE+FE story is not closeable while FE (Syafrizal M.) has no free slot — starting its BE creates WIP that can't finish (Kanban waste). Post the 2026-07-19 SSO chunk his committed load reads 0.89 (was over at 1.21; decision 0002), but the ~5.5-day headroom that opened is pre-spoken-for by these unsized adhoc FE stories, so a new BE+FE Expedite still lands with no closeable FE slot → ESCALATE stands. (source:Scope×capacity.mdload) - Domain affinity — story shares a surface with the owner's current ranked work (warm context).
Expedite that isn't closeable → ESCALATE, not PREEMPT. A 🔴 Expedite story that can't close because its FE half has no slot is not satisfied by pulling its BE — the priority is met by fixing the constraint (the FE second-engineer decision the capacity docs already flag), not by starting unfinishable WIP. So the rule emits: a completion plan (closeable stories, in pull order), a PREEMPT set (Expedite pulled ahead of ranked work — logged), and an escalation list (Expedite blocked only by the FE constraint).
Each sprint's adhoc rows render this rule's output as an explicit PULL-TO-CLOSE / BE-advance /
PREEMPT / ESCALATE verdict per story. Verdicts are scheduling commitments, not completion
states — PULL-TO-CLOSE means "pull and finish this sprint", never "already closed"; only a
sprint:reconcile recheck evidences completion. Render them with 🎯, never 🟢/✅ — see the current sprint's adhoc queues. The rule consumes the tracker's
captured fields and derives scheduling; it re-declares no priority, effort, or staffing. A12–A17 are
now classed 🟡 Standard (2026-07-19), so the rule may schedule them as pull-in fill once their
Scope/owners are staffed; as Standard they never run ahead of ranked work.
How the bucket grows (adding a new adhoc)
The bucket is designed to absorb new adhoc requests mid-quarter without touching the roadmap
## Priority ranks. To add one:
- Author the PRD under
prds/(same lightweight format as the existing ones — a single self-contained user story with a Section-8 story table). - Append a tracker row above with the next free
Storyid (currentlyA23; preserve any IDs already allocated in Jira), itsClass(🔴 Expedite / 📅 Fixed-Date / 🟡 Standard / ⚪ Intangible),Status: backlog, today'sAddeddate,Scope,Owners, Jira Story key, and summary. - Mint the Jira Story under Epic BIF-8695 (per-user-story, never per-AC — use
jira-alignment-check), and mirror its key into the row. Create Tasks viasprint-jira-synconly when someone actually starts it. - Mirror staffing into the roadmap
Implementors(union),capacity.mdAllocation(adhoc-q3-2026 (DISC) TBD— no man-days), and, if it's being worked this sprint, the relevant Sprint-1 queue as a pull-in row. If it's 🔴 Expedite and you pull it in flight, add an## Expedite logrow (WIP ≤3 in flight) and, if it displaces ranked work, a note in that initiative's dateddelivery/status/. - Refresh the rollups — the tracker's Progress line (
done ÷ total), the roadmap forecast% donecell, and the roadmap## Adhoc / Interrupt laneclass buckets. The bucket's lane row, Portfolio row and Epic do not change — that stability under growth is the whole point of the container model.
What you never do: give a new adhoc its own roadmap ## Priority rank (a bucket is classed, not
ranked — that would renumber P1…Pn on every request), or split the bucket into multiple Epics.
Per-story urgency is its Class here; the container keeps one stable lane row.
QA Lane
Lane B (keeps a human QA gate) — advisory, as of 2026-07-08.
- Basis: team-policy safe default. Every Bifrost initiative is Lane B, and these adhoc
stories touch billing validity (A8, A18), AI quota accounting (A20), SSO/Modpanel owner-access
controls (A1, A2, A7), a payment button (A3), cross-product session invalidation (A11), and the
CRS role-name contract (A21) — money- and
security-adjacent surfaces where a silent failure reaches paying customers. The 2026-07-16
sync additions (A12–A17 — Modpanel operations, quota API, Launchpad invite validation) inherit
the Lane B default pending a per-story
qa-lane-advisorpass. - Owner: addo.hernando@mekari.com. Scope: the composite AC ids in each PRD's Section-8 story tables; QA runs per-story as each is pulled.
- Set as the conservative default without a full
qa-lane-advisorpass. A genuinely trivial item (e.g. A10 remove-email, A9 UI polish) may warrant a lighter per-story gate — re-confirm withqa-lane-advisorif the bucket is ever sized. Advisory-only; no CI gate. (A9's Class changed to Expedite 2026-07-14 — that's urgency, an orthogonal axis to QA risk; it's still one of the two lowest-risk stories in the bucket for QA-gate purposes.)
Excluded epic children (not authored as PRDs)
These Story-type children of BIF-8695 were deliberately not mirrored as PRDs here:
| Jira Story | Status | Reason |
|---|---|---|
| BIF-8593 | To Do | Empty description; belongs to the separate qontak-one-team initiative, not adhoc work. |
| BIF-8717 | Done | QA-support-only (Desty broadcast-sidebar verification); already shipped, no build spec. |
Task-type children of the epic (e.g. BIF-8829–8834, BIF-8876, BIF-8880 — Qontak One
Settings/Insights work items; BIF-8723, BIF-8784) are work items under their owning
stories, not PRDs, per the repo's Jira alignment convention.
Moved out of this initiative
The Self Top-up stories below were tracked here as A5 and A6; those A<n> ids are now
retired (never reused) and the PRDs live under the Self Topup initiative.
| Jira Story | Now lives in | Reason |
|---|---|---|
| BIF-8787 | self-topup | Child of Self Topup Epic BIF-7797, not adhoc Epic BIF-8695. Moved 2026-07-16. |
| BIF-8788 | self-topup | Child of Self Topup Epic BIF-7797, not adhoc Epic BIF-8695. Moved 2026-07-16. |