4.3 KiB
RUN — W2 KHKK: CRUD phiếu nháp + căn cứ b.8-9 + FE 3 page ×2 app (S161, 2026-07-29)
Wave 2/6 dry-run toàn trình. Spec:
../2026-07-29-S160-khkk-dryrun-plan/spec-wave-w2-crud-nhap-29-07-2026.md. W1 ĐÃ SHIP (a8027c0, cicd PASS 6/6 — synthesis../2026-07-29-S161-khkk-w1-schema/w1-synthesis.md). Gate 5-anchor: PASS 5/5 @S161 (flatten-trap :427-439 · guard+snapshot :53-62 · guard-type-trọn :258-267 · staticMap-comment content-found @:2215 [drift từ 2207 do commit W1 — neo content] ·KeHoachKyKet ∈ All:180THẬT). ⚠️ Lệch phát hiện @gate: entity comment W1 "gen mã lúc Submit" ≠ spec W2 "gen lúc CREATE" (acceptance POST trả maKeHoach) — SPEC THẮNG, worker sửa comment entity cùng lượt.
taskList snapshot
| # | Stage | Vai / cách | Trạng thái |
|---|---|---|---|
| 1 | Đợt-1a BE: mega-file ContractSigningPlanFeatures.cs (Create+auto-Lines+MaKeHoach@CREATE · UpdateDraft · Get/List/pendingMe+inbox-precompute · Dossier UPSERT/DELETE · Attachments · DELETE allow-list · picker PE-chờ-lập-KH) + ContractSigningPlansController authz 2-tầng per-action |
hmw implementer-backend |
[x] wf_6f0aad26-229 lane-0 chết #53 sau §7 NHƯNG sub-md 16.5KB ghi-từng-mục TRỌN (tự mở 5 anchor + grep-cùng-lớp 3 site comment + 15 endpoint policy 15/15 + 4 quyết D1-D4 khai-lead-phân-xử → lead DUYỆT cả 4) · build lead 0W/0E |
| 2 | Đợt-1b FE: pages/khkk/ 3 page + types ×2 app + 4-place mirror (routes + staticMap re-point 6 leaf khỏi coming-soon + menuKeys) + build ×2 + SHA-pair |
hmw implementer-frontend |
[x] lane-1 chết #53 sau MUC-1+cp (SHA-pair 4/4) → lead solo đuôi: Layout ×2 re-point 6 leaf (WfView 2 app 2 đường: user=alias matrix?type=10 whitelist+10 · admin=Designer deep-link) + fe-admin App routes + root KeHoachKyKet→/khkk/list; menuKeys place-3 SKIP-có-khai (0 consumer). Build ×2 PASS + coming-soon 0/0 |
| 3 | Đợt-2: test-specialist (≥2 test PIN: ContractSigningPlansController_EveryWriteEndpoint_HasAuthorizePolicy + CreateContractSigningPlan_FromNonApprovedPe_Throws) |
hmw test-specialist |
[!] wf_7490179a-70b ĐANG CHẠY nền |
| 4 | Lead: build ×2 + suite + acceptance §③-B sweep | lead | [x] build BE 0W/0E ×2 lượt · suite 574/0 ×2 lượt (trước + SAU 12 fix) · FE ×2 PASS + marker trong RUỘT bundle 1/1/1 (chứng build thật — 466ms rolldown-warm) · SHA-pair 4/4 giữ |
| 5 | Reviewer adversarial (CRUD endpoints POST/PUT/DELETE — bắt buộc) | reviewer |
[x] PWF 12 finding (3 CRIT · 5 MAJ · 4 MIN) — Trục-1 đứt-2-bờ VỠ NẶNG 6 điểm (route picker · peId · dossier planId · PUT-vs-POST · peTenGoiThau · winnerSupplierNames — 2 lỗi che nhau F-1/F-6; "lời-khai bên-kia-sẽ-khớp = giả định, không phải phép đo") + F-8/F-9 security detail+download 0-rào (PE twin CÓ — thụt chuẩn S89) → 11 FIXED + 1 GIỮ (F-10 kế thừa khuôn PE); vai chết #53 sau Trục-4 → lead đo nốt Trục 5 (test ĐỘNG ĐẠT) + 6 (boundary 0-diff ĐẠT) + 7 (tự-kiểm khai bias) + verdict on-behalf. sub-reviewer-3.md END+TOTAL=12 |
| 6 | Commit + push + cicd (3-chân-kiềng + 2-bearer NẾU có tài khoản non-Admin — nv.test KHÔNG tồn tại prod, xem w1-synthesis tồn-2) | lead + cicd-monitor |
[!] commit 6cbc6ad (20 file +5.020/−23, F-0 gate ĐẠT) PUSHED → cicd spawn nền (6 phép: CI 574 · 0-mig MIGTOP giữ · menu 142 · marker approved-pe-awaiting-plan 2 app · smoke KHKK GET · CỜ giữ) |
Tồn W2: F-10 upload/delete-attachment no-owner-check = lỗ CHUNG khuôn PE — bịt ĐỒNG BỘ 2 module 1 đợt riêng (cần anh gật vì đụng PE đang chạy prod).
Ràng buộc mang theo
- 🔴 CẤM copy phần DUYỆT của Proposal (bẫy flatten :427-439 — OR-of-N thành AND; duyệt = W3 con-trỏ-đôi mirror PE).
- 🔴 Guard workflow-type copy TRỌN :258-267 (cả nhánh NotFound), đổi đích
ContractSigningPlan=10. - 🔴 Authz 2 tầng (#82): class
[Authorize]+ per-actionPolicy="KeHoachKyKet.{Action}"— grep ≥4. - 🔴 409-khoá-vĩnh-viễn: DELETE allow-list mở NGAY W2 (M6) + tạo-lại-sau-TuChoi/xóa được (#57).
- 🔴 FE 4-place ×2 app SHA-pair; 6 leaf hết coming-soon (grep = 0 cả 2 app).
Stages
(cập nhật theo tiến độ)