Sprint Review — WK10
Cycle 2026-03-02 → 03-08 · Recorded in Plane as BANA-556. The Executive Summary is sourced from git; the metrics below mirror the Plane review.
Executive Summary
Leadership takeaway
This week (02/03 – 08/03) the two biggest themes were a full role-based access control system (roles, permissions and policy management, backend to UI) and real-time POS infrastructure — change-data-capture search indexing plus live updates for sale orders and transactions — alongside the VNPAY PhonePOS integration finally landing.
- Access Control — A complete role / permission / policy-definition system: backend authorization with seeding, plus full client CRUD for roles, permissions and policy grant / revoke against organizer and merchant targets.
- Real-Time POS — Change-data-capture search indexing went live (postgres → search), with live data flowing to the sale-order, transaction and transaction-detail screens.
- Payments — The VNPAY PhonePOS integration completed after a long-running effort, including the dedicated build flag and PhonePOS script, plus basic auth between sale and pricing services.
- Pricing & Architecture — Pricing extracted to a standalone service (with a portal pricing server) and inventory / finance / pricing seeding put in place.
- Tax & Product — Tax, Tax-Set and Tax-Type screens shipped on the client, with tax wired into product-variant creation end to end.
- Merchant & Onboarding — New client workspace menu, merchant settings, organizer onboarding, appearance settings and accent-color theming for the sale-renderer.
- Ledger & Printing — Ledger templates and fonts added, plus POS bill printing and Sunmi hardware handling.
Health Score: 56/100 — Intervention Required
| Dimension | Score | Weight | Contribution |
|---|---|---|---|
| Completion | 78.5/100 | 30% | 23.6 |
| Predictability | 63.4/100 | 25% | 15.9 |
| Workload Balance | 7.1/100 | 20% | 1.4 |
| Flow (no carry-over) | 33.3/100 | 15% | 5.0 |
| Quality (no cancel) | 100/100 | 10% | 10.0 |
Primary drag: Extreme workload imbalance (Hai Cao: 14 items vs 1 for several members) and high carry-over rate (33%). Completion and predictability are below target due to overcommitment (36 items — nearly double the historical average of ~17).
Note
This cycle is still in progress (ends 2026-03-08). Metrics reflect the state as of 2026-03-06.
Key Accomplishments
- RBAC system fully shipped (phat.nguyen + duc.bach) — Role, Permission, Policy APIs + full FE CRUD in one sprint
- VNPAY PhonePOS integration complete (phat.nguyen) — NXET-415, 7-week item finally delivered
- CDC postgres→Typesense pipeline (phuc.duong) — NXET-471, search infrastructure live
- Pricing extracted to standalone microservice (Hai Cao) — NXET-545, architecture improvement
- POS Sunmi V3 printer handling (kien.truong) — NXET-547, hardware integration
- Sale-renderer accent color + checkout (Khoa Nguyen) — NXET-541/542/543, POS branding customization
- Inventory + Inventory Tracking re-implemented (Hai Cao) — NXET-526
Urgent Attention
| Item | ID | Assignee | State | Age (wk) | Issue |
|---|---|---|---|---|---|
| [nx-order][be] Call to nx-merchant to sync | NXET-118 | Hai Cao, phuc.duong, phat.chung | ON_HOLD | 16 | Zombie — 16 weeks, must cancel or split |
| [nx-bo] Test ticket: Logout after password change | NXET-210 | giang.nguyen | UPCOMING | 14 | Zombie — 14 weeks, never started |
| [nx-poc] Setup auto report project | NXET-331 | Tuan Anh | IN_PROGRESS | 12 | Zombie — 12 weeks, must split or cancel |
| [nx-poc] Create roles screen | NXET-372 | Tuan Anh | IN_PROGRESS | 10 | Zombie — 10 weeks, stale |
| [nx-poc] Create report types screen | NXET-374 | Tuan Anh | IN_PROGRESS | 10 | Zombie — 10 weeks, stale |
| [pos365] Support POS 365 | NXET-420 | 6 assignees | IN_PROGRESS | 7 | Zombie — umbrella item, needs breakdown |
| [QA] Verify product, inventory, tax flow | NXET-532 | Hai Cao, Khoa Nguyen | UPCOMING | 0 | Target 2026-03-06 — not started |
| [QA] Verify invoice, printing, issuance | NXET-534 | Khoa Nguyen, kien.truong, viet.vo | UPCOMING | 0 | Target 2026-03-06 — not started |
Delivery
| Metric | WK10 | WK09 | 4-Cycle Avg | Target | Status |
|---|---|---|---|---|---|
| Committed | 36 | 17 | 21.5 | — | — |
| Completed | 24 | 16 | 18.0 | — | — |
| Completion % | 66.7% | 94.1% | 88.4% | 85% | ❌ |
| Cancelled | 0 (0%) | 1 (5.9%) | 0.5 (3.3%) | <7% | ✅ |
| Carried over | 12 (33.3%) | 0 (0%) | 3.0 (8.3%) | <10% | ❌ |
| Throughput/member | 2.0 | 1.1 | 2.4 | 2.0 | ✅ |
Misses:
- Completion at 66.7% — target 85%. Sprint overloaded with 36 items (2.1× historical avg of 17). 12 items remain unfinished with 2 days left.
- Carry-over at 33.3% — target <10%. 5 items are zombie carry-overs (age ≥7 weeks) that should have been cleaned before sprint entry.
Team Breakdown
| Member | Committed | Done | Cancel | Carry | Done% | Load | Flag |
|---|---|---|---|---|---|---|---|
| duc.bach | 6 | 6 | 0 | 0 | 100% | 6/5 | [OVERLOADED] |
| Hai Cao | 14 | 8 | 0 | 6 | 57% | 14/5 | [OVERLOADED] [LOW COMPLETION] |
| Khoa Nguyen | 8 | 5 | 0 | 3 | 63% | 8/5 | [OVERLOADED] [LOW COMPLETION] |
| kien.truong | 3 | 2 | 0 | 1 | 67% | 3/5 | [LOW COMPLETION] |
| phat.nguyen | 3 | 2 | 0 | 1 | 67% | 3/5 | |
| phuc.duong | 2 | 1 | 0 | 1 | 50% | 2/5 | [LOW COMPLETION] |
| Tuan Anh | 3 | 0 | 0 | 3 | 0% | 3/5 | [LOW COMPLETION] |
| giang.nguyen | 1 | 0 | 0 | 1 | 0% | 1/5 | [LOW COMPLETION] |
| phat.chung | 3 | 0 | 0 | 3 | 0% | 3/5 | [LOW COMPLETION] |
| viet.vo | 2 | 0 | 0 | 2 | 0% | 2/5 | [LOW COMPLETION] |
| hieu.vo | 1 | 0 | 0 | 1 | 0% | 1/5 | |
| tung.ma | 1 | 0 | 0 | 1 | 0% | 1/5 |
Note: Items with multiple assignees are counted per member. Total member-items (47) > cycle items (36). phat.chung, viet.vo, hieu.vo, tung.ma carry-overs are primarily shared umbrella items (NXET-420, NXET-546, NXET-118).
Carry-Over Analysis
| Item | ID | Assignee | Age (wk) | Recommendation |
|---|---|---|---|---|
| [nx-order][be] Sync user & product | NXET-118 | Hai Cao, phuc.duong, phat.chung | 16 | Cancel — ON_HOLD 16 weeks, no progress |
| [nx-bo] Test ticket logout | NXET-210 | giang.nguyen | 14 | Cancel — never started, 14 weeks overdue |
| [nx-poc] Setup auto report | NXET-331 | Tuan Anh | 12 | Cancel or Split |
| [nx-poc] Create roles screen | NXET-372 | Tuan Anh | 10 | Cancel or Split |
| [nx-poc] Create report types | NXET-374 | Tuan Anh | 10 | Cancel or Split |
| [pos365] Support POS 365 | NXET-420 | 6 members | 7 | Split — umbrella item, break into sub-items |
| [nx-seller] Loyalty module | NXET-508 | Hai Cao | 1 | Transfer to WK11 |
| [nx-seller] Promotion/Voucher module | NXET-509 | Hai Cao | 1 | Transfer to WK11 |
| [BE/pricing] Missing merchant ownership | NXET-530 | Hai Cao | 0 | Transfer to WK11 |
| [pos365] Fix bugs, finalize Ledger | NXET-546 | phat.chung, viet.vo | 0 | Transfer to WK11 |
| [QA] Verify product/inventory/tax | NXET-532 | Hai Cao, Khoa Nguyen | 0 | Transfer to WK11 |
| [QA] Verify invoice/printing | NXET-534 | Khoa Nguyen, kien.truong, viet.vo | 0 | Transfer to WK11 |
5 zombie items (age ≥3 weeks) MUST be split or cancelled — no exceptions per policy.
By Module
| Module | Items | Done | Done% | Carry |
|---|---|---|---|---|
| nx-packages | 14 | 9 | 64% | 5 |
| nx-apps | 11 | 11 | 100% | 0 |
| pos365 | 2 | 0 | 0% | 2 |
| (no module) | 9 | 4 | 44% | 5 |
By Label
| Label | Items | Done | Carry |
|---|---|---|---|
| Task | 34 | 24 | 10 |
| Bug | 2 | 1 | 1 |
Blockers & Risks
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| Hai Cao overloaded (14 items, 57% done) | High | Redistribute loyalty/promotion work, cap at 5 items | PM |
| Tuan Anh nx-poc items stale 10-12 weeks | High | Decision: continue or cancel POC. 0% completion. | PM |
| giang.nguyen NXET-210 untouched 14 weeks | Med | Cancel or reassign — appears abandoned | PM |
| NXET-118 ON_HOLD 16 weeks | Med | Cancel — no progress since Nov 2025 | PM |
| QA items (NXET-532, 534) not started on target day | Med | May slip to WK11, affecting release readiness | Hai Cao, Khoa Nguyen |
| pos365 umbrella (NXET-420) has 6 assignees, 7 weeks old | Med | Split into trackable sub-items with clear owners | phat.nguyen |
4-Cycle Trend
| Metric | WK06 | WK07 | WK09 | WK10 | Direction |
|---|---|---|---|---|---|
| Items completed | 19 | 13 | 16 | 24 | ▲ |
| Completion % | 100% | 92.9% | 94.1% | 66.7% | ▼ |
| Committed | 19 | 14 | 17 | 36 | ▲ |
| Carry-overs | 0 | 0 | 0 | 12 | ▼ |
| Avg items/member | 3.8 | 2.6 | 1.1 | 2.0 | ■ |
| Health Score | 81 | 78 | 78 | 56 | ▼ |
Pattern: Throughput is increasing (24 items done — highest ever), but commitment doubled (36 items) causing completion rate to crash. Previous 3 cycles had near-zero carry-over; WK10 broke the streak dramatically.
Forecast (Monte Carlo)
Based on last 4 cycles of throughput (mean: 18.0, σ: 4.1):
| Scope | Remaining Items | 50% confidence | 85% confidence |
|---|---|---|---|
| WK10 carry-overs | 12 | WK11 (Mar 08) | WK11 (Mar 08) |
| WK10 carry-overs minus zombies | 7 | WK11 (Mar 08) | WK11 (Mar 08) |
Action Triggers Fired
| Condition | Trigger | Recommended Action |
|---|---|---|
| Completion 66.7% < 75% | Overcommitment | Reduce WK11 to ≤20 items |
| Hai Cao 14 items (>5) | Overload | Redistribute, cap at 5 items |
| Khoa Nguyen 8 items (>5) | Overload | Redistribute, cap at 5 items |
| duc.bach 6 items (>5) | Overload | Monitor — 100% completion but at capacity |
| Tuan Anh 0% done | Struggling | Review POC commitment, pair or reassign |
| 5 items age ≥3 weeks | Zombie | Must split or cancel: NXET-118, 210, 331, 372, 374 |
| Max/Min load ratio 14:1 (>3×) | Imbalance | Rebalance assignments for WK11 |
| Health Score 56 < 60 | System issue | Dedicated retrospective required |
Recommendations
- Cancel zombie items (NXET-118, 210, 331, 372, 374) — 5 items with 10-16 weeks age, no meaningful progress
- Split NXET-420 (pos365 umbrella) into trackable sub-items with single owners
- Cap WK11 at 20 items — WK10's 36 items was unsustainable
- Cap Hai Cao at 5 items in WK11 — redistribute loyalty/promotion work
- Clarify Tuan Anh's POC status — 3 items, 0% done for 10+ weeks
- Run a retrospective — Health Score dropped from ~78 to 56, first time below 60
Related Pages
- Sprint Reviews · Roadmap · Changelog · Traceability Matrix
- Plane: BANA-556 — Sprint review 2026_WK10 (Report)