Sprint Review - WK25
Cycle 2026-06-15 → 06-21 · Recorded in Plane as BANA-1600. Scored with the delivery-first scorecard (SPACE / DORA / Flow). 236 work items · 86 done · 7 cancelled · 142 carried · 36.4% completion.
Executive Summary
Work shipped this cycle, by business theme (sourced from git):
- Sale - shift management (E4): multi-employee shift open/join/close, shift gate + waiting room, X/Z reports + cash reconciliation, per-device snapshots, shift history, and the real-time shift socket.
- Sale - cart & draft orders (E9): sale-cart endpoints/services, create-cart, first-cart-on-draft, bundler-group merge with attachment cap.
- Permissions UI (E11): the per-merchant policy-definition admin surface - grant tables, badges and identifiers.
- Helpdesk (E12): client + BO ticket experience - dynamic custom-field form builder, FieldMapper, the
fieldsDatamodel, and message reactions. Thepackages/helpdeskbuild, previously failing, now compiles clean. - Sale - KDS & kitchen (E8): KDS board (Pending → Cooking → Ready), send-to-kitchen, and KDS bill printing with printer selection.
- Commerce BO (E12): merchant-user management screen and user-merchant filters.
- Pricing (E10): fare-set cloning. Platform: search read-path refactor + ranking + highlight/exclude, SaleOrder covering index, IGNIS-native
/me.
Delivery Scorecard
Multi-dimensional by design (SPACE) - not collapsed to one number. Each dimension measures delivery and flow.
| Dimension | Score | Trend | Basis |
|---|---|---|---|
| Throughput | 100 | ▲ | 86 done vs ~47.5 six-cycle median (capped at 100) |
| Flow & Aging | 77 | ▲ | 33 of 142 open items (23%) aged > 2 weeks |
| Predictability | 68 | ► | throughput CoV 0.32 over WK20-25 (40, 67, 50, 45, 92, 86) |
| Quality | 78 | ► | 7 cancelled (3%); 41 bug items in cycle, 5 done |
| Sustainability | 54 | ▼ | done items concentrated among few assignees (top-2 share ~63%) |
| Delivery Health (roll-up) | 80 - Good | ▲ | 0.30·100 + 0.25·77 + 0.20·68 + 0.15·78 + 0.10·54 |
Planning signals - reported separately, not in Health:
- Commitment ratio ~6.9× - 236 items in the cycle vs a sustainable ~34 (≈17 active × 2). A planning signal for sizing, not a performance score.
- Completion 36.4% (86 / 236) - held down by a large carried backlog inside the cycle.
Definition of done
A 205_READY_TO_DEPLOY state was added on 2026-06-15 (group started): merged code progresses Ready-to-deploy → Ready-to-test → Done, and only QA-accepted work counts as 300_DONE. 14 items currently sit in 205_READY_TO_DEPLOY.
Value Delivered (EBM)
| Key Value Area | What landed this cycle |
|---|---|
| Current Value (usable now) | Helpdesk ticket experience (client + BO); permissions config UI; BO merchant-user screen; KDS board + send-to-kitchen; sale cart / draft orders |
| Time-to-Market (speed to ship/learn) | Ready-to-deploy / Ready-to-test gates; SaleOrder covering index; IGNIS-native /me |
| Ability-to-Innovate (future speed) | Multi-employee shift foundation (socket + report snapshots); helpdesk build restored; search read-path refactor + ranking; fare-set cloning |
| Unrealized Value (opportunity ahead) | Shift reports / cash-reconcile close-out (E4); KDS depth + self-order (E8); retail / tax / inventory foundations (E2/E1/E6); mobile client design |
Effort & Contribution
Context, not a leaderboard. Commits and LOC are activity proxies, not output - debugging, refactor, review and deletion are high-value and low-commit. Activity is shown next to outcomes.
| Member | Commits | Areas touched | Done (board) | What they built |
|---|---|---|---|---|
| Kien Truong | 45 | sale-renderer · sale · signal | 2 | Shift system (entry/open/join/gate/report/snapshot/history/devices), Z-report, KDS print, device settings, socket |
| Duc Bach | 35 | bo · client · core | 0 | Policy-definition permissions UI (grant table, badges, role-clone), i18n, UTC report payload |
| Hai Cao | 32 | sale · pricing | 5 | Draft-order first cart, bundler-group merge + attachment cap, fare-set clone |
| Tai Nguyen | 24 | client · bo (helpdesk) | 5 | Helpdesk ticket forms, category/template, nested dynamic fields, FieldMapper |
| Khoa Nguyen | 13 | sale-renderer · bo | 3 | Sale-screen rebuild, mobile sale view, temp-cart notify, SocketStatus |
| Phat Chung | 12 | sale · ledger | 0 | SaleOrder covering index, revenue-tier ledger config |
| Phat Nguyen | 10 (+2 IGNIS) | identity · core · POS | 6 | IGNIS /me + getUserInformation, BE auto-trim, POS table/reservation design |
| Viet Vo | 9 | sale · finance | 0 | Shift snapshot + open-shift socket, shift create/join, permission seeding, finance-account fix |
| Huy Pham | 9 | helpdesk | 3 | fieldsData model + migrations, ticket message reactions, sales-report timezone |
| Phuc Duong | 5 | search · core | 0 | Search read-path refactor, ranking relevance, highlight/exclude fields |
| Diem Phan | 4 | bo | 0 | BO merchant-user management screen |
| Toan Tran | 3 | overture · docs | 1 | Help-center + deploy/wiki updates |
Non-coding contribution (not visible in git): Le Linh - verify + PRD items; Anh Do - verification on report/table/product flows; Thuong Nguyen - POS table/reservation + mobile-client design; Nguyen Nguyen - onboarding/identity.
What Shipped - Detailed Work Log
- Sale - shift management (E4): ShiftEntryPanel + ShiftOpenJoin, ShiftGate/ShiftWaiting, SHIFT_CREATE/SHIFT_JOIN endpoints, getReport/createSnapshot + ShiftSnapshotPanel, shift devices section, table shift, signal-socket shift, refetch-on-close, shift history, Z-report template, X/Z reconcile screen (Kien · Viet Vo).
- Sale - cart & draft orders (E9): sale-cart + sale-cart-item endpoints/services, create_cart controller, first cart in draft order, merge order items by bundler group + cap attachment quantity (Kien · Hai Cao).
- Permissions UI (E11): policy-definition admin UI, grant table data, merchant-headquarter / identifier badges, custom-permission and role-clone badges, user-merchant filter + columns, UTC report payload (Duc Bach).
- Helpdesk (E12): ticket-category custom-field form builder, FieldMapper dynamic fields,
fieldsDatamodel + migrations, ticket message reactions (Tai · Huy). - Sale - KDS & kitchen (E8): KitchenBoard + KitchenTicket (Pending/Cooking/Ready), SendToKitchen, PrintKDSBillBtn with printer selection (Kien · Khoa).
- Commerce BO (E12): merchant-user screen + user-management flow (Diem Phan); BO user filter/columns (Duc Bach).
- Pricing (E10): clone fare-set + FareSet button (Hai Cao).
- Search / Platform: read-path refactor, ranking relevance, highlight/exclude fields (Phuc Duong); SaleOrder covering index, revenue-tier ledger (Phat Chung).
- Finance: finance-account isDefault fix (Viet Vo).
Project & Phase Progress
- Phase 2 (target Sep 2026): 86 done this cycle. The largest movers were the shift system (E4), the permissions UI (E11), BO + helpdesk (E12), and the first KDS work (E8, off zero).
- Burnup: scope continues to grow via bug intake (41 bug items) and carried backlog; phase progress advances on E4 / E11 / E12. The long poles are E5 Customer, E6 Inventory, E2 Retail (flat, scheduled for July). See Phase 2 Plan.
Epic Progress (Phase 2)
Directional (done child sub-issues + this-cycle deliverables). The bar is each epic's end-to-end Done signal. Baseline = 2026-06-14 snapshot.
| Epic | Owner | % (was→now) | Δ | Status |
|---|---|---|---|---|
| E1 Tax | Viet/Phat | 70→70 | 0 | on-track |
| E2 Commerce (retail) | Hai/Khoa | 95→95 | 0 | on-track (Jul build) |
| E3 Products (entitlement) | Hai/Khoa | re-scoped | - | at-risk |
| E4 Sale shift | Viet/Phat | 80→90 | +10 | on-track |
| E5 Customer (MST) | Hai/Khoa | 45→45 | 0 | at-risk (Jul-loaded) |
| E6 Inventory | Phat | 50→50 | 0 | at-risk (Jul-loaded) |
| E7 Finance | Viet/Phat | 85→86 | +1 | on-track |
| E8 Kitchen/self-order | Hai/Khoa | 0→15 | +15 | started |
| E9 Sale selling-exp | Hai/Khoa | 50→58 | +8 | on-track |
| E10 Pricing | Hai/Khoa | 45→50 | +5 | at-risk |
| E11 Permissions | Phat/Hai | 70→80 | +10 | on-track |
| E12 Commerce BO | Hai/Phat | 45→65 | +20 | on-track |
Bottlenecks & Flow
| Signal | Reading |
|---|---|
| Aging WIP | 33 of 142 open items aged > 2 weeks (27 > 4 weeks). Oldest clusters: Excel-import (BANA-890-894), Menu (BANA-902-907). |
| WIP distribution | open by state: 60 upcoming · 57 in-progress · 14 ready-to-deploy · 7 draft · 3 on-hold · 1 ready-to-test. |
| Ready-to-deploy queue | 14 items merged and waiting on deploy + QA acceptance before 300_DONE. |
| Concentration | done items are concentrated among few assignees (top-2 share ~63%). |
| Blocked | BANA-1140 (acting-user) is on an unmerged branch (feat/shift-variant-2), absent from develop. |
Carry-Over Analysis
142 items remain open. Age guidance: ≥3 wk → split/cancel · 2 wk → review · 1 wk → transfer.
| Bucket | Count | Age | Note |
|---|---|---|---|
| Aged backlog (Excel-import, Menu, old form/QA items) | ~33 | 3-15 wk | candidates to split/cancel |
| In-flight (shift polish, KDS depth 1359, addon/FBT 1248, acting-user 1140, mobile design 1592-1596) | ~57 | 1-3 wk | transfer to WK26 |
| Ready-to-deploy (incl. 677, 1234, 1257, 1291) | 14 | mixed | deploy → QA → Done |
| Upcoming / not started | ~60 | mixed | re-triage for WK26 |
By Module (estimated)
Estimated from title prefixes (no structured module field on cycle items); done items only.
| Module | ~Done | Note |
|---|---|---|
| Commerce / BO | ~13 | merchant-user, helpdesk, onboarding, PRDs |
| Sale (POS+BE) | ~14 | shift, cart/draft, KDS, sale-renderer, PRDs |
| Finance / Ledger | ~8 | ledger config, finance-account, PRDs |
| Inventory | ~6 | PRDs (stock operations) |
| Permissions / User | ~5 | policy-definition UI, PRDs |
| Tax | ~4 | PRDs |
| Helpdesk | ~4 | ticket model + UI, PRDs |
| Pricing | ~3 | fare-set |
| Platform / Search | ~3 | search read-path, index |
| Products | ~2 | PRDs |
By Label
| Label | Items | Done | Carry |
|---|---|---|---|
| Task | 111 | 44 | 67 |
| Bug | 41 | 5 | 36 |
| Improvement | 5 | 0 | 5 |
| Report | 1 | 1 | 0 |
A subset of done items carry no type label, so the per-label Done column (50) is below the 86 distinct done.
Risks & Blockers
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| Cycle size 236 (≈6.9× sustainable) | Completion % and planning signal diluted | Size WK26 to ~34; drain carry-over first | Phat (PM) / NX_HRM |
| Ready-to-deploy queue (14) depends on deploy + QA | Merged work waits before Done | Define a merge → deploy → QA → Done SLA | Phat / Le Linh |
| Aged backlog (33 items > 2 wk) | Predictability drag | Split/cancel the Excel-import + Menu clusters | Phat (PM) |
| BANA-1140 acting-user on unmerged branch | Sale acting-user attribution absent on develop | Merge or cherry-pick feat/shift-variant-2 | Phuc Duong |
| E5 / E6 / E2 flat with July start | Phase-2 Sep target risk | Assign business + design owners for Retail / Inventory | Phat / Hai |
Trends (6-cycle)
| Metric | WK20 | WK21 | WK22 | WK23 | WK24 | WK25 | Dir |
|---|---|---|---|---|---|---|---|
| Throughput (done) | 40* | 67 | 50 | 45 | 92 | 86 | ▲ |
| Completion % | 41%* | 55% | 50% | 49.5% | 53.8% | 36.4% | ▼ |
| Carry-over | 56* | 44 | 48 | 46 | 78 | 142 | ▲ |
| Delivery Health | 28* | 41* | 36* | 73 | 77 | 80 | ▲ |
* WK20-22 use the retired completion-weighted scale and are not comparable to WK23-25's delivery-first score.
Forecast (Monte Carlo)
From observed throughput (~45-92 done/cycle, WK21-25), treating Ready-to-deploy/test work as near-done.
| Milestone | Remaining | 50% | 85% |
|---|---|---|---|
| E4 shift close-out (reports + cash reconcile) | small | end-Jun | mid-Jul |
| E11 Permissions / E12 BO close-out | small-mid | WK27 | WK29 |
| E8 Kitchen/self-order | large | WK31 (Aug) | late-Aug |
| E5 Customer / E6 Inventory / E2 Retail | full | Aug | late-Aug |
Assumes E5/E6/E2 get owners and start in early July, and the Ready-to-deploy queue clears to Done.
Action Items
- ✅ Code-audit corrections applied (BANA-972/1099/1241/1296 → Done) - Phat
- ⬜ Size WK26 to ~34 items; drain carry-over first - Phat (PM)
- ⬜ Split/cancel the aged backlog (Excel-import 890-894, Menu 902-907) - Phat (PM)
- ⬜ Define a merge → deploy → QA → Done SLA for the Ready-to-deploy queue - Phat / Le Linh
- ⬜ Merge or cherry-pick BANA-1140 from
feat/shift-variant-2- Phuc Duong - ⬜ Finish E8 KDS depth + addon/FBT min-max UI (BANA-1248/1359) - Kien / Khoa
- ⬜ Assign business + design owners for Retail (E2) and Inventory (E6) - Phat / Hai
Code-Audit Correction Log
9 in-progress items were verified against code and git; 4 were found complete and set to Done. Coverage: 9 of the in-progress set.
| Item | Was | Now | Evidence |
|---|---|---|---|
| 972 BE auto-trim on submit | In-progress | Done | packages/core/src/models/common/validators.ts (trimmedString) wired into i18n + request schemas; ADR 0001-input-string-trim-convention.md |
| 1099 Helpdesk BE↔FE integration | In-progress | Done | Full module + client/BO screens integrated; packages/helpdesk compiles clean |
| 1241 Client ticket management UI | In-progress | Done | apps/client/.../report/hd-tickets/{list,show,create} on HelpDeskTicketApi + SLA tracker |
| 1296 Customer-order 404 fix | In-progress | Done | route /merchant/{id}/sale/sale-order/{id}/show defined in Sale.route.tsx (commit 42c6b0f9d) |
Verified still open: 973 product-description (schema only, no input) · 1248 addon/FBT (missing min/max selection UI) · 1359 KDS (no auto Ready notification) · 1140 acting-user (on unmerged branch).
Appendix - Data sources & method
- Git:
git log --all --since=2026-06-15 --until=2026-06-22on nx-seller (~201 commits) + IGNIS (2 commits). Per-author logs used for the Effort and Work Log sections. - Board:
retrieve_cycle(state counts) +list_cycle_work_items(per-item state/assignee/label/dates) for WK25, read 2026-06-21. - Scorecard: delivery-first formula (SPACE / DORA / Flow). Trailing throughput median over WK20-25.
- Estimates labeled as such: By Module is estimated from title prefixes; Epic % is directional.
Related Pages
- Sprint Reviews · Roadmap · Phase 2 Plan · Traceability Matrix
- Plane: BANA-1600 (Report)