# run — KHKK 8 workflow-nhóm mirror trang Duyệt NCC (YC-013, S182/L13) - ts-mở: 2026-08-08T00:50+07:00 · HEAD nền: `936d1aed` (cây làm việc) - lead: **Fable 5** (anh `/model claude-fable-5` @S182 — chủ dự án đổi, 0 caveat) - yêu-cầu: `YC-013` sổ `docs/governance/so-yeu-cau-chu-du-an.md` (nguyên văn + 4 ảnh) ## Đề bài (từ 4 ảnh anh gửi) Trang `admin.solutions.com.vn/system/approval-workflows-v2/DuyetNcc` (QT-DN-V2-001 v04) có ĐỦ: xem 3 Bước × Cấp × NV + badge role · **Sửa tại chỗ** (dialog per-NV **9 checkbox quyền duyệt**: Trả-về-1-Cấp-trước / Trả-về-1-Bước-trước / Trả-về-Người-chỉ-định / Trả-về-Drafter-mặc-định / Sửa-Section-2 / Sửa-Section-ngân-sách / Duyệt-thẳng-Cấp-cuối / Duyệt-là-KẾT-THÚC / **XÓA phiếu**) · **Tạo phiên bản mới** · **Ghim/Bỏ ghim** (Cho user chọn) · **Xoá version** · Lịch sử versions (v03 Archived) · Tạo quy trình mới · rule-box (mỗi Bước 1 Phòng + tối đa 3 Cấp, OR-of-N, tuần tự). **8 mục sidebar "Duyệt KHKK — Nhóm 1..8"** (khoanh đỏ) phải **GIỐNG NHƯ VẬY** — thêm/sửa/xóa/edit/stick tương tự Duyệt NCC, UI **không lệch**. ## Pipeline (anh chỉ định trong YC-013) | bước | engine | trạng thái | |---|---|---| | B1a `/fable-real investigator-codebase` — lens **BE** | Fable single deep-pass | [ ] | | B1b `/fable-real investigator-codebase` — lens **DATABASE** | Fable single deep-pass | [ ] | | B1c `/fable-real investigator-codebase` — lens **FE-UI** ("đúng nhất về UI lẫn giao diện, ko lệch") | Fable single deep-pass | [ ] | | B2 lead tổng hợp 3 lens → **wave-plan chi tiết** (spec draft) | lead Fable | [ ] | | B3 ×2 `/fable-real reviewer` — review + tổng hợp wave-plan | Fable single ×2 | [ ] | | B4 lead chốt **spec final** | lead | [ ] | | B5 **hmw fan-out Opus 5 MAX** execute wave | Workflow hmw.js (worker-pin opus+max) | [ ] | ## Artifact chờ `sub-invest-be-fable.md` · `sub-invest-db-fable.md` · `sub-invest-fe-fable.md` · `spec-khkk-awf-mirror-ncc-DRAFT.md` · `sub-review-1-fable.md` · `sub-review-2-fable.md` · `spec-khkk-awf-mirror-ncc-08-08-2026.md` · `implement-synthesis.md` ## Đo nền W0 (R-3 — số đo TƯƠI, lane implementer-backend, 2026-08-08) `baseline-W0: 645 PASS (45D+600I)` — 0 fail, 0 skip. Lệnh: `dotnet test SolutionErp.slnx` chạy **sau** W0.1/W0.2, HEAD nền `936d1aed` + 0 sửa mã. Domain 45 (407 ms) · Infrastructure 600 (35 s). ⇒ **W1 đạt khi FULL suite = 645 + 14 = 659, 0 fail.** W0.1 (mig ×2 DB): `SolutionErp_Dev` + `SolutionErp_Design` cùng từ `20260731085624` (Mig 71) → **`20260806070242`** (Mig 72) ✅. *(Khai: local có BA DB — `SolutionErp` base ở `appsettings.json:3` bị `appsettings.Development.json:3` override nên KHÔNG phải DB runtime; lượt đầu tôi trỏ nhầm vào nó, đã chạy lại đúng 2 DB — chi tiết `sub-implementer-backend-0.md §1`.)* W0.2 (seeder): boot API 1 lần (`ASPNETCORE_ENVIRONMENT=Development`) ⇒ **8 row `KHKK-N1..8`, ApplicableType=10, IsActive=1, IsUserSelectable=1**, mỗi row 3 Bước / 9 Cấp (roster local resolve ĐỦ người). Đã tắt API sau khi seed. ## Chống-#53 (7/7 vai garble @bookend-open phiên này) Mỗi sub **GHI ARTIFACT LIÊN TỤC TRONG LÚC LÀM** vào đúng 1 file `sub-*` của mình; return chỉ cần VERDICT-header + con-trỏ. Return garble ⇒ đĩa cứu.