Sprint Review — WK12
Cycle 2026-03-16 → 03-22 · Recorded in Plane as BANA-619. The Executive Summary is sourced from git; the metrics below mirror the Plane review.
Executive Summary
Leadership takeaway
This week (16/03 – 22/03) the team advanced two big restaurant-ops foundations — table split/merge with a Kitchen Display System and the CDC-driven search pipeline on Kafka — alongside a full tax UI across the product catalog and a new landing page.
- Restaurant Ops (KDS & Tables) — Built the Kitchen Display System (stations, tickets, real-time events) plus table split/merge end-to-end, so orders flow cleanly from floor to kitchen.
- Tax System — Full tax UI across products, variants, organizers and merchants, with invoice tax-info wired into the merchant and organizer flows.
- Search & CDC Pipeline — Stood up the Debezium change-data-capture pipeline on Kafka with a dead-letter queue, and broadened search to cover descriptions for categories, devices, merchants and organizers.
- Messaging Backbone — Migrated key flows from BullMQ to Kafka, enabled auto-topic creation, and fixed a roundtrip check that was driving 90% CPU.
- Mobile POS — Fixed USB printing on Android 12+, shipped TestFlight distribution, printer template preview, and drag-to-reorder receipt items.
- Authorization — Policy-definition UI with grant/revoke for users, roles, merchants and organizers.
- Landing Page & Branding — New marketing landing page with applied design, imagery, a Vietnamese version, and a new "devglow-ember" theme.
- QA Foundation — Test environment onboarded with Playwright and AI-agent testing.
Health Score: 76/100 — Good
| Dimension | Score | Weight | Contribution |
|---|---|---|---|
| Completion | 100/100 | 30% | 30.0 |
| Predictability | 82.5/100 | 25% | 20.6 |
| Workload Balance | 10/100 | 20% | 2.0 |
| Flow (no carry-over) | 100/100 | 15% | 15.0 |
| Quality (no cancel) | 81.3/100 | 10% | 8.1 |
Scope note: The cycle snapshot captured 51 items at peak. 19 items were transferred out (de-scoped) before cycle close, leaving 32 items as the final committed count. Health score is based on the 32 finalized items.
Key Accomplishments
- Tax System (Khoa Nguyen, tai.nguyen) — Full tax UI across products, variants, organizers, merchants
- SaleCheck Split/Merge (Hai Cao) — Schema, services, controllers, WebSocket events for table split/merge
- Kitchen Display System (Hai Cao, Khoa Nguyen) — Backend KDS with stations, tickets, real-time events + frontend integration
- Kafka Migration (Hai Cao) — Migrated BullMQ to Kafka for merchant-created and payment-success flows
- CDC + Search Pipeline (phuc.duong) — Debezium setup, Search service refactor, CDC workflow tested end-to-end
- Mobile POS (kien.truong) — Android 12+ USB printer fix, TestFlight distribution, printer template preview
- QA Foundation (uyen.nguyen) — Environment setup with Playwright CLI/MCP and AI agent testing onboarding
- Authorization (duc.bach) — Policy definition UI, grant/revoke for users/roles/merchants/organizers
- Landing Page (tai.nguyen) — Project structure initialized
Urgent Attention
| Item | Identifier | Assignee | State | Age (weeks) | Issue |
|---|---|---|---|---|---|
| [FE/sale-renderer] UI Manager Order | NXET-436 | tai.nguyen | CANCELLED | 9 | Lingered 9 weeks before cancellation |
| 19 items de-scoped from cycle | — | multiple | Transferred | — | Moved out mid-sprint; check WK13 load |
Items from the snapshot with 0% completion (all transferred out):
- phat.nguyen — 4 items, 0 completed (all removed)
- thuong.nguyen — 2 items, 0 completed (all removed)
- viet.vo — 2 items, 0 completed (all removed)
- hieu.vo — 1 item, 0 completed (removed)
- tung.ma — 1 item, 0 completed (removed)
Delivery
| Metric | This Cycle | Last Cycle (WK11) | 4-Cycle Avg | Target | Status |
|---|---|---|---|---|---|
| Committed | 32 | 27 | 26.3 | — | — |
| Completed | 30 | 24 | 23.5 | — | — |
| Completion % | 93.8% | 88.9% | 89.9% | 85% | OK |
| Cancelled | 2 (6.2%) | 3 (11.1%) | 2.75 (10.5%) | <7% | OK |
| Carried over | 0 (0%) | 0 (0%) | 0 (0%) | <10% | OK |
| Throughput/member | 3.75 | 1.85 | 2.17 | 2.0 | OK |
Misses: None on finalized metrics. However, 19 items were de-scoped mid-sprint. If counted against original 51 committed, completion would be 58.8% — well below 85% target.
Team Breakdown
| Member | Committed | Done | Cancelled | Carry | Done% | Load | Flag |
|---|---|---|---|---|---|---|---|
| Khoa Nguyen | 10 | 9 | 1 | 0 | 90% | 10/5 | OVERLOADED |
| Hai Cao | 6 | 6 | 0 | 0 | 100% | 6/5 | OVERLOADED |
| tai.nguyen | 5 | 4 | 1 | 0 | 80% | 5/5 | — |
| phuc.duong | 4 | 4 | 0 | 0 | 100% | 4/5 | — |
| duc.bach | 3 | 3 | 0 | 0 | 100% | 3/5 | — |
| kien.truong | 3 | 3 | 0 | 0 | 100% | 3/5 | — |
| phat.chung | 1 | 1 | 0 | 0 | 100% | 1/5 | UNDERLOADED |
| uyen.nguyen | 1 | 1 | 0 | 0 | 100% | 1/5 | UNDERLOADED |
Carry-Over Analysis
| Item | Identifier | Assignee | Age (weeks) | Recommendation |
|---|---|---|---|---|
| (none in finalized cycle) | — | — | — | — |
19 items were removed from cycle before close. These should be tracked in WK13 to verify they didn't become zombies.
Age rules reminder:
- >= 3 weeks: MUST split or cancel (no exceptions)
- 2 weeks: review with assignee, split if > 50% remaining
- 1 week: transfer to next cycle, keep assignee
By Label
| Label | Items | Done | Carry |
|---|---|---|---|
| Task | 31 | 29 | 0 |
| No label | 1 | 1 | 0 |
Blockers & Risks
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| 19 items de-scoped mid-sprint — masks real completion rate | High | Audit WK13 for inflated carry-over load | phat.nguyen |
| Khoa Nguyen consistently overloaded (10 this week, 12 last week) | High | Cap at 5 items, redistribute to underloaded members | PM |
| 5 members had items assigned but completed 0 (all transferred out) | Med | Clarify commitment at sprint start | PM |
| NXET-436 lingered 9 weeks before cancellation | Low | Triage items > 3 weeks old weekly | PM |
4-Cycle Trend
| Metric | WK09 | WK10 | WK11 | WK12 | Direction |
|---|---|---|---|---|---|
| Items completed | 16 | 24 | 24 | 30 | ▲ |
| Completion % | 94.1% | 82.8% | 88.9% | 93.8% | ▲ |
| Avg items/member | 1.07 | 2.0 | 1.85 | 3.75 | ▲ |
| Carry-overs | 0 | 0 | 0 | 0 | ■ |
| Health Score | 78 | 75 | 76 | 76 | ■ |
Forecast (Monte Carlo)
Based on last 4 cycles of throughput (avg 23.5 items/cycle, 8-15 active members):
| Milestone / Module | Remaining Items | 50% confidence | 85% confidence |
|---|---|---|---|
| WK13 (27 committed) | 27 | Mar 29 | Mar 29 |
Throughput trending upward (30 completed vs 23.5 avg). WK13 has 27 items committed — achievable at current pace if workload is balanced and de-scoped items from WK12 don't inflate WK13 mid-sprint.
Action Triggers
| Condition | Fired? | Action |
|---|---|---|
| Completion < 75% for 2 consecutive cycles | No | — |
| Completion > 95% for 2 consecutive cycles | No | — |
| Any member > 5 items | YES — Khoa (10), Hai Cao (6) | Redistribute before next sprint |
| Any member < 70% done for 2 cycles | No | — |
| Carry-over item age > 2 weeks | YES — NXET-436 (9 weeks, cancelled) | Already cancelled; audit other aged items |
| Cancellation > 15% | No (6.2%) | — |
| Workload max/min ratio > 3x | YES — 10:1 ratio | Rebalance assignments |
| Health Score < 60 | No (76) | — |
Recommended actions for WK13:
- Cap Khoa Nguyen at 5 items max — redistribute surplus to duc.bach, kien.truong, phat.chung
- Audit the 19 de-scoped items — verify they landed in WK13 with proper assignees and aren't becoming zombies
- Confirm capacity with phat.nguyen, thuong.nguyen, viet.vo, hieu.vo, tung.ma before assigning WK13 items
Related Pages
- Sprint Reviews · Roadmap · Changelog · Traceability Matrix
- Plane: BANA-619 — Sprint review 2026_WK12 (Report)