# 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 | [x] |
| B1b `/fable-real investigator-codebase` — lens **DATABASE** | Fable single deep-pass | [x] |
| 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 | [x] |
| B2 lead tổng hợp 3 lens → **wave-plan chi tiết** (spec draft) | lead Fable | [x] |
| B3 ×2 `/fable-real reviewer` — review + tổng hợp wave-plan | Fable single ×2 | [x] |
| B4 lead chốt **spec final** | lead | [x] |
| B5 **hmw fan-out Opus 5 MAX** execute wave | Workflow hmw.js (worker-pin opus+max) | [x] |

## 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.
