Skip to content

Sprint Review - WK23

Cycle 2026-06-01 → 06-07 · Recorded in Plane as BANA-1286. Scored with the delivery-first scorecard (throughput & flow, not commitment-accuracy). Board reconciled against code first (22 mislabeled → Done).

73/100 - Good
95Throughput (45 done ≈ median)
28Flow & Aging (72% >2wk)
2.8×Commitment ratio (over)
6Members overloaded

Why 73 now, not 35

The old score weighted Done/Committed ~70% (counted 3×), so a high-output team that over-committed looked like a failure. The new scorecard rewards absolute throughput and isolates flow/aging; over-commitment is a separate planning flag, not a health penalty. WK23's real story: strong delivery, weak work-item-age hygiene.

Executive Summary

~217commits
13contributors
~31commits/day
28feature merges

Leadership takeaway

This past week (01/06 - 07/06) the team pushed hardest on multi-merchant operation and search going live, while shipping large slices of finance, e-invoicing, helpdesk and the POS app. A very high-output week - the constraint is not speed, it's old carried work piling up and over-loaded individuals.

  • Multi-merchant - every service scopes by merchant; merchant management + switcher in BO; per-merchant authorization re-enabled on the new scoped engine.
  • Search - Typesense live across the catalog + relevance tuning + Kafka topic registry.
  • Finance & Reporting - finance accounts/categories/vouchers inside each merchant; revenue-by-time report; return payment vouchers.
  • E-invoicing (VAT) - automatic post-sale VAT issuance (immediate + EOD) + merchant invoice flow.
  • Helpdesk - assignment rules, SLA & escalation, agent-group member management.
  • POS - product/variant catalog, bundler badges, table reservations, session handling; app rebranded "BANA POS".
  • Help Center - content pipeline + getting-started / finance / reporting articles (EN+VI).

Delivery Scorecard

Multi-dimensional by design (SPACE) - not collapsed to one number. Each dimension measures delivery/flow, not how well the sprint size was guessed.

DimensionScoreTrendWhat it says
Throughput9545 done ≈ the 4-cycle median (~47) - normal output volume
Flow & Aging2833 of 46 carried items (72%) are aged > 2 weeks - the real problem
Predictability76throughput CoV 0.24 over 5 cycles - fairly consistent delivery
Quality860 cancelled; 13 bug-labelled items, no major reopen signal
Sustainability95top-2 committed share ~41%; completed work spread well
Delivery Health (roll-up)73 - Goodup from the old mis-scored 35

Planning signals (reported separately - NOT in Health):

  • Commitment ratio 2.8× - committed 91 vs sustainable ~32 (16 × 2). Over-committed; the fix is re-sizing WK24, not a low health grade.
  • Completion 49.5% (45/91) - a consequence of over-commit, not low output.

Value Delivered (EBM)

Key Value AreaWhat landed this cycle
Current Value (usable now)Search live; per-merchant scoping; finance accounts/category/voucher UI; VAT e-invoice issuance; SLA/helpdesk; POS catalog + reservations; revenue-by-time report
Time-to-Market (speed to ship/learn)IGNIS releases core v0.0.9-15 → -18 (+boot/helpers/docs-mcp); Phase-1 deployment prep (alpha topology)
Ability-to-Innovate (future speed)IGNIS Drizzle Casbin adapter + policy/permission builder + sequential queue helper; commerce/product-service refactor; package/script standardization - all reduce future delivery cost
Unrealized Value (opportunity ahead)Phase 2 backlog: HKD 1-3B tax · retail/grocery · KHDN-MST; Menu domain & Excel import queued

Effort & Contribution

Context, not a leaderboard. Commits/LOC are misleading proxies - debugging, refactor, review, deletion and mentoring are high-value and low-commit. Activity is shown next to outcomes; non-coding work is listed explicitly.

MemberCommitsAreas touchedDone (board)What they built / invisible work
Khoa Nguyen56bo · client · sale-renderer5Merchant mgmt + switcher, sale channel, realtime txn/order, shared filters; heavy cross-app refactor
Duc Bach53client · bo · core3Generalized table filters, finance UI, fare-system rules, revenue report, core i18n
Tai Nguyen42bo · core8Helpdesk assignment rules, SLA & escalation, agent-group member mgmt
Kien Truong42sale-renderer · sale-main2Product/variant catalog, bundler badges, app rebrand, locale/UX
Hai Cao41sale · commerce · identity · all10x-merchant-id rollout, pricing context, entitlement, OTP, commerce hotfixes, package refactor
Phuc Duong28search2Typesense integration, hybrid tuning, CDC version-stamping, Kafka topic registry
Phat Nguyen20 (+IGNIS)identity · core · IGNIS14Scoped Casbin (IGNIS + BANA), permission migration/seed, PRDs, sprint-review framework
Huy Pham18helpdesk1Agent-group member mgmt with organizer scoping
Toan Tran17overture4Help-center pipeline + getting-started/finance/reporting articles (EN+VI)
Phat Chung11client · ledger1Error badge, locale/dayjs, s2a ledger (WIP)
Viet Vo9invoice · finance4VAT invoice flow, finance provider field, return vouchers
Thoi Pham6bo3BO product category handling
Le Linh3docs1Revenue-by-time report PRD

Non-coding contribution (real value, not in git): Anh Do & Uyen Nguyen - QA verifications (6+ done); Thuong Nguyen - design; Nguyen Nguyen - PM/onboarding.

What Shipped - Detailed Work Log

  • Multi-merchant & authorization - x-merchant-id across all services (Hai Cao); scoped Casbin migration + permission lattice seed (Phat); BO merchant table + multi-merchant switcher (Khoa).
  • Search - Typesense integration across core entities; hybrid-search tuning + tests; ProductIdentifier + version-stamped CDC; Kafka topic registry + Debezium heartbeat (Phuc Duong).
  • Finance & reporting - finance account list/create/edit (Van Nguyen); finance category/voucher UI (Duc Bach); revenue-by-time report (Le Linh + Duc Bach); return-flow payment vouchers + provider field (Viet Vo).
  • E-invoicing - post-sale VAT issuance + 2H/EOD BullMQ scheduler + FE invoice flow (Viet Vo).
  • Helpdesk - assignment rules, SLA & escalation, ticket categories, agent-group member mgmt (Tai · Huy).
  • POS - product/variant catalog, bundler badges, table reservations, session-expiry recovery, app rebrand to BANA POS (Kien · Khoa).
  • Commerce - product cascade-delete + order guards, service-product hotfix, product-service refactor (Hai Cao).
  • Help center - content pipeline, screenshot capture, getting-started/finance/reporting articles EN+VI (Toan).
  • Platform/IGNIS - Drizzle Casbin adapter enhancement, policy/permission builder, sequential queue helper, releases core v0.0.9-15→-18 (Phat · Hai Cao).

Project & Phase Progress

  • Phase 1 - complete. Much of WK23 went into task allocation (board reconciliation, per-member work records BANA-1258…1285, this review) and preparing the Phase 1 deployment (alpha topology).
  • Phase 2 - planning. 7 code-audited epics (Jun-Sep 2026): HKD 1-3B tax + retail/grocery; 3 net-new (tax 1-3B · retail-grocery · KHDN-MST); QR/offline/loyalty/webshop deferred to Phase 3. See Phase 2 Plan.
  • Burnup signal: of the Phase 2 scope, ~0 started - the WK23 backend backlog (Menu, Excel import) is the on-ramp and is not yet underway. Forecast below.

Bottlenecks & Flow

SignalReading
Stage accumulation49 UPCOMING + 7 IN_PROGRESS vs 45 Done - a large unstarted backlog (over-commit), few items actually in flight
Aging WIP33 items aged > 2 weeks; oldest: 509/512 (14 wk), 532 (13 wk), Menu 902-907 & Excel 890-894 (7 wk)
ConcentrationHai Cao holds 18 carried items, Phat 12 - backend is a single point of flow
Blocked / stalledledger s2a on fixture data (1225); acting-user middleware commits not on HEAD (1140)

The constraint is age + concentration, not throughput. Cap WIP, drain the oldest items, and spread backend ownership.

Carry-Over Analysis

46 items moved to WK24. Age rules: ≥3 wk → split/cancel · 2 wk → review · 1 wk → transfer.

CategoryItemsAgeRecommendation
ZombieBANA-509, 512 (Promotion)14 wkCANCEL or rewrite
ZombieBANA-532, 677, 628, 62010-13 wkSplit / re-scope / cancel
Not started - MenuBANA-902…9077 wkOne epic, one owner
Not started - Excel importBANA-890…8947 wkCommit in WK24 or de-scope
Not started - onboardingBANA-759, 7049 wkSplit / transfer
In progressBANA-1099, 1107, 1140, 12252-3 wkTransfer, reduced scope
Recent (≤1 wk)BANA-1183/1184/1234-1236/1241/1254/1257/12290-1 wkTransfer to WK24

By Module (estimated)

Estimated from title prefixes ([BE/]/[BO] → packages·operation, [FE/]/[POS]/[DES] → apps).

ModuleItemsDoneDone%Carry
nx-apps (FE/POS/DES)503366%17
nx-packages + nx-operation (BE/BO/OPS/DOC)411229%29

Frontend closed out well; backend carry-over dominates and is concentrated on one person.

By Label

LabelItemsDoneCarry
Task753837
Bug1367
Report110

Risks & Blockers

RiskImpactMitigationOwner
Menu domain (902-907) not startedHighOne epic, one owner; WK24/25Hai Cao / commerce
Excel import (890-894) not startedHighCommit WK24 or de-scope from MVPBE
Ledger s2a on fixture data (1225)MedReal data fetcher before HKD taxPhat Chung
Backend load on Hai Cao (28) & Phat (26)HighRedistribute before WK24Phat (PM)
Over-commit 3 cycles (ratio 2.8×)HighCap WK24 ≈60, drain carry-over firstPhat (PM)
MetricWK19WK20WK21WK22WK23Dir
Throughput (done)35*40*685045■ at median
Completion %n/a*n/a*55%50%49.5%▼ (overcommit)
Carry-overn/a*n/a*444846■ stuck high
Avg carried age----high (72% >2wk)▼ worsening
Delivery Health (new scale)----73first scored

* WK19/20 snapshots empty → completion/carry n/a. Old health scale (WK21 41 / WK22 36) is not comparable - it used the retired completion-weighted formula.

Forecast (Monte Carlo)

Throughput ~45-54 done/cycle (WK21-23).

MilestoneRemaining50%85%
Drain WK23 carry-over (if WK24 capped & prioritized)46WK24 (Jun 14)WK25 (Jun 21)
Menu domain (902…907)6WK25 (Jun 21)WK26 (Jun 28)
Excel import (890…894)5WK25 (Jun 21)WK26 (Jun 28)
Onboarding seeding (759/704)2WK24 (Jun 14)WK25 (Jun 21)

Assumes carry-over is prioritized and WK24 isn't re-overloaded; otherwise dates slip ~1 cycle.

Action Items

  • ⬜ Cap WK24 at ~capacity (≈60) and drain carry-over first - Phat (PM)
  • ⬜ Split or cancel all items aged > 2 weeks (509/512/532, Menu, Excel) - Phat (PM)
  • ⬜ Redistribute backend load off Hai Cao & Phat - Phat (PM)
  • ⬜ Move ticket to Done on PR merge (22 mislabeled this cycle) - all devs
  • ⬜ Re-plan Menu as one epic, one owner - Hai Cao
  • ⬜ NX_HRM: freeze end-of-cycle snapshots - ops

Code-audit correction log

Board said incomplete; code proved Done (22 items, 23 → 45). 66 code-relevant incomplete items audited by 6 parallel agents → 49.5% is a verified floor.

ItemWasNowEvidence
932 TypesenseIn-progressDonepackages/search engine + CDC + collections
729/730/750 Invoice + VAT schedulerIn-prog/UpDonepackages/invoice worker + controllers + scheduled-issuance + BullMQ
1256/987 Product cascade deleteUpcomingDonecommerce deletion-policy.service
1091 SLA & escalationIn-progressDoneapps/bo sla-policy CRUD
1220/1221/1222 Finance-account screensIn-progressDoneapps/bo finance-account list/create/edit
538 Realtime sale & paymentOn-holdDoneapps/bo socket handlers
870/871/920 Help centerUpcomingDoneapps/overture content + pages + first-sale
344 Dynamic filtersOn-holdDoneapps/client buildFilterMeta (8+ pages)
756 Reservation UIIn-progressDoneapps/sale-renderer reservation dialog/sheet
937/938 Product-option UIUpcomingDoneapps/client option + variant combination
1162 Session-expiry re-loginUpcomingDoneapps/sale-renderer useAuthRecovery
1233/1249 Password recovery / session noticeUpcomingDoneapps/client recovery guard + notify
1228 Supplier (NCC) create UIDraftDoneapps/bo + apps/client vendor create

Kept open (verified): PARTIAL - 1225, 759, 1257, 1236, 1099, 872, 922, 972, 1183, 628. NOT-DONE - 677, 902-907, 936, 890-894, 1140, 1234, 1241, 1164, 704, 970, 973, 1184, 1235, 1254.

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