diff --git a/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md b/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md
index c520b61..2a743a3 100644
--- a/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md
+++ b/.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-frontend-designer-0.md
@@ -55,3 +55,24 @@ T1b — `fe-user/src/pages/pe/PurchaseEvaluationsListPage.tsx` (sửa 4 chỗ, K
- `yearGroups` KHÔNG đổi ⇒ badge count ở summary Hạng mục vẫn là số phiếu; folder GĐ1 lặp lại số đó là CỐ Ý (đọc theo hàng ngang: 1 gói có mấy phiếu / mấy KHKK / mấy HĐ).
Verify: `npx tsc -b --force` trong fe-user ⇒ **TSC_EXIT=0** (build đầy đủ chạy ở MỐC 3).
+
+## MỐC 2 — T1c + T1d + T1e + T1f XONG
+
+T1c `fe-user/src/pages/khkk/KhkkListPage.tsx`: +import `PipelineTreePanel`; PageHeader giữ full-width, phần còn lại bọc lưới `lg:grid-cols-[19rem_minmax(0,1fr)] xl:[21rem_…]` với `` cột trái (folder "Kế hoạch Hợp đồng" mở sẵn); cột phải `min-w-0 space-y-5` chứa NGUYÊN KpiCard + ô tìm + bảng + phân trang. 2 sửa nhỏ chống vỡ layout: hàng KpiCard `lg:grid-cols-6` → `xl:grid-cols-6` (6 thẻ không nhồi vào cột hẹp) và `
` bọc `overflow-x-auto`. Query `['khkk-list',…]`, `FILTER_TO_PHASE`, chip-lọc-không-ghi-URL: KHÔNG đụng.
+T1d `fe-user/src/pages/contracts/HardCopiesPage.tsx`: cùng khuôn, `currentStage={4}` (folder "Hợp đồng cứng" mở sẵn). PageHeader + ghi chú 1-MỐC amber giữ full-width; ô tìm + bảng + `HardCopyPanel` (upload/download/ý kiến duyệt) vào cột phải; `` bọc `overflow-x-auto`. Query `['hard-copies',…]` + `?type=` server-side + `SEALED_COPY=3`: KHÔNG đụng.
+
+T1e mirror fe-admin — CẢ 6 file, verify `sha256sum` SAU khi copy, KHỚP 6/6:
+| file | sha256[0:16] |
+|---|---|
+| components/pipeline/PipelineStageFolders.tsx | 4b37bf51d5211348 |
+| components/pipeline/PipelineTreePanel.tsx | 127acc85399b033c |
+| hooks/usePipelineStages.ts | e762d5eb9c3a057a |
+| pages/pe/PurchaseEvaluationsListPage.tsx | 1d8d8f75c7d2cc14 |
+| pages/khkk/KhkkListPage.tsx | 40a650bf6964ab4b |
+| pages/contracts/HardCopiesPage.tsx | d30a911e7483f96a |
+`fe-admin/src/types/contracts.ts` KHÔNG đè (bản admin `ContractPhaseColor` khác — cố ý, component chỉ đọc key nên vẫn biên dịch).
+
+T1f build gate:
+- fe-user `npm run build` → **EXIT 0**, `✓ built in 21.91s`, `dist/assets/index-CaEssrop.js 1,629.67 kB │ gzip 411.70 kB`, css 91.82 kB.
+- fe-admin `npm run build` → **EXIT 0**, `✓ built in 10.15s`, `dist/assets/index-BtjKK7qJ.js 1,713.48 kB │ gzip 425.60 kB`, css 86.14 kB.
+- Warning cả 2 app = PRE-EXISTING (chunk >500 kB · INEFFECTIVE_DYNAMIC_IMPORT `src/lib/realtime.ts`). 0 lỗi TS.