Sprint Review — WK20
Cycle 2026-05-11 → 05-17 · Recorded in Plane as BANA-1117. The Executive Summary is sourced from git; the metrics below mirror the Plane review.
Executive Summary
Leadership takeaway
This week (11/05 – 17/05) the two biggest themes were a product / commerce v2 rebuild — multi-category multi-merchant mapping, option-based variants, combos and tax groups — and the staff-access foundation (PIN sign-in and multi-employee shifts) that seeds the WK21 redesign cluster.
- Product & Commerce v2 — A new product creation flow with multi-category, multi-merchant mapping, option-based variant generation, combo/bundle support, and tax-group CRUD wired into the product module.
- Inventory & Sale Channels — Sale-channel ↔ inventory-location relations, merchant ↔ location relations, combo-variant deduction on sale, and material/inventory stock overview endpoints.
- Staff Access & Shifts — PIN authentication and authorization, a new OTP flow, and the multi-employee shift backend that anchors the WK21 access redesign.
- Back Office & Helpdesk — Agent and agent-group management, ticket-category screens, and SLA policy with escalation-rule handling.
- Roles & Permissions (client) — A role-management screen with a collapsible permission tree, priority input on the role form, and multi-language role descriptions.
- Material Dashboard — A material overview dashboard with four widgets, plus merchant sync and preview.
- Devices & Printing — Device, fingerprint and printer-state persistence shipped to develop (git only — not a Plane ticket).
Health Score: 28/100 — Intervention required
| Dimension | Score | Weight | Contribution |
|---|---|---|---|
| Completion (40/97 = 41.2%) | 48.5/100 | 30% | 14.56 |
| Predictability (|41.2−85|×2 penalty) | 12.5/100 | 25% | 3.12 |
| Workload Balance (max/min 41/1) | 2.4/100 | 20% | 0.49 |
| Flow (56/97 = 57.7% carry, clamped) | 0/100 | 15% | 0.00 |
| Quality (1/97 = 1.0% cancel) | 96.9/100 | 10% | 9.69 |
| Total | 27.86 → 28 | 100% | — |
Rating: <60 = Intervention required.
Read this caveat first
WK17/WK18/WK19 cycles in Plane today are post-VNPAY-prune snapshots — items that were deferred during the VNPAY onsite pivot were removed from those cycles, leaving only what closed. So the 100% / 92% / 94% completion rates shown for WK19/WK18/WK17 are NOT the real cycle health at the time. The real WK19 was 34/100 = 34% per the VNPAY memo. Interpretation: WK20's 41% is not "the team collapsed from healthy cycles" — it's "WK20 is the first cycle where the carry-over debt finally hit the completion %".
Key Accomplishments
- BANA-1018 [BE/commerce] Multi-category, multi-merchant mapping + option-based variant generation (hai.cao) — unblocks Variant Option cluster
- BANA-1085 [BE/ledger] Split ledger service into API + Worker containers (phat.chung) — operational separation
- BANA-1077 [BE/inventory] Deduct inventory for combo product variants on sale (phat.nguyen)
- BANA-1100/1101/1102 PIN auth v1 + Variant 2 multi-employee shift backend (phuc.duong) — foundation for WK21 redesign cluster
- BANA-930 [FE/overture] Variant pricing capture blocker resolved (toan.tran)
- BANA-216 [FE/client] Table feature (khoa.nguyen) — closed after 5+ months in flight
- feat/material merged — material overview dashboard with 4 widgets (duc.bach)
- Device + fingerprint + printer persistence shipped to develop (kien.truong, git only — not a Plane ticket)
Urgent Attention
| Item | ID | Assignee | State | Age (w) | Issue |
|---|---|---|---|---|---|
| Dynamic filter for other pages | BANA-344 | khoa.nguyen | 101_ON_HOLD | 22.3 | Zombie — must split or cancel |
| Promotion/Voucher module | BANA-509 | hai.cao | 101_ON_HOLD | 11.6 | Zombie |
| FE/client CRUD Promotion | BANA-512 | tai.nguyen | 101_ON_HOLD | 11.4 | Zombie |
| Invoice for sale integration | BANA-516 | viet.vo, duc.bach | 100_UPCOMING | 11.3 | Zombie, invoice thread stalled |
| FE/bo Realtime Sale + Payment | BANA-538 | hai.cao, tai.nguyen | 101_ON_HOLD | 10.7 | Zombie |
| Docs Merchant Onboarding TEST | BANA-620 | phat.nguyen+ | 101_ON_HOLD | 7.9 | Zombie, from WK17 review |
| Docs Golive Products | BANA-621 | phat.nguyen+ | 101_ON_HOLD | 7.9 | Zombie |
| Admin UI Kit → Base UI | BANA-628 | khoa.nguyen | 101_ON_HOLD | 7.7 | Zombie |
| BE archive variant validation | BANA-677 | duc.bach | 100_UPCOMING | 7.4 | Aged |
| FE onboarding wizard | BANA-704 | khoa.nguyen | 100_UPCOMING | 6.9 | Aged |
| DOC/wiki merchant onboarding runbook | BANA-705 | phat.nguyen | 200_IN_PROGRESS | 6.9 | Aged, PM owns |
| BE/Invoice testing flow | BANA-729 | viet.vo | 200_IN_PROGRESS | 6.3 | Aged invoice thread |
| BE/invoice VAT 2H/EOD scheduler | BANA-750 | viet.vo | 200_IN_PROGRESS | 6.3 | URGENT priority, aged |
| BE/identity Refactor Employee APIs | BANA-1073 | anh.le | 200_IN_PROGRESS | 0.7 | Past target 2026-05-17, new hire |
| FE/bo SLA Policy + Escalation | BANA-1091 | tai.nguyen | 200_IN_PROGRESS | 0.3 | Past target 2026-05-17 |
| FE/client Stock list | BANA-1089 | duc.bach | 200_IN_PROGRESS | 0.3 | Past target 2026-05-15 |
Plus Hai Cao mass-create clusters that never moved: Excel-import (BANA-890→894, 5 items, all aged 4.3w) and Menu (BANA-902→907, 6 items, all aged 4.1w) — created 2026-04-26 with no apparent WK20 shipping intent.
Delivery
| Metric | WK20 | WK19 (Plane) | 4-Cycle Avg (Plane) | Target | Status |
|---|---|---|---|---|---|
| Committed | 97 | 35 | 45.25 | — | WK20 over 2× avg |
| Completed | 40 | 35 | 30.25 | — | — |
| Completion % | 41.2% | 100%* | 82.0%* | 85% | MISS |
| Cancelled | 1 (1.0%) | 0 | 0.75 | <7% | OK |
| Carried over | 56 (57.7%) | 0* | 14.0* | <10% | MISS |
| Throughput/member | 2.5 | 3.2* | 2.9* | 2.0 | OK (per Plane) |
* WK17/18/19 numbers reflect post-VNPAY-prune Plane snapshots, not committed reality at the time.
Misses:
- Completion at 41.2% — target 85%. Driver = over-commit (97 vs 13/36/35 in pruned prior cycles), not capacity drop. Throughput/member of 2.5 is above the 2.0 sustainable target per Plane.
- Carry-over at 57.7% — target <10%. All 56 transferred to WK21 on 2026-05-18 as part of this review.
Team Breakdown
Columns count multi-assignee items per assignee (so person-assignments, not unique items). Sum of "Committed" column = 145 person-assignments across 97 unique items (avg 1.49 assignees/item).
| Member | Committed | Done | Cancelled | Carry | Done% | Load | Flag |
|---|---|---|---|---|---|---|---|
| hai.cao | 41 | 8 | 0 | 33 | 19.5% | 41/5 | [OVERLOADED] [LOW COMPLETION] |
| phat.nguyen | 28 | 8 | 1 | 19 | 28.6% | 28/5 | [OVERLOADED] [LOW COMPLETION] |
| khoa.nguyen | 20 | 4 | 0 | 16 | 20.0% | 20/5 | [OVERLOADED] [LOW COMPLETION] |
| duc.bach | 12 | 3 | 0 | 9 | 25.0% | 12/5 | [OVERLOADED] [LOW COMPLETION] |
| tai.nguyen | 8 | 3 | 0 | 5 | 37.5% | 8/5 | [OVERLOADED] [LOW COMPLETION] |
| kien.truong | 6 | 6 | 0 | 0 | 100.0% | 6/5 | [OVERLOADED] but clean delivery |
| phuc.duong | 6 | 0 | 0 | 6 | 0.0% | 6/5 | [OVERLOADED] [LOW COMPLETION] — pivoted to WK21 Search/PIN |
| toan.tran | 5 | 4 | 0 | 1 | 80.0% | 5/5 | OK |
| viet.vo | 5 | 1 | 0 | 4 | 20.0% | 5/5 | [LOW COMPLETION] — invoice thread stuck |
| thuong.nguyen | 4 | 2 | 0 | 2 | 50.0% | 4/5 | [LOW COMPLETION] |
| phat.chung | 3 | 2 | 0 | 1 | 66.7% | 3/5 | [LOW COMPLETION] |
| huy.pham | 3 | 2 | 0 | 1 | 66.7% | 3/5 | [LOW COMPLETION] |
| thoi.pham | 1 | 1 | 0 | 0 | 100.0% | 1/5 | OK |
| van.nguyen | 1 | 1 | 0 | 0 | 100.0% | 1/5 | OK |
| uyen.nguyen | 1 | 1 | 0 | 0 | 100.0% | 1/5 | OK |
| anh.le | 1 | 0 | 0 | 1 | 0.0% | 1/5 | [LOW COMPLETION] — new hire |
Workload person-assignment max/min = 41/1 = 41×. Top 3 (Hai/Phat/Khoa) carry 89 of 145 person-assignments = 61.4% of person-load. (The unique-item count is somewhat lower due to shared tickets, but ≥60% concentration on three engineers is structurally fragile.)
Carry-Over Analysis (56 items, all transferred to WK21 on 2026-05-18)
Per template Step 3 age rules: ≥3 weeks → MUST split or cancel; 2 weeks → review and split if >50% remaining; 1 week → straight transfer.
By age bucket of the 56 items:
- ≥6 weeks (true zombies, 18 items): BANA-344, 509, 512, 516, 538, 620, 621, 628, 677, 704, 705, 729, 730, 750, 759, 764, 770, 772
- 3–6 weeks (must split/cancel per template, 33 items): BANA-789, 792, 793, 801, 803, 810, 855, 872, 890, 891, 892, 893, 894, 902, 903, 904, 905, 906, 907, 926, 928, 932, 933, 935, 936, 937, 938, 944, 945, 964, 967, 973, 974
- 1–3 weeks (review/transfer, 1 item): BANA-987
- <1 week (straight transfer, 4 items): BANA-1072, 1073, 1089, 1091
51 of 56 transferred items (91%) are age ≥3 weeks and per template MUST be split or cancelled — they should not have been transferred as-is. The transfer already happened (PM unblock to clear WK20); PM follow-up triage is required on Monday before WK21 daily work.
Per-item triage recommendations:
| Item | ID | Assignee | Age (w) | Recommendation |
|---|---|---|---|---|
| Dynamic filter for other pages | BANA-344 | khoa.nguyen | 22.3 | CANCEL — abandoned 22w, BANA-792-855 cluster supersedes |
| Promotion/Voucher module | BANA-509 | hai.cao | 11.6 | CANCEL or rescope into smaller deliverable |
| FE CRUD Promotion | BANA-512 | tai.nguyen | 11.4 | CANCEL (depends on 509) |
| Invoice for sale integration | BANA-516 | viet.vo, duc.bach | 11.3 | SPLIT — invoice thread needs decomposition |
| Realtime Sale + Payment | BANA-538 | hai.cao, tai.nguyen | 10.7 | CANCEL or rescope |
| Docs Merchant Onboarding | BANA-620 | phat.nguyen+ | 7.9 | CANCEL — docs from WK17 review never started |
| Docs Golive Products | BANA-621 | phat.nguyen+ | 7.9 | CANCEL |
| Admin UI Kit → Base UI | BANA-628 | khoa.nguyen | 7.7 | CANCEL — speculative migration |
| BE archive variant validation | BANA-677 | duc.bach | 7.4 | SPLIT |
| Onboarding wizard legal/location | BANA-704 | khoa.nguyen | 6.9 | SPLIT |
| Merchant onboarding runbook | BANA-705 | phat.nguyen | 6.9 | SPLIT |
| Invoice testing flow | BANA-729 | viet.vo | 6.3 | SPLIT (pair Viet) |
| Invoice UI integration | BANA-730 | viet.vo | 6.3 | SPLIT (pair Viet) |
| Invoice VAT scheduler | BANA-750 | viet.vo | 6.3 | SPLIT (URGENT priority, pair Viet) |
| Organization onboarding seed | BANA-759 | hai.cao | 6.0 | SPLIT or CANCEL |
| GET /reports/payments/methods | BANA-764 | phat.chung+ | 6.0 | SPLIT |
| Performance testing strategy | BANA-770 | hai.cao | 6.0 | CANCEL — research ticket never moved |
| Design transfer order between tables | BANA-772 | thuong.nguyen | 6.0 | SPLIT |
| BO Xóa Sale Channel | BANA-789 | phat.nguyen, hai.cao | 5.6 | SPLIT |
| BO Filter Sale/Product/Category/Vendor/Merchant | BANA-792/793/801/810/855 | hai.cao, phuc.duong, khoa.nguyen, phat.nguyen | 5.4–5.6 | BUNDLE then SPLIT — 5 sibling tickets are really one filter-form feature |
| BO Disable Product / Active Variant | BANA-803 | phat.nguyen+ | 5.4 | SPLIT |
| FE/overture Pagefind SEO | BANA-872 | toan.tran | 4.4 | TRANSFER (only 0.4w over) |
| Excel bulk import (5 items) | BANA-890→894 | hai.cao | 4.3 | DEFER to WK22+ or backlog — Hai over-loaded, no WK20 activity |
| Menu cluster (6 items) | BANA-902→907 | hai.cao | 4.1 | DEFER to WK22+ or backlog — same reason |
| BO Device | BANA-926 | phat.nguyen, tai.nguyen | 3.9 | CONSOLIDATE — may overlap BANA-1110/1115/1116 (Pham Thoi WK21 stack) |
| BO Thương mại > Sản phẩm | BANA-928 | hai.cao, tai.nguyen | 3.9 | SPLIT |
| Search engine integration | BANA-932 | hai.cao, phuc.duong, khoa.nguyen | 3.7 | CONSOLIDATE with phuc.duong WK21 Search work (BANA-1062-1068) |
| Product Variant Option cluster | BANA-933, 935-938 | hai.cao, duc.bach | 3.6 | BUNDLE as one feature, then SPLIT |
| BO Finance Category/Wallet bugs | BANA-944, 945 | phat.nguyen, hai.cao | 3.4 | SPLIT |
| BO Merchant code persistence | BANA-967 | phat.nguyen, khoa.nguyen | 3.1 | SPLIT |
| FE description on product | BANA-973 | phat.nguyen, khoa.nguyen, thuong.nguyen | 3.1 | SPLIT |
| POS VND quick-amount | BANA-974 | phat.nguyen, khoa.nguyen | 3.1 | SPLIT |
| Force re-login JWT idle | BANA-964 | phat.nguyen, khoa.nguyen | 3.1 | CONSOLIDATE with BANA-720 + BANA-965 (3 duplicates of the same JWT re-login bug) |
| Product variant delete cascade | BANA-987 | phat.nguyen | 2.7 | TRANSFER (in 2w window) |
| Product images not saving | BANA-1072 | phat.nguyen, khoa.nguyen | 0.7 | TRANSFER |
| BE Refactor Employee APIs | BANA-1073 | anh.le | 0.7 | TRANSFER (past target, pair anh.le) |
| FE Stock list | BANA-1089 | duc.bach | 0.3 | TRANSFER (past target) |
| FE SLA Policy + Escalation | BANA-1091 | tai.nguyen | 0.3 | TRANSFER (past target) |
Note on age: ages use created_at as proxy for "first cycle add" (computing real cycle-first-add per item would require 97 activity-log calls). Ages are upper-bound; real cycle ages may be slightly lower.
By Module
| Module | Committed | Done | Done% | Carry |
|---|---|---|---|---|
| nx-packages | 47 | 19 | 40.4% | 27 |
| nx-apps | 34 | 19 | 55.9% | 15 |
| (no module) | 10 | 0 | 0.0% | 10 |
| nx-operation | 3 | 0 | 0.0% | 3 |
| nx-design | 3 | 2 | 66.7% | 1 |
10 items have no module assigned (BANA-792, 793, 801, 803, 810, 855, 926, 944, 945, 1072). Backfill modules when triaging WK21.
By Label
| Label | Items | Done | Carry |
|---|---|---|---|
| Task | 74 | ~31 | ~42 |
| Bug | 21 | ~9 | ~12 |
| (no label) | 2 | — | — |
Bug ratio = 22% (21/97). No obvious bug-bash signal — investigate whether bugs are accumulating as quality debt.
Blockers & Risks
| Risk | Impact | Mitigation | Owner |
|---|---|---|---|
| WK21 over-loaded: 37 originally planned + 56 transferred + 1 review = 94 items vs ~35 sustainable | High | Triage 56 transferred items — cancel 7 zombies, defer Excel + Menu clusters, consolidate 720/965/964 | Phat |
| Hai Cao at 41 committed (8.2× weekly cap) | High | Move Menu (902-907) and Excel (890-894) out of his queue or to WK22+ | Phat + Hai |
| BANA-720 vs 965 vs 964 — three tickets for the same JWT re-login bug | Medium | Pick one as canonical, close the other two | Phat |
| Invoice thread stalled — BANA-516/729/730/750 all aged 6+ weeks, single owner viet.vo at 20% completion | High | Pair Viet with a second engineer or split into smaller deliverables | Phat |
| 10 WK20 items had no module — data hygiene gap | Low | Backfill modules on the 10 IDs listed above | Phat |
| 51 of 56 transferred items violate template age rule (≥3w → split/cancel mandatory) | High | Force triage pass before any WK21 daily work; use per-item recommendations table above | Phat |
| anh.le (Lê Hoàng Anh) new hire — first item BANA-1073 unfinished on critical identity path | Medium | Pair with senior identity engineer (phuc.duong) | Phat |
4-Cycle Trend
| Metric | WK17 (pruned) | WK18 (pruned) | WK19 (pruned) | WK20 | Direction |
|---|---|---|---|---|---|
| Items committed | 36 | 13 | 35 | 97 | over-commit spike |
| Items completed | 34 | 12 | 35 | 40 | stable absolute throughput |
| Completion % | 94.4%* | 92.3%* | 100%* | 41.2% | see caveat |
| Avg items/member | 3.8* | 2.0* | 3.2* | 2.5 | ■ stable |
| Carry-overs | 0* | 0* | 0* | 56 | see caveat |
| Health Score | 75* | 76* | 74* | 28 | see caveat |
* Marks WK17/18/19 metrics derived from POST-VNPAY-PRUNE Plane state. Per the VNPAY memo (project_vnpay_onsite_wk17_wk19), real-at-time numbers were: WK17 ≈ 34% (98-item plan abandoned mid-cycle), WK18 ≈ 92% of a mid-week-trimmed 13-item plan (real plan was 83 items), WK19 = 34/100 = 34%. Real consecutive low-completion: WK17→WK20 = 4 cycles in a row below 75% if you count the original commitments. Plane's "WK17–19 = healthy" framing is an artifact of how Plane stores cycles, not reality.
The absolute throughput line (40 done in WK20 vs 34/12/35 in prior cycles) is the most honest signal: the team consistently ships 30-40 items per cycle regardless of commitment size. WK20 didn't fail at delivery — it failed at planning the commitment to match capacity.
Forecast (Monte Carlo, simple)
Based on actual absolute throughput across the prior 4 cycles (34+12+35+40 = 121 done / 4 cycles) = ~30 items/cycle, ~16 active members = ~1.9 items/member/cycle. Same number whether you use pruned or unpruned commit baselines, since these are done items not committed.
| Workstream | Remaining | 50% confidence | 85% confidence |
|---|---|---|---|
| PIN auth redesign cluster (BANA-1103-1107) | 5 | end of WK22 (2026-05-31) | mid-WK24 (~2026-06-14) |
| Hai Cao Excel-import cluster | 5 | requires owner outside Hai | undefined until reassigned |
| Hai Cao Menu cluster | 6 | requires owner outside Hai | undefined |
| Invoice thread (BANA-516/729/730/750) | 4 | undefined — Viet alone won't ship in 1 cycle | needs pair-up |
| Variant Option cluster (BANA-933, 935-938) | 5 | end of WK22 | mid-WK23 |
| Zombies (BANA-344, 509, 512, 538, 620, 621, 628, 770) | 8 | won't ship — cancel | — |
Caveat: forecast assumes prior-cycle throughput holds. If WK21 spends meaningful time on triage (recommended), shipping rate will be lower.
Action Triggers Fired
| Trigger | Fired | Recommended Action |
|---|---|---|
| Completion < 75% for 2 consecutive cycles | Conditional YES — only WK20 (41%) is below 75% per Plane snapshot; per VNPAY-adjusted history, 4 consecutive cycles WK17-WK20 are all below 75% | Reduce next sprint commitment by 15% — but WK21 is already over-loaded, so this means EXTRACT items from WK21, not just cap next planning |
| Member > 5 items (overload) | YES — 7 members: Hai 41, Phat 28, Khoa 20, Duc 12, Tai 8, Kien 6, Phuc 6 | Redistribute before WK21 daily work begins. Note: Kien at 6/6 done is "overloaded but delivering" — flag for capacity-planning input, not redistribution |
| Any member < 70% done for 2 cycles | NO per Plane (WK19 was 100% for most members); but WK20 alone shows 10 members below 70% — same conditional caveat | Watch WK21 for sustained low-completion before pair-up |
| Carry-over age > 2 weeks | YES — 51 items age ≥3 weeks; 18 of those are ≥6 weeks (true zombies) | Per template MUST split or cancel all 51 — execute today before WK21 work begins |
| Cancellation > 15% | NO (1.0%) | — |
| Workload max/min ratio > 3× | YES (41×) | Rebalance — Hai Cao is single point of failure on commerce |
| Health Score < 60 | YES (28) | Dedicated retrospective required — schedule before WK22 planning |
| Completion > 95% for 2 cycles | NO | — |
Recommendations (priority order, for Monday standup)
- 60-min triage on the 56 transferred items before any WK21 daily work. Outcome: cancel 8 zombies (BANA-344, 509, 512, 538, 620, 621, 628, 770), defer Excel + Menu clusters to WK22+ or backlog, consolidate BANA-720/965/964 to one ticket.
- Cap WK21 at ~40 active items. Currently 94 → remove ~54 via the triage above (most to WK22 or backlog).
- Pair anh.le with phuc.duong on identity work; BANA-1073 was past-due on day one of his first week.
- Pair viet.vo on invoice thread — 4 items, 6+ week age, 20% solo completion = stuck.
- Audit Hai Cao's load: 41 committed is structurally impossible. Move Menu (902-907) and Excel (890-894) out of his queue or reassign owner.
- Schedule WK20 retrospective — Health 28 triggers mandatory retro per template. Topic: "the team has been carrying 50-100 deferred items since WK17; WK20 was the first cycle where we counted them. What's the planning discipline we adopt for WK22+?"
- Backfill modules on the 10 module-less items (BANA-792, 793, 801, 803, 810, 855, 926, 944, 945, 1072) per project rules.
Note on context
Per project memory project_vnpay_onsite_wk17_wk19, WK17–WK19 saw 5 VNPAY POs onsite at NEXPANDO and team capacity was redirected to VNPAY MVP. The cycles were not re-planned at the start of the pivot, so 50-100 items per cycle were quietly deferred and later removed from Plane.
WK20 was meant to be the "restart" cycle but committed 97 items, which appears to include the accumulated VNPAY-deferred backlog. The team delivered 40 items (consistent with their actual ~30-40 items/cycle throughput across the entire period), but the 97-item commitment exposed the deferral debt as a single-cycle "miss".
The correct framing for the retrospective is not "WK20 failed" — it is "the WK17→WK20 deferral pattern surfaced in WK20". The action is planning discipline (commit only what we can do), not delivery improvement (the team is already shipping at sustainable pace).
Data Integrity Notes
- WK20 cycle now contains 41 items (40 completed + 1 cancelled) — confirmed via retrieve_cycle
- WK21 cycle now contains 94 items (13 done + 30 started + 42 unstarted + 9 backlog) — matches 37 originally planned + 56 transferred + 1 review item; confirmed via retrieve_cycle
- Health score math re-derived: 0.30×48.5 + 0.25×12.5 + 0.20×2.4 + 0.15×0 + 0.10×96.9 = 27.86 → 28
- Carry-over age buckets recounted: 18 zombies (≥6w) + 33 (3-6w) + 1 (1-3w) + 4 (<1w) = 56 ✓
- Person-assignment math: 145 person-assignments across 97 items (avg 1.49 assignees/item); top-3 = 89 = 61.4% of person-load
- 4-cycle trend caveat added — WK17-19 numbers are post-VNPAY-prune snapshots, not committed reality
Related Pages
- Sprint Reviews · Roadmap · Changelog · Traceability Matrix
- Plane: BANA-1117 — Sprint review 2026_WK20 (Report)
- Next: WK21 review