Sprint Review - WK27
Cycle 2026-06-29 → 07-05 · Recorded in Plane as BANA-1755. Scored with the delivery-first scorecard (SPACE / DORA / Flow). 158 work items · 79 done · 50.0% completion.
In one line
Completion recovered to 50% (from 21.7% last cycle) as the team drained roughly half of WK26's acceptance backlog. The team also cleared the 25 leftover Phase-1 items flagged last review. The remaining constraint is the same one: 41 items are fully built and sitting in the acceptance/deploy queue, including a merchant-permission security fix that should not wait for the normal cadence.
Executive Summary
Of 158 items in the cycle, 79 are done (50.0%) - more than double WK26's 21.7%. Two forces drove the recovery: the team pushed a meaningful share of WK26's "built, awaiting acceptance" queue through to done, and a code audit closed out 4 items (2 dashboard/finance features, 2 finished PRDs) plus confirmed all 25 leftover Phase-1 items are genuinely complete.
Work shipped this cycle, by business theme (sourced from git):
- Reservation & table management rebuild: a new Reservation module (list, detail, booking form, table map, virtual-list performance) and a Kitchen Display System (board, tickets, elapsed timer) landed in the
sale-renderer-2rewrite, plus an auto-cancel-reservation service. - Help Desk platform build-out: SLA Policy management (create/edit/list), ticket-category custom-field form builder, agent skills/languages, and an
organizerIdscoping pass across tickets, tags and SLA policies. - Merchant analytics for Back Office: a GMV-trend + summary-comparison endpoint and a Merchant Health Analysis screen (KPI cards, distribution donut, trend chart).
- Commerce & bundler foundation: bundler self-reference/duplicate guards, reverse-bundler support, product import via Excel, and merchant onboarding polish (avatar/logo upload, optional tax, default sale channel).
- Shift management: shift form/show/clock/cash-drawer UI and a shift-template/amend-history backend, decoupled from sale channel - built this cycle, still awaiting acceptance (see below).
- Search platform & infra: migrated the search write-path from pgcat to pgdog, refactored CDC to dependency injection with a circuit breaker, and moved database migrations to a manual, Dockerized, CI-gated flow.
- Tax & ledger: tax-declaration schema and batch-status flow, ledger allow/approach endpoints, and a ledger scheduler service.
Delivery Scorecard
A balanced view across five dimensions, rolled up into one health score.
| Dimension | Score | Trend | Reading |
|---|---|---|---|
| Throughput | 100 | ▲ | 79 items accepted vs a trailing median of ~50/cycle (WK22-26) - capped at 100 |
| Flow & Aging | 45 | ▼ | 43 of 78 open items (55%) have aged beyond two weeks |
| Predictability | 68 | ► | delivery volume still swings cycle to cycle (CoV ≈ 32% over WK22-27) |
| Quality | 89 | ▲ | cancel rate 0.6%; ~10% of done work was bug-fix rework |
| Sustainability | 45 | ► | PM co-assignment convention concentrates ~70% of done items on one person (see Bottlenecks) |
| Delivery Health | 73 - Good | ▲ | weighted roll-up: 0.30×Throughput + 0.25×Flow&Aging + 0.20×Predictability + 0.15×Quality + 0.10×Sustainability |
Planning signals - reported separately, not in Health:
- Commitment ratio ~3.8× - 158 items vs a sustainable ~42 (21 active contributors × 2/week). Still oversized, though smaller than WK26 (4.6×) and WK25 (6.9×).
- Completion 50.0% (79 / 158). Held down by the same acceptance-queue dynamic flagged in WK26, now roughly half-cleared.
Definition of done
Merged code progresses 205_READY_TO_DEPLOY → 210_READY_TO_TEST → 300_DONE; only QA-accepted work counts as done. 17 items currently sit in 205_READY_TO_DEPLOY and 24 in 210_READY_TO_TEST (41 total, down from 80 last cycle).
Value Delivered (EBM)
| Key Value Area | What landed this cycle |
|---|---|
| Current Value (usable now) | Reservation + Kitchen Display System in the sale-renderer-2 rewrite; Help Desk SLA policies and ticket-category form builder; Finance Account archive/inactive states; Merchant Health Analysis dashboard (BO) |
| Time-to-Market (speed to ship/learn) | Search platform migrated to pgdog for reliability at scale; database migrations moved to a manual, Dockerized, CI-checked flow, closing a release risk |
| Ability-to-Innovate (future speed) | Commerce bundler foundation (self-reference/duplicate guards, Excel import); identity permission scoping refactored to per-domain; CDC service redesigned around DI + circuit breaker, enabling faster search features later |
| Unrealized Value (opportunity ahead) | 41-item acceptance queue (shift management, helpdesk custom fields, a merchant-permission security fix) still to be deployed and QA'd; Customer / Inventory / Retail epics remain flat with no assigned owner |
Effort & Contribution
Context, not a leaderboard. Commits are an activity proxy, not output - debugging, refactor, review and deletion are high-value and low-commit.
| Member | Commits | Areas touched | Done (board) | What they built |
|---|---|---|---|---|
| Hai Cao | 62 | commerce, gateway, CI/infra | 16 | bundler guards, Excel import, manual-migration + Dockerized CI pipeline |
| Phat Chung | 51 | tax, ledger, identity | - | tax-declaration schema, ledger allow/approach/scheduler endpoints |
| Khoa Nguyen | 47 | sale-renderer-2 | 5 | Reservation module + Kitchen Display System rebuild |
| Tai Nguyen | 56 | helpdesk, bo | 2 | SLA Policy management, ticket-category form builder, merchant health dashboard |
| Phuc Duong | 33 | search | - | pgcat→pgdog migration, CDC service refactor (DI + circuit breaker) |
| Phat Nguyen (PM/PO) | 28 | PRD/docs, cross-cutting | 55 | PRD writing/fixes, knowledge base, broad co-assignment across the board |
| Huy Pham (huypt) | 22 | reservation, helpdesk | - | reservation auto-cancel service, GMV-trend BE endpoint |
| Viet Vo | 21 | sale (shift) | 1 | shift template, amend-history endpoint, decouple shift from sale channel |
| Kien Truong | 17 | sale-renderer (shift UI) | - | shift form/show/clock/cash-drawer UI |
| Thuan Hoang | 18 | client, sale | 2 | username/phone/email validation, i18n fixes |
| Duc Bach | 13 | identity | 3 | scoped user-permission-by-domain refactor |
| Diem Phan | 9 | commerce (merchant) | 1 | merchant logo upload/delete, bundler settings UI |
| Tinh Nguyen (PO) | 16 | docs/PRD | - | Order & Payment History PRD rewrite, generated-docs refresh |
| Toan Tran | 5 | help-center | - | P1 capture-persistence bug fixes |
| Linh Le | 1 | - | - | - |
Non-coding contribution (not visible in git): QA and PRD authorship from the PM/PO pair continued in parallel with the code audit; Help Desk requirements were refined alongside the ticket-management build-out.
What Shipped - Detailed Work Log
- Reservation & Kitchen (Sale): new Reservation list/detail/booking-form screens, table-status map, virtual-list performance pass, unsaved-changes guard, and a Kitchen Display board with per-ticket elapsed timers, in the
sale-renderer-2rewrite (Khoa Nguyen); reservation auto-cancel service +reservedFrom/reservedTovalidation (Huy Pham/huypt). - Help Desk: SLA Policy create/edit/list flows, ticket-category custom-field form builder +
NestedFieldsEditor, agent skills/languages, and anorganizerIdscoping pass across tickets/tags/SLA policies (Tai Nguyen); custom-field data model + migrations (Huy Pham). - Merchant analytics (Back Office): GMV-trend + summary-comparison endpoint (Huy Pham); Merchant Health Analysis screen with KPI cards, health-distribution donut and trend chart (Tai Nguyen).
- Commerce & onboarding: bundler self-reference/duplicate guards, reverse-bundler support, product import via Excel, optional tax and default sale-channel logic, merchant avatar upload (Hai Cao); merchant logo upload/delete and incomplete-tax-lookup UX, bundler settings UI (Diem Phan).
- Shift management: shift form/show/clock/cash-drawer UI (Kien Truong); shift template
daysOfWeek, amend-history endpoint, decoupling shift from sale channel (Viet Vo) - all merged, sitting in205_READY_TO_DEPLOY. - Tax & ledger: tax-declaration schema + batch-status flow, ledger allow/approach/period-type endpoints, ledger scheduler service (Phat Chung).
- Search & platform: pgcat→pgdog migration for the search write path, CDC service refactor to DI + circuit breaker + error classifier, new search collections for customers/reservations/role↔merchant (Phuc Duong); manual drizzle-migration management, Dockerfiles for gateway/migrate images, CI fixes (Hai Cao).
- Identity & permissions: scoped user-permission-by-domain refactor, policy-definition role-target update (Duc Bach); merchant-guard fix for a cross-merchant
PolicyDefinitionleak (Phat Chung) - merged, awaiting deploy. - Docs/PRD: Backoffice Portal and Fare/Pricing PRDs finalized to v1.0/v1.1 (code-audit verified, promoted to Done); Order & Payment History and Sold Products History PRDs rewritten (Tinh Nguyen); generated-docs refresh (data model, commerce API, public entities, environment variables, services catalog).
- help-center: P1 capture-persistence bug fixes and track-stock save fix (Toan Tran).
Project & Phase Progress
- Phase 2 (target Sep 2026): 79 items done this cycle, the second-highest of the last 6 cycles. Largest movers: Backoffice Portal (PRD finalized), merchant analytics, reservation/kitchen infrastructure.
- Burnup: cumulative Phase-2 scope continues to grow (new items still entering via
[PRD/*]and[REVIEW]tickets), while done-count recovered sharply from WK26. Long poles - Customer, Inventory, general Retail - remain flat; still no assigned owner, carried from the WK26 action item. See Phase 2 Plan.
Epic Progress (Phase 2)
Directional (this cycle's git deliverables + PRD/ticket movement against each epic's end-to-end done signal). Baseline = 2026-06-28 snapshot in
phase-2-plan.md.
| Epic | Owner | % (was→now) | Δ | Status |
|---|---|---|---|---|
| E1 · Tax (S2a, T-VAN) | Việt Võ / Phát | 70% → 74% | +4 | on-track |
| E2 · Commerce (Retail) | Hải / Khoa / Phát | 95% → 96% | +1 | near-done |
| E3 · Products (Entitlement) | Hải / Khoa / Phát | re-scoped | - | at-risk (no movement this cycle) |
| E4 · Sale (Shift + reconcile) | Việt Võ / Phát | 92% → 94% | +2 | on-track (shift UI/BE built, in acceptance queue) |
| E5 · Customer (MST + groups) | Hải / Khoa / Phát | 45% → 48% | +3 | at-risk (still no owner assigned) |
| E6 · Inventory | Phát | 50% → 50% | 0 | at-risk (flat, no owner assigned) |
| E7 · Finance | Việt Võ / Phát | 86% → 88% | +2 | on-track (Finance Account archive states shipped) |
| E8 · Sale (Kitchen & self-order) | Hải / Khoa / Phát | 18% → 24% | +6 | on-track (Kitchen Display System built this cycle) |
| E9 · Sale (Selling experience) | Hải / Khoa / Phát | 62% → 66% | +4 | on-track (Reservation/sale-order rebuild) |
| E10 · Pricing | Hải / Khoa / Phát | 50% → 52% | +2 | at-risk (modest bundler/FBT movement) |
| E11 · Permissions | Phát / Hải | 82% → 84% | +2 | on-track (merchant-guard fix built, awaiting deploy) |
| E12 · Commerce (Backoffice portal) | Hải / Phát | 72% → 78% | +6 | on-track (PRD finalized, GMV/health dashboards shipped) |
Bottlenecks & Flow
| Signal | Reading |
|---|---|
| Aging WIP | 43 of 78 open items (55%) aged beyond two weeks; oldest are BANA-1164 (finance, 6wk) and BANA-1183/1184 (reservation indicators, 5.4wk - code audit found these partial/not-done) |
| WIP distribution | backlog 31 (23 upcoming + 6 draft + 2 on-hold) · in-progress 6 · acceptance queue 41 (17 ready-to-deploy + 24 ready-to-test) |
| Ready-to-deploy/test queue | 41 items, down from 80 last cycle - the acceptance-and-release routine from WK26's top action item is working, but not finished; includes a merchant-permission security fix (BANA-1704) still undeployed |
| Concentration | phat.nguyen (PM/PO) appears on 55 of 79 done items (~70% of assignee-slots) - consistent with the broad co-assignment convention noted in WK25/26, not solo execution on all of it |
| Blocked | none flagged via description text this pass; Plane has no relations API (per project.md), so blocked-by links aren't tracked structurally - not deeply audited this cycle |
Carry-Over Analysis
78 items remain open. Age guidance: ≥3 wk → split/cancel · 2 wk → review · 1 wk → transfer.
| Bucket | Count | Age | Note |
|---|---|---|---|
| Zombie backlog | 26 | ≥3 wk | includes the code-audit PARTIAL/NOT-DONE items (1183, 1184, 1419) and a stale Jun 9-11 batch of ~10 FE/client tax-validation/bundle-config tickets - split, reassign or cancel |
| Acceptance-queue review | 32 | ~2 wk | mostly the 205_READY_TO_DEPLOY/210_READY_TO_TEST items from the shift and helpdesk builds - push through the acceptance routine |
| Normal transfer | 20 | ≤1 wk | recently-created backlog/PRD items, transfer as-is |
By Module (estimated)
Estimated from title prefixes (no structured module field on cycle items); done items only, top modules shown.
| Module | Total | Done | Note |
|---|---|---|---|
| Sale | 42 | 13 | reservation, kitchen, shift - largest module this cycle, also largest acceptance-queue holder |
| Products | 23 | 16 | bundler, variant, category work |
| Commerce | 21 | 13 | merchant onboarding, bundler foundation |
| Inventory | 7 | 5 | small volume, no major feature this cycle |
| Finance | 5 | 2 | archive-status feature (promoted via code audit) |
| User Management | 5 | 3 | identity/employee fixes |
| Customer | 5 | 4 | mostly QA/validation tickets |
| Tax | 4 | 1 | ledger/declaration backend, still in progress |
| Pricing | 3 | 3 | bundler pricing edge cases |
| Payment | 3 | 2 | - |
| Device | 3 | 2 | BO device management |
| Uncategorized | 28 | - | mixed Vietnamese-titled FE/client backlog (tax validation, store-detail flows, product search) not cleanly keyword-matched |
By Label
| Label | Items | Done | Cancelled | Carry |
|---|---|---|---|---|
| Task | 63 | 32 | 0 | 31 |
| Bug | 42 | 8 | 1 | 33 |
| Improvement | 7 | 2 | 0 | 5 |
| Phase 1 | 25 | 25 | 0 | 0 |
| Phase 2 | 125 | 47 | 1 | 77 |
| Phase 3 | 7 | 7 | 0 | 0 |
All 25 Phase-1 items and all 7 Phase-3 items in the cycle are now Done - the Phase-1 leftovers flagged as a WK26 risk are fully cleared.
Risks & Blockers
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| Acceptance queue still holds 41 items, incl. a merchant-permission security fix (BANA-1704) undeployed since Jun 28 | security exposure lingers; effort not yet converted to shipped value | deploy BANA-1704 outside the normal cadence; keep draining the queue | Phat / Hai |
| Aged Jun 9-11 FE/client batch (~10 items, ~4wk, never started) | scope drift, forgotten asks | PM triage - split, reassign, or cancel | Phat |
| Reservation-indicator scope gaps found in code audit (1183 partial, 1184/1419 not-done), 5-6 weeks old | ticket vs. delivered scope has silently diverged | re-scope explicitly or close as superseded | Phat / Khoa |
| Sustainability - PM on ~70% of done items (co-assignment convention) | single point of coordination | keep delegating direct ownership; use PM co-assign for oversight, not execution credit | Phat |
| Customer / Inventory / Retail epics still flat, no owner (carried from WK26) | these are the reason Phase 2 exists; September target at risk | assign owners, start in July | Phat / Hai |
Trends (6-cycle)
| Metric | WK22 | WK23 | WK24 | WK25 | WK26 | WK27 | Dir |
|---|---|---|---|---|---|---|---|
| Throughput (done) | 50 | 45 | 92 | 86 | 40 | 79 | ▲ |
| Completion % | 50% | 49.5% | 53.8% | 36.4% | 21.7% | 50.0% | ▲ |
| Carry-over | 48 | 46 | 78 | 142 | 143 | 78 | ▲ (recovering) |
| Delivery Health | 36* | 73 | 77 | 80 | 67 | 73 | ▲ |
* WK22 used the older completion-weighted scale and is not directly comparable.
Forecast (Monte Carlo)
From observed throughput (40-92 done/cycle over the last 6 cycles).
| Milestone | Remaining | 50% | 85% |
|---|---|---|---|
| Clear the 41-item acceptance queue | 41 | early July (next cycle) | mid-July |
| Backoffice portal + Permissions epics | E12 22%, E11 16% remaining | mid-July | late July |
| Kitchen & self-order (E8) | 76% remaining | August | September |
| Customer / Inventory / Retail (E5/E6) | 52%/50% remaining, no owner | August | September |
Assumes the acceptance-and-release routine keeps draining the queue, the next cycle is sized closer to sustainable capacity, and Customer/Inventory/Retail get owners.
Action Items
- ✅ Cleared the 25 leftover Phase-1 items flagged in WK26 - all verified Done - Phat
- ✅ Acceptance-and-release routine is working: queue shrank from 80 → 41 items - Phat / Le Linh
- ⬜ Deploy the merchant-permission security fix (BANA-1704) outside the normal cadence - Phat / Hai
- ⬜ Finish draining the remaining 41-item acceptance queue - Phat / Le Linh
- ⬜ Triage the aged Jun 9-11 FE/client backlog batch (~10 items) - split, reassign, or cancel - Phat
- ⬜ Re-scope or close the reservation-indicator gaps found in the code audit (1183/1184/1419) - Phat / Khoa
- ⬜ Assign owners for Customer, Inventory and Retail epics - Phat / Hai
- ⬜ Size WK28 closer to sustainable capacity (~50-60 items vs 158 this cycle) - Phat
Code-Audit Correction Log
Audited 29 of 82 originally-incomplete items (35%) - all 9 200_IN_PROGRESS and all 3 101_ON_HOLD items in full (code-level), plus a risk-weighted sample of 15 205_READY_TO_DEPLOY/210_READY_TO_TEST items (comment-history check for QA-acceptance evidence). Completion (50.0%) is a verified floor; the remaining 53 items (mostly aged FE/client backlog and untouched QA test-case tickets) were not individually re-verified.
| Item | Was | Now | Evidence |
|---|---|---|---|
| BANA-1581 | 101_ON_HOLD | Done | apps/client dashboard charts (ByDay/ByCategory/ByProduct) fully built on Recharts, wired to real report data |
| BANA-1725 | 200_IN_PROGRESS | Done | Finance Account archive/inactive flow wired in apps/client, apps/bo and packages/finance |
| BANA-1533 | 200_IN_PROGRESS | Done | Backoffice Portal PRD complete (v1.1), docs/wiki/.../commerce/prds/PRD-BOP-001-backoffice-portal.md |
| BANA-1554 | 200_IN_PROGRESS | Done | Fare/Pricing PRD complete (v1.0), docs/wiki/.../products/prds/PRD-FAR-001-fare-system-pricing.md |
Verified still open: BANA-1359 (KDS - 2 of 5 "Done when" checkboxes still unchecked: staff-call notification, hide served/cancelled), BANA-1183 (table indicator - elapsed time is a hardcoded placeholder), BANA-1184 (no queue-vs-table distinction implemented), BANA-1419 (diacritic-insensitive search not implemented), BANA-1529/1539/1544/1562/1564/1565 (PRDs still v0.1 draft), plus 15 items in the acceptance queue spot-checked with no QA-acceptance comment found.
Appendix - Data sources & method
- Git:
git log --all --since=2026-06-28T17:00:01Z --until=2026-07-05T17:00:00Zon nx-seller (262 non-merge commits, 19 contributors). Per-author logs for Effort and Work Log. - Board:
retrieve_cycle+list_cycle_work_itemsfor 2026_WK27, read 2026-07-05. - Scorecard: delivery-first formula (SPACE / DORA / Flow). Throughput baseline = trailing median over WK22-26 (50). Predictability = CoV over WK22-27 done counts.
- Estimates labeled as such: By Module estimated from title prefixes; Epic % directional (git deliverables + PRD/ticket movement, not a literal sub-issue tally).
Related Pages
- Sprint Reviews · Roadmap · Phase 2 Plan · Traceability Matrix
- Plane: BANA-1755 (Report)