Skip to content

Sprint Review — WK22

Cycle 2026-05-25 → 05-31 · Recorded in Plane as BANA-1219. Numbers below are the end-of-cycle snapshot, after a code audit corrected 5 mislabeled items.

36/100 — Intervention
50%Completion (50/100)
48Carry-over (48%)
2%Cancelled
7Members overloaded

Executive Summary

~695commits
18contributors
~99commits/day

Leadership takeaway

This past week (25/05 – 01/06) the team focused on two fronts: security & access (role/store-based RBAC) and a new payment-integration system — while also opening up revenue reporting, HQ→store product sync, and offline POS selling.

  • Security & Access — Finished the role-management screen (added a cashier role), per-feature permissions (e.g. invoices), automatic login recovery on both apps, staff-group management + availability schedules.
  • Reporting & Analytics — Launched revenue reporting (charts + configurable filters, defaults to today); reports now run on the offline build too.
  • Payments — New payment-integration system: auto-confirmation, auto-redirect on success; transaction summaries shown even offline.
  • Products, Inventory & Pricing — Bulk variant creation with stock checks; system-issued unique product IDs; inventory search; price-group updates.
  • Product Sync — Automatic product sync from headquarters (HQ) down to multiple stores, with cloud file storage (S3).
  • Restaurant / Tables — New table setup per store, optional guest name/phone capture, fixes to order-cancel sync & room navigation.
  • Offline POS — Restructured the desktop app; added reservations, cash book, and revenue reporting that work offline.
  • Finance & E-invoice — Cleaned up transaction vouchers, void banner, tax-method validation on invoices.

Health Score: 36/100 — Intervention required

DimensionScoreWeightContribution
Completion (50% vs 85% target)58.830%17.6
Predictability3025%7.5
Workload balance (max 24 / min 1)4.220%0.8
Flow (carry-over 48%)415%0.6
Quality (cancel 2%)9410%9.4
Total36

Key Accomplishments

  • Per-merchant Casbin authorization + alpha PG-HA / CDC infra — Phat
  • commerce/sale/identity stabilization — onboarding backfill, combo snapshot, pricing-per-SaleOrderItem, JWT role domain — Hai Cao
  • FE auth-recovery + merchant-scope + product sync + i18n — Khoa
  • Inventory cost/COGS + tax-info / Vietnam-address via API + Citizen-ID (CCCD) validation — Viet Vo
  • Inventory Typesense search + CDC cascades — Phuc Duong
  • Product sync event bus + BullMQ workers — Huy Pham
  • Ledger job-status + websocket + UTC fix — Phat Chung
  • POS Tauri: native print, ReservationService, cancel order + kitchen ticket — Kien

Urgent Attention

Items carried into WK23 that need immediate action — all verified incomplete in the code audit below.

GroupItemsIssue
Menu setup (POS)BANA-902…907Not started — full feature group carried
Excel importBANA-890…894Not started — full feature group carried
Tax book S1a (Path A)BANA-1107BE done, UI design not finalized — blocks UAT
Store user mgmt / RBAC treeBANA-677, 1164, 1140Permission-tree UI incomplete
Partial-scope carryBANA-729, 750, 730, 932, 759, 509, 512Core shipped, gaps remain

7 members over the 5-item ceiling

Hai Cao (24), Khoa (18), Phuc Duong (10), Phat (9), Duc Bach (7), Viet Vo (6) all exceeded the sustainable load. Redistribution was required before WK23 — see Action Triggers.

Delivery

MetricWK22 (corrected)WK21 (frozen)TargetStatus
Committed100123
Completed5068
Completion %50%55%85%Miss
Cancelled2 (2%)11 (9%)<7%OK
Carried over48 (48%)44 (36%)<10%Miss
Throughput/member (~16)3.14.32.0OK

Misses:

  • Completion 50% vs 85% target — root cause: committed 100 items against a sustainable ~32 (16 members × 2).
  • Carry-over 48% — overcommitment cascaded; 48 items moved to WK23.

Snapshot, not live

These are the end-of-cycle numbers as reviewed. The cycle now shows only 52 Done + 2 Cancelled because the 48 incomplete items were moved to WK23 after this review. Compare WK22 ↔ WK21 only (older closed cycles have no frozen snapshot → n/a).

Team Breakdown

MemberCommittedDoneDone%Load (/5)Flag
Hai Cao24313%4.8xOVERLOADED · LOW-COMPLETION
Khoa Nguyen181583%3.6xOVERLOADED
Phuc Duong10770%2.0xOVERLOADED
Phat (PM)9556%1.8xOVERLOADED · LOW-COMPLETION
Duc Bach7343%1.4xOVERLOADED · LOW-COMPLETION
Viet Vo6233%1.2xOVERLOADED · LOW-COMPLETION
Phat Chung / Kien / Huy3 each2 / 2 / 10.6xLOW-COMPLETION

Low Done% ≠ low output

Low Done% on senior BE is a ticket-hygiene signal, not performance — git shows large merged volumes. The audit alone lifted Hai Cao 1→3, Phuc Duong 6→7, Duc Bach 0→3.

Carry-Over Analysis

48 items moved to WK23. Categorized by the code audit:

CategoryItemsAgeRecommendation
NOT-DONE — Menu setupBANA-902…9071 wkTransfer to WK23, keep assignee
NOT-DONE — Excel importBANA-890…8941 wkTransfer to WK23, keep assignee
NOT-DONE — RBAC tree / store userBANA-677, 1164, 11401–2 wkReview with assignee; split if >50% remains
NOT-DONE — Tax S1a UIBANA-11071 wkTransfer — UAT-blocking, prioritize
PARTIAL — core shipped, gapsBANA-729, 750, 730, 932, 759, 509, 5121 wkTransfer with reduced scope

No zombie items yet — but the chain is forming

WK21 carried 44, WK22 carried 48. None individually >2 weeks yet, but the rising chain is the early signal of zombie carry-over. Split or cancel at WK23 planning before any item ages past 2 weeks.

By Label

Of the 54 items still in the cycle (52 Done + 2 Cancelled, post-carry-over):

LabelIn cycleDoneCancelled
Task50482
Bug440

Label split of the full 100 committed isn't reconstructable post-carry-over (the 48 moved items took their labels to WK23). Figures above are the verifiable remainder.

Blockers & Risks

DoD still open for early-June UAT

KDS (send-to-kitchen) · POS shift open/close + cash reconciliation · X/Z-report · instant e-invoice issuance at POS (UI) · all-system revenue dashboard · supplier payables. Shift-management refactor is need-review (blocks open/close shift). Alpha final deploy pending.

RiskImpactMitigationOwner
Overcommitment 2 cycles runningHighCap WK23 at ~32 items; cut 15%Phat (PM)
Hai Cao 24 items / 13% doneHighRedistribute BE load before WK23Phat (PM)
Tax S1a UI (BANA-1107) UAT-blockingHighPrioritize in WK23Tax squad
Shift refactor need-reviewMedLand feat/shift-variant-2 in Phase 2POS squad

4-Cycle Trend

MetricWK19WK20WK21WK22Direction
Items completed35406850■ stable-ish
Committed35*41*123100▲ rising (bad)
Completion %n/a*n/a*55%50%▼ declining
Carry-overn/a*n/a*4448▼ worsening
Health Scoren/a*n/a*n/a*36— first scored

* WK19/20 have empty snapshots → completion/carry marked n/a, not fabricated. Pattern: completion collapses when committed size is large (100–123 vs sustainable ~32 = 16 members × 2).

Forecast

Monte Carlo forecast needs ≥3 cycles of trustworthy throughput; only WK21 + WK22 have reliable counts (WK19/20 snapshots empty). Deferred until WK23–WK24 give a stable 3-cycle base. Naive throughput so far ≈ 50–68 items/cycle, but completion-rate volatility (55% → 50%) makes any date projection low-confidence today.

Code-audit correction log

Board said incomplete; code proved Done (corrected 45 → 50):

ItemWasNowEvidence
BANA-1143 Inventory Typesense collectionIn-progressDoneinventory.collection.ts + mapper + CDC enrichment
BANA-1175 Ledger websocket status jobIn-progressDonewebsocket.component.ts + notification service + worker emit
BANA-516 Integrate invoice for saleUpcomingDonePAYMENT_SUCCESS → handlePaymentSuccess() full path
BANA-933 Product Variant Option (BE)UpcomingDoneproduct-option schema + service + controller
BANA-935 Map variant↔option comboUpcomingDoneproduct-variant-option schema + repo + controller

Coverage: ~25 of 50 high-risk items audited by hand → 50% completion is a verified floor, not a ceiling. The 2 cancelled items: BANA-764 (reporting payments endpoint), BANA-838 (POS no-promo flow).

Action triggers fired

TriggerDetailAction
Overcommitment (<75% × 2 cycles)WK21 55%, WK22 50%Reduce next sprint by 15%
Overload (>5 items)Hai Cao 24, Khoa 18, Phuc Duong 10, Phat 9, Duc Bach 7, Viet Vo 6Redistribute before WK23
Workload imbalance (>3x)24 : 1Rebalance
Zombie carry-over (chain forming)WK21(44) → WK22(48)Split or cancel at planning
Health < 6036/100Dedicated retrospective
Board ≠ reality5 mislabeled, found by code auditMove ticket to Done on PR merge

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.