Skip to content

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.

73/100 - Good
158Committed
79Accepted & done
41Built, awaiting acceptance
78Carried to next cycle

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

~262commits
19contributors
~37commits/day
~9feature branches

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-2 rewrite, 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 organizerId scoping 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.

DimensionScoreTrendReading
Throughput10079 items accepted vs a trailing median of ~50/cycle (WK22-26) - capped at 100
Flow & Aging4543 of 78 open items (55%) have aged beyond two weeks
Predictability68delivery volume still swings cycle to cycle (CoV ≈ 32% over WK22-27)
Quality89cancel rate 0.6%; ~10% of done work was bug-fix rework
Sustainability45PM co-assignment convention concentrates ~70% of done items on one person (see Bottlenecks)
Delivery Health73 - Goodweighted 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_DEPLOY210_READY_TO_TEST300_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 AreaWhat 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.

MemberCommitsAreas touchedDone (board)What they built
Hai Cao62commerce, gateway, CI/infra16bundler guards, Excel import, manual-migration + Dockerized CI pipeline
Phat Chung51tax, ledger, identity-tax-declaration schema, ledger allow/approach/scheduler endpoints
Khoa Nguyen47sale-renderer-25Reservation module + Kitchen Display System rebuild
Tai Nguyen56helpdesk, bo2SLA Policy management, ticket-category form builder, merchant health dashboard
Phuc Duong33search-pgcat→pgdog migration, CDC service refactor (DI + circuit breaker)
Phat Nguyen (PM/PO)28PRD/docs, cross-cutting55PRD writing/fixes, knowledge base, broad co-assignment across the board
Huy Pham (huypt)22reservation, helpdesk-reservation auto-cancel service, GMV-trend BE endpoint
Viet Vo21sale (shift)1shift template, amend-history endpoint, decouple shift from sale channel
Kien Truong17sale-renderer (shift UI)-shift form/show/clock/cash-drawer UI
Thuan Hoang18client, sale2username/phone/email validation, i18n fixes
Duc Bach13identity3scoped user-permission-by-domain refactor
Diem Phan9commerce (merchant)1merchant logo upload/delete, bundler settings UI
Tinh Nguyen (PO)16docs/PRD-Order & Payment History PRD rewrite, generated-docs refresh
Toan Tran5help-center-P1 capture-persistence bug fixes
Linh Le1---

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-2 rewrite (Khoa Nguyen); reservation auto-cancel service + reservedFrom/reservedTo validation (Huy Pham/huypt).
  • Help Desk: SLA Policy create/edit/list flows, ticket-category custom-field form builder + NestedFieldsEditor, agent skills/languages, and an organizerId scoping 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 in 205_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 PolicyDefinition leak (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.

EpicOwner% (was→now)ΔStatus
E1 · Tax (S2a, T-VAN)Việt Võ / Phát70% → 74%+4on-track
E2 · Commerce (Retail)Hải / Khoa / Phát95% → 96%+1near-done
E3 · Products (Entitlement)Hải / Khoa / Phátre-scoped-at-risk (no movement this cycle)
E4 · Sale (Shift + reconcile)Việt Võ / Phát92% → 94%+2on-track (shift UI/BE built, in acceptance queue)
E5 · Customer (MST + groups)Hải / Khoa / Phát45% → 48%+3at-risk (still no owner assigned)
E6 · InventoryPhát50% → 50%0at-risk (flat, no owner assigned)
E7 · FinanceViệt Võ / Phát86% → 88%+2on-track (Finance Account archive states shipped)
E8 · Sale (Kitchen & self-order)Hải / Khoa / Phát18% → 24%+6on-track (Kitchen Display System built this cycle)
E9 · Sale (Selling experience)Hải / Khoa / Phát62% → 66%+4on-track (Reservation/sale-order rebuild)
E10 · PricingHải / Khoa / Phát50% → 52%+2at-risk (modest bundler/FBT movement)
E11 · PermissionsPhát / Hải82% → 84%+2on-track (merchant-guard fix built, awaiting deploy)
E12 · Commerce (Backoffice portal)Hải / Phát72% → 78%+6on-track (PRD finalized, GMV/health dashboards shipped)

Bottlenecks & Flow

SignalReading
Aging WIP43 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 distributionbacklog 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 queue41 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
Concentrationphat.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
Blockednone 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.

BucketCountAgeNote
Zombie backlog26≥3 wkincludes 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 review32~2 wkmostly the 205_READY_TO_DEPLOY/210_READY_TO_TEST items from the shift and helpdesk builds - push through the acceptance routine
Normal transfer20≤1 wkrecently-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.

ModuleTotalDoneNote
Sale4213reservation, kitchen, shift - largest module this cycle, also largest acceptance-queue holder
Products2316bundler, variant, category work
Commerce2113merchant onboarding, bundler foundation
Inventory75small volume, no major feature this cycle
Finance52archive-status feature (promoted via code audit)
User Management53identity/employee fixes
Customer54mostly QA/validation tickets
Tax41ledger/declaration backend, still in progress
Pricing33bundler pricing edge cases
Payment32-
Device32BO device management
Uncategorized28-mixed Vietnamese-titled FE/client backlog (tax validation, store-detail flows, product search) not cleanly keyword-matched

By Label

LabelItemsDoneCancelledCarry
Task6332031
Bug428133
Improvement7205
Phase 1252500
Phase 212547177
Phase 37700

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

RiskImpactMitigationOwner
Acceptance queue still holds 41 items, incl. a merchant-permission security fix (BANA-1704) undeployed since Jun 28security exposure lingers; effort not yet converted to shipped valuedeploy BANA-1704 outside the normal cadence; keep draining the queuePhat / Hai
Aged Jun 9-11 FE/client batch (~10 items, ~4wk, never started)scope drift, forgotten asksPM triage - split, reassign, or cancelPhat
Reservation-indicator scope gaps found in code audit (1183 partial, 1184/1419 not-done), 5-6 weeks oldticket vs. delivered scope has silently divergedre-scope explicitly or close as supersededPhat / Khoa
Sustainability - PM on ~70% of done items (co-assignment convention)single point of coordinationkeep delegating direct ownership; use PM co-assign for oversight, not execution creditPhat
Customer / Inventory / Retail epics still flat, no owner (carried from WK26)these are the reason Phase 2 exists; September target at riskassign owners, start in JulyPhat / Hai
MetricWK22WK23WK24WK25WK26WK27Dir
Throughput (done)504592864079
Completion %50%49.5%53.8%36.4%21.7%50.0%
Carry-over48467814214378▲ (recovering)
Delivery Health36*7377806773

* 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).

MilestoneRemaining50%85%
Clear the 41-item acceptance queue41early July (next cycle)mid-July
Backoffice portal + Permissions epicsE12 22%, E11 16% remainingmid-Julylate July
Kitchen & self-order (E8)76% remainingAugustSeptember
Customer / Inventory / Retail (E5/E6)52%/50% remaining, no ownerAugustSeptember

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.

ItemWasNowEvidence
BANA-1581101_ON_HOLDDoneapps/client dashboard charts (ByDay/ByCategory/ByProduct) fully built on Recharts, wired to real report data
BANA-1725200_IN_PROGRESSDoneFinance Account archive/inactive flow wired in apps/client, apps/bo and packages/finance
BANA-1533200_IN_PROGRESSDoneBackoffice Portal PRD complete (v1.1), docs/wiki/.../commerce/prds/PRD-BOP-001-backoffice-portal.md
BANA-1554200_IN_PROGRESSDoneFare/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:00Z on nx-seller (262 non-merge commits, 19 contributors). Per-author logs for Effort and Work Log.
  • Board: retrieve_cycle + list_cycle_work_items for 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).

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.