Sprint Review — WK14
Cycle 2026-03-30 → 04-05 · Recorded in Plane as BANA-739. The Executive Summary is sourced from git; the metrics below mirror the Plane review.
Executive Summary
Leadership takeaway
This week (30/03 – 05/04) the team shipped two big foundations — a restaurant floor / table / seating editor for dine-in POS and a complete fare & pricing configuration system — alongside self-service account recovery (forgot-password / email verification) and the Overture marketing site wired to the Outreach lead-capture API.
- Restaurant Floor & Seating — A visual floor-plan editor: drafting floor and table management, drag/snap canvas with zoom controls, seat and table placement, batch zone creation, and an aggregate layout/zone endpoint backing it.
- Fare & Pricing System — End-to-end fare configuration: fare-set CRUD with filters and pagination, a default-price wizard, status-change guards, inline rule upserts, plus a REST API for cost / fare / tax pricing configuration.
- Account Recovery & Email — Forgot-password and email-verification flows across backend interfaces and client screens, a reusable mail component, and dual-language HTML email templates.
- Overture + Outreach — The marketing site gained error/404 pages, a phone input, CTA wiring, and full lead-capture forms integrated with the Outreach API over WebSocket, plus a subscriber list and statistics service.
- POS Billing — Sale-order split shipped, plus cart customer/item state hooks for the POS client.
- Sale Renderer Redesign — New dashboard widgets and pie chart, refreshed sign-in, settings and invoice screens, sidebar and header user menu.
- Platform Hygiene — A unified deletion-policy service wired into merchant / product / sale-channel / sale-order controllers, explicit IIAPI client naming (no implicit default), and crash-recovery for pending jobs at server startup.
Health Score: 67/100 — Needs Attention
| Dimension | Score | Weight | Contribution |
|---|---|---|---|
| Completion | 89.6/100 | 30% | 26.9 |
| Predictability | 82.2/100 | 25% | 20.6 |
| Workload Balance | 9.5/100 | 20% | 1.9 |
| Flow (no carry-over) | 58.2/100 | 15% | 8.7 |
| Quality (no cancel) | 91.0/100 | 10% | 9.1 |
Improved from WK13's 48 (Intervention Required). Still dragged by workload imbalance (9.5) and carry-over (58.2).
Methodology note
30 of 67 items were added mid-sprint (Mar 30+), of which 28 were completed — many appear to be retroactive tracking of already-done work. The headline 76.1% completion is inflated. Pre-sprint baseline: 37 items committed, 23 completed = 62.2% — below the WK13 review's recommendation to "stop mid-sprint bulk additions."
Key Accomplishments
- S3 folder-level organization — full stack (Hai Cao) — NXET-689/690/691/692: IGNIS StaticAsset prefix support + BE/FE for single-bucket production
- Overture forms + Outreach API integration (Tai Nguyen) — NXET-695/696/697/698/699/700/715: All 5 inquiry forms + newsletter wired to Outreach API
- SaleOrder split/merge with SaleCheck (Hai Cao) — NXET-590: Core POS billing split/merge
- Loyalty module (Hai Cao) — NXET-508: Module completed end-to-end
- Pricing REST API (Hai Cao) — NXET-693: Cost, fare, tax configuration endpoints
- POS design completed (Thuong Nguyen) — NXET-562: WebPOS + HandheldPOS layouts. NXET-648: Floor/table setup designed
- Ledger generation pipeline (Phat Chung) — NXET-685/712/735/736: E2E flow, report 1a, crash recovery, BOM schema
- Commerce bug fixes (Phuc Duong, Khoa, Hai) — NXET-641/642/666/669/671/673/674: Archived product immutability, variant PATCH, product list filtering, category/variant deletion guards
- Coffee Shop launch + VNPAY staging (Kien, Khoa, Phat) — NXET-645/646: Internal test environment operational
- Outreach service onboarding (Huy Pham) — NXET-713/714: New member ramped up, 2/2 items delivered
- Merchant deletion + fare system (Phuc Duong, Duc Bach) — NXET-728/725/732
- Invoice onboarding (Viet Vo) — NXET-726/731/733: Schemas, APIs, error handling for invoice service
Urgent Attention
| Item | ID | Assignee(s) | State | Age (wks) | Issue |
|---|---|---|---|---|---|
| Refactor invoices + VNPAY API | NXET-419 | viet.vo | In Progress | 12 | ZOMBIE — 3rd consecutive sprint flagged. Must split or cancel. |
| Implement Invoice Page | NXET-449 | tai.nguyen | Upcoming | 11 | ZOMBIE — blocked by NXET-419, never started |
| Integrate invoice for sale | NXET-516 | viet.vo, tai.nguyen | Upcoming | 5 | ZOMBIE — blocked by NXET-419 |
| QA: verify product/inventory/tax | NXET-532 | Khoa, Hai | Upcoming | 5 | ZOMBIE — flagged since WK10 review (NXET-556). Never started across 4 sprints. |
| VNPAY SMS verification | NXET-561 | phuc.duong | In Progress | 4 | ZOMBIE — in progress 4 weeks |
| 5 commerce validation bugs | NXET-675/676/677/678/672 | Khoa, phat.nguyen | Upcoming | 1 | Assigned to [OVERLOADED] [LOW COMPLETION] members |
| Legal/tax validation | NXET-702 | viet.vo | Upcoming | 1 | Assigned to [LOW COMPLETION] member |
Delivery
| Metric | WK14 | WK13 | WK12 | WK11 | 4-Cycle Avg | Target | Status |
|---|---|---|---|---|---|---|---|
| Committed | 67 | 73 | 32 | 26 | 49.5 | — | — |
| Completed | 51 | 44 | 30 | 23 | 37.0 | — | — |
| Completion % | 76.1% | 60.3% | 93.8% | 88.5% | 79.7% | 85% | ⚠️ |
| Cancelled | 2 (3.0%) | 2 (2.7%) | 2 (6.3%) | 3 (11.5%) | 2.3 (5.9%) | <7% | ✅ |
| Carried over | 14 (20.9%) | 27 (37.0%) | 0 (0%) | 0 (0%) | 10.3 (14.5%) | <10% | ⚠️ |
| Throughput/member | 4.6 | 4.0 | 3.75 | 2.9 | 3.8 | 2.0 | ✅ |
Misses:
- Completion at 76.1% — target was 85%. Improved from WK13's 60.3% but still below target. Pre-sprint baseline is only 62.2% (23/37). Mid-sprint additions (30 items, 93% done) inflate the headline number.
- Carry-over at 20.9% — target was <10%. Improved from WK13's 37.0%. All 14 carry-over items come from the pre-sprint baseline (12/37 = 32.4% carry-over rate on original commitment).
Mid-sprint addition breakdown:
| Period | Items Added | Completed | Carry | Done% |
|---|---|---|---|---|
| Pre-sprint (before Mar 30) | 37 | 23 | 12 | 62.2% |
| Added Mar 30-31 | 15 | 13 | 2 | 86.7% |
| Added Apr 1-5 | 15 | 15 | 0 | 100% |
| Total | 67 | 51 | 14 | 76.1% |
Pattern: 15 items added Apr 1-5 (all completed on creation day) are retroactive work tracking, not sprint-planned work. Same pattern flagged in WK13 review.
Team Breakdown
Note: items with multiple assignees are counted for each member.
| Member | Committed | Done | Cancelled | Carry | Done% | Load | Flag |
|---|---|---|---|---|---|---|---|
| Khoa Nguyen | 21 | 13 | 1 | 7 | 62% | 21/5 | [OVERLOADED] [LOW COMPLETION] |
| tai.nguyen | 17 | 14 | 0 | 3 | 82% | 17/5 | [OVERLOADED] |
| Hai Cao | 14 | 12 | 0 | 2 | 86% | 14/5 | [OVERLOADED] |
| phat.nguyen | 14 | 7 | 1 | 6 | 50% | 14/5 | [OVERLOADED] [LOW COMPLETION] |
| phuc.duong | 8 | 7 | 0 | 1 | 88% | 8/5 | [OVERLOADED] |
| viet.vo | 6 | 3 | 0 | 3 | 50% | 6/5 | [OVERLOADED] [LOW COMPLETION] |
| phat.chung | 5 | 4 | 1 | 0 | 80% | 5/5 | |
| duc.bach | 4 | 3 | 0 | 1 | 75% | 4/5 | |
| kien.truong | 4 | 4 | 0 | 0 | 100% | 4/5 | |
| thuong.nguyen | 3 | 3 | 0 | 0 | 100% | 3/5 | |
| huy.pham | 2 | 2 | 0 | 0 | 100% | 2/5 |
Context:
- phat.nguyen's 50% reflects PM/PO coordination load (coffee shop launch, VNPAY staging, bug triage) — not underperformance. 14 items includes co-assignment on 5 commerce bugs he triaged but are engineering-owned.
- Khoa's 21 items includes heavy co-assignment. Many carry-over items are bugs he's listed on as reviewer, not primary owner.
- viet.vo's 50% is driven by NXET-419 (12-week zombie invoice refactor) blocking 2 other items.
Carry-Over Analysis
| Item | ID | Assignee(s) | Age (wks) | Recommendation |
|---|---|---|---|---|
| Refactor invoices + VNPAY API | NXET-419 | viet.vo | 12 | MUST split or cancel — 3rd sprint flagged. No exceptions. |
| Implement Invoice Page | NXET-449 | tai.nguyen | 11 | MUST split or cancel — blocked by NXET-419 |
| Integrate invoice for sale | NXET-516 | viet.vo, tai.nguyen | 5 | MUST split — blocked by NXET-419 |
| QA: product/inventory/tax | NXET-532 | Khoa, Hai | 5 | MUST split — flagged since WK10. 4 sprints unstarted. |
| VNPAY SMS verification | NXET-561 | phuc.duong | 4 | MUST split — in progress 4 weeks |
| Client-side max length | NXET-638 | Khoa, Hai | 2 | Review with assignee |
| Overture pricing page | NXET-649 | phat.nguyen, tai.nguyen | 2 | ON_HOLD — confirm hold reason |
| Prevent product self-parent | NXET-672 | Khoa, phat.nguyen | 1 | Transfer to WK15 |
| Validate fare non-negative | NXET-675 | Khoa, phat.nguyen | 1 | Transfer to WK15 |
| Enforce ARCHIVED terminal | NXET-676 | Khoa, phat.nguyen | 1 | Transfer to WK15 |
| Require activation before archive | NXET-677 | Khoa, phat.nguyen | 1 | Transfer to WK15 |
| Persist SKU update | NXET-678 | Khoa, phat.nguyen | 1 | Transfer to WK15 |
| Legal/tax validation | NXET-702 | viet.vo | 1 | Transfer to WK15 |
| Refactor products flow | NXET-711 | duc.bach | 1 | Transfer to WK15 |
Repeat offenders: NXET-419 (12w) and NXET-532 (5w, originally flagged in WK10 review NXET-556) have been carried across 3-4 sprints with no resolution despite being flagged in every review.
By Label
| Label | Items | Done | Done% | Carry |
|---|---|---|---|---|
| Task | 48 | 40 | 83% | 7 |
| Bug | 18 | 10 | 56% | 7 |
| unlabeled | 1 | 1 | 100% | 0 |
Bug completion at 56% — improved from WK13's 29% but significantly below task completion (83%).
Blockers & Risks
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| NXET-419 (invoice refactor) at 12 weeks — blocks NXET-449/516. Flagged in WK12 and WK13 reviews with no action taken. | High | Mandatory split before WK15 planning. Break into max-2-week deliverables. | viet.vo, phat.nguyen |
| NXET-532 (QA verification) never started since WK10 — coffee shop launch at risk without QA sign-off | High | Split into per-domain QA tasks with clear owners, start in WK15 day 1 | uyen.nguyen, Khoa |
| 6 of 11 members [OVERLOADED] — persistent across WK11/12/13/14. Cap-at-5 recommendation never enforced. | High | Enforce 5-item cap in WK15. Redistribute to kien (4/5), thuong (3/5), huy.pham (2/5) | phat.nguyen |
| Mid-sprint bulk additions mask true completion rate (62% pre-sprint vs 76% headline) | Med | Track items at sprint start. Do not add retroactive items to current cycle. | PM process |
| 5 commerce validation bugs unstarted — data integrity risk for coffee shop | Med | Assign single primary owner (not co-assigned). phuc.duong or huy.pham. | phat.nguyen |
4-Cycle Trend
Data sourced from official sprint review work items (NXET-585, 619, 688).
| Metric | WK11 | WK12 | WK13 | WK14 | Direction |
|---|---|---|---|---|---|
| Items completed | 23 | 30 | 44 | 51 | ▲ |
| Completion % | 88.5% | 93.8% | 60.3% | 76.1% | ▼ |
| Committed | 26 | 32 | 73 | 67 | ▼ (overcommit) |
| Carry-overs | 0 | 0 | 27 | 14 | ▼ |
| Health Score | 82 | 76 | 48 | 67 | ▼ |
6-cycle view (from WK09 review onward):
| Cycle | Health | Committed | Completed | CR | Carry |
|---|---|---|---|---|---|
| WK09 | 79 | 16 | 15 | 93.8% | 0 |
| WK10 | 56 | 36 | 24 | 66.7% | 12 |
| WK11 | 82 | 26 | 23 | 88.5% | 0 |
| WK12 | 76 | 32 | 30 | 93.8% | 0 |
| WK13 | 48 | 73 | 44 | 60.3% | 27 |
| WK14 | 67 | 67 | 51 | 76.1% | 14 |
Pattern: Clear oscillation between overcommit crashes (WK10: 36→56, WK13: 73→48) and recovery sprints (WK11: 26→82, WK12: 32→76). WK14 is a partial recovery (67→67) but still overcommitted. Throughput is trending up (15→51) but sprint sizing grows faster.
Forecast (Monte Carlo)
Based on last 4 cycles of throughput (23, 30, 44, 51 items/cycle, avg 37.0):
| Scope | Remaining | 50% confidence | 85% confidence |
|---|---|---|---|
| WK14 carry-over (total) | 14 | WK15 (Apr 12) | WK16 (Apr 19) |
| Invoice track (419/449/516) | 3 (needs splitting) | WK16 (Apr 19) | WK17 (Apr 26) |
| Commerce validation bugs | 5 | WK15 (Apr 12) | WK15 (Apr 12) |
| QA verification (532) | 1 (needs splitting) | WK15 (Apr 12) | WK16 (Apr 19) |
Action Triggers
| Condition | Fired? | Recommended Action |
|---|---|---|
| Completion < 75% for 2 consecutive cycles | No — WK13 (60.3%) below, WK14 (76.1%) above. Pre-sprint baseline is 62.2%. | Monitor. If WK15 pre-sprint CR < 75%, trigger fires. |
| Completion > 95% for 2 consecutive cycles | No | — |
| Any member > 5 items | YES — Khoa (21), tai (17), Hai (14), phat.nguyen (14), phuc (8), viet (6) | Redistribute before WK15. Enforce 5-item cap. Recommended since WK10 — never enforced. |
| Any member < 70% done for 2 cycles | YES — Khoa (WK13: 50%, WK14: 62%), phat.nguyen (WK13: 28%, WK14: 50%), viet.vo (WK13: 33%, WK14: 50%) | Khoa: reduce co-assignment. viet.vo: split NXET-419. phat.nguyen: cap dev items at 3 for PM role. |
| Carry-over item age > 2 weeks | YES — NXET-419 (12w), 449 (11w), 516 (5w), 532 (5w), 561 (4w) | MUST split or cancel. NXET-419 and 532 flagged since WK10/WK12. |
| Cancellation > 15% | No (3.0%) | — |
| Workload max/min ratio > 3x | YES — 10.5x (21:2) | Rebalance. Assign 1 primary owner per item. |
| Health Score < 60 | No (67) — recovered from WK13's 48 | — |
WK13 Review Recommendations — Follow-Up
| WK13 Recommendation | Followed in WK14? | Evidence |
|---|---|---|
| Cap WK14 at ~40 items | No — 67 items committed | Sprint overloaded again |
| Stop mid-sprint bulk additions | No — 30 items added mid-sprint (15 on Apr 1-5) | Same inflation pattern |
| Split 5 zombie items | Partially — NXET-512 removed, but 419/449/516/532 persist | 4 of 5 zombies still alive |
| Assign clear primary owners | No — heavy co-assignment continues | Khoa: 21 items, many co-assigned |
| Hold retrospective | Unknown — no evidence in Plane | Not documented |
Recommendations for WK15
- Cap WK15 at 40 items max — 67/73 items in last 2 sprints has been unsustainable. Pre-sprint CR has been 62% and below.
- Split the 5 zombie items NOW — NXET-419 (12w), 449 (11w), 516 (5w), 532 (5w), 561 (4w). This is the 3rd sprint flagging 419/449 and 4th sprint flagging 532.
- Enforce 5-item cap per member — recommended since WK10 review, never enforced. 6/11 members overloaded.
- Stop adding retroactive items to current cycle — creates false completion metrics. Track work-in-progress through next cycle instead.
- Assign 1 primary owner per item — co-assignment inflates counts and obscures accountability.
- Explicit PM capacity — phat.nguyen at 50% reflects PM load, not underperformance. Cap at 3 dev items.
Related Pages
- Sprint Reviews · Roadmap · Changelog · Traceability Matrix
- Plane: BANA-739 — Sprint review 2026_WK14 (Report)