[CLAUDE] Docs: S187-S188 closeout — bookend ONE-SHOT 8 vòng + vá 4 bề mặt stale (Tests 668→680 · bundle 2 đời · roster README · Modules GĐ3) + 2 carry mới + seed 12 diary + orphan S187 đóng
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m40s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m40s
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@ -2,7 +2,18 @@
|
||||
|
||||
> **Tiering rule (S40):** giữ **2-3 session gần nhất**. Cũ hơn → `docs/changelog/sessions/`. Full brief history pre-S40 → `docs/_archive/HANDOFF-preS40-fullhistory.md`.
|
||||
|
||||
**🆕 Last updated:** 2026-08-10 (**S182→S185 ĐÓNG** — phiên-LOGIC **L13** windows 1-4, closeout ONE-SHOT lượt đầu; nhãn cũ "S180→S181/L12" giữ ở segment dưới). **YC-013 KHKK 8-panel SHIP+verify · YC-016 guard tay-cầm-phiếu SHIP+verify · YC-017 pipeline email/adap TRỌN (0/39 nợ per-id) · YC-018 ONE-SHOT bookend land 4 site · bookend @close MỘT MẠCH 9 vai** (trio 40Đ/4T · H24 deep 16 FLAG · ring1 30Đ/3T · ring2 16Đ/0T · ctx-audit 8 FLAG · harvest 698KB→17 khối/11 sổ). Adap-report 08-08: `docs/governance/adap-reports/2026-08-08-Governance-quy-trinh-hai-dau-phien-may-diem-danh-va-6-bai-hoc.md` (F-4 vá: trỏ bền tại đây).
|
||||
**🆕 Last updated:** 2026-08-10 (**S187→S188 ĐÓNG** — phiên-LOGIC **L14** window 2-3): **module Duyệt Hợp đồng GĐ3 từ KHKK SHIP PROD 2 đợt** — đợt-1 `0149f106` (W1/W2/W7) + cụm `b275893c` (W3/W4/W5/W6) + sổ `80febec9`; test **680** · 0-mig · Menu keys **120** / Policies **480** · cicd **4/4 + 5/5** · W10 dry-run Dev **PASS 5/5**. Owner: YC-024 9 đáp án (80)-(88) + YC-025 *"làm tiếp hết, review 1 lần"*. **W8 authz HOÃN** (chờ anh nói "ổn rồi") · **W9 HỦY**.
|
||||
> 🔺 **CARRY MỚI @S188 — ADDITIVE vào danh sách RE-STAMP dưới:** `[carry:w7b-inbox-param]` *(BE `/contracts/inbox` thêm `?type=` + bỏ `Take(100)` → rồi FE mới gỡ client-filter `InboxPage`; kèm `ContractCreatePage` ×2 app cùng lớp lọc-client-sau-phân-trang)* · `[carry:fe-contract-family-drift]` *(`fe-admin/src/lib/contractWorkflowFamily.ts` chép 7 mã `HD-*` — khớp BE hôm nay, cần drift-watch vì 2 nhà)*. 🔴 **Vì sao phải ghi TAY ở đây:** `lead-gap-auditor` DEEP FLAG-1 chứng nợ này **chỉ sống trong WAL**, mà `§6.4` xoá trắng WAL ở bước CUỐI, và nghi-thức re-stamp **chép danh-sách kỳ trước** nên slug sinh-trong-WAL **vô hình có cấu-trúc** ⇒ không lượt chép nào nhặt được.
|
||||
> 🔵 **NEXT-em @S188 (tự chạy, KHÔNG cần anh gật) — xếp theo mức đau, có SỐ sẵn để thi hành:**
|
||||
> 1. 🔴 **`harvest-curator/MEMORY.md` — thiệt hại ĐANG XẢY RA, không phải cảnh báo** (`harness-refine` E1): 30.231 B = **27.298 ký-tự, vượt đường-cắt ~25.000 tới 2.298** ⇒ hook cắt từ ĐÁY mà corpus append bản mới xuống ĐÁY ⇒ **vai mất đúng bản ghi mới nhất của nó**; entry `## S188` lead vừa seed nằm TRỌN trong vùng bị cắt. Còn **489 B** là chạm `soft_cap` 30.720. Thuốc đã có sẵn số từ A3@S186 (chưa land). 🔴 **Cố ý KHÔNG cắt tay cuối phiên context-hẹp** (LT3 bậc-3: mơ hồ + phá huỷ ⇒ dừng) — làm ở lượt có đủ ngân sách, theo trình tự `reviewer:96` **append archive TRƯỚC → probe moved-not-cut bằng token lấy từ THÂN BÀI + control-âm → mới cắt**.
|
||||
> 2. **`reviewer/MEMORY.md`** (E2) — còn **485 ký-tự** là chạm; A1@S186 đã tính sẵn (6 stub 7.505 → ~720 B, verbatim ĐÃ ở archive, probe 8 hit + control-âm 0/0) ⇒ **rẻ nhất, rủi ro thấp nhất**, mà chưa land.
|
||||
> 3. **`ring1-audit/MEMORY.md`** (A1 refine) — move 3 bản ghi cũ nhất (6.469 B) → dưới low-watermark, biên 835 B; 🔴 **KHÔNG chép thuốc gắn `##` của `ctx-audit`** (BÁC-5: sau khi gắn, keep-floor sẽ che entry mới còn S181 + `## Seed` rơi vào pool drain ⇒ máy nguy hiểm hơn).
|
||||
> 4. **`measured` chết kỳ thứ 5** (E3) — chạy `measure-agent-memory.ps1` re-sync (file cấm hand-edit); 19/29 phủ, 18/19 lệch, đỉnh **13,14×**.
|
||||
> 5. **E4 — tái phình sau archive ĐẠT, nay 2 vai** (`tooling-auditor` @S185 · `lead-gap-auditor` 14.798 → **27.639**, cao hơn TRƯỚC khi archive) ⇒ **bệnh TỐC-ĐỘ (+364 B/2h ngay giữa closeout), không phải bệnh MỨC** — lặp archive theo mức sẽ tái diễn vô hạn; cần hướng khác (hạn tốc-độ ghi? tách tầng? đổi quy-ước?).
|
||||
> 6. **N1-N3 → `tooling-auditor`:** `mfe-eval.ps1:288/:299` lệch dòng ⇒ MISS-có-tên **quy sai vai** khi đọc thẳng · `.mfe-state.json` anchor `strikes_total=25` **bất động 29 lần chạy/16 ngày** · `.archive-strikes.json` stale 3 ngày + thiếu 3 vai + vênh `ring2` 1↔2. **N4 → `lead-gap-auditor`:** headroom **125.828** (−84.172 so target, 13 mốc đơn-điệu giảm, tốc-độ ~3,2× nhanh hơn) + hotload +26.236/ngày với **`HANDOFF.md` gánh 66%** — chính file này.
|
||||
> 7. **Trục bookend CHƯA soi** (4 vai chết non): H1 mặt-1 skill + mặt-4 docs · H2 5-trục+C2 · lead-stale 3 trục cuối · ctx-audit khoản 2-4 · **`harness-audit` (trio nấc-3) + `ring2-audit` + `ring5-audit` chưa chạy** — bảng-nhãn + điều-kiện chạy lại ở `runs/2026-08-10-S188-bookend-close/bang-nhan-nghi-thuc.md`.
|
||||
>
|
||||
> 🧊 *(Segment cũ **S182→S185/L13** giữ nguyên bên dưới.)* Nguyên văn cũ: — phiên-LOGIC **L13** windows 1-4, closeout ONE-SHOT lượt đầu; nhãn cũ "S180→S181/L12" giữ ở segment dưới). **YC-013 KHKK 8-panel SHIP+verify · YC-016 guard tay-cầm-phiếu SHIP+verify · YC-017 pipeline email/adap TRỌN (0/39 nợ per-id) · YC-018 ONE-SHOT bookend land 4 site · bookend @close MỘT MẠCH 9 vai** (trio 40Đ/4T · H24 deep 16 FLAG · ring1 30Đ/3T · ring2 16Đ/0T · ctx-audit 8 FLAG · harvest 698KB→17 khối/11 sổ). Adap-report 08-08: `docs/governance/adap-reports/2026-08-08-Governance-quy-trinh-hai-dau-phien-may-diem-danh-va-6-bai-hoc.md` (F-4 vá: trỏ bền tại đây).
|
||||
> 🔢 **CHỜ ANH @S185 closeout — CHỈ CÒN 1 VIỆC VẬT-LÝ (@S188 lật (73), trước ghi 2):** ~~(73) restart CLI~~ *(✅ ĐÓNG @S188 — vế restart ĐÃ THOẢ bằng đo: spawn-probe `back-end-reviewer-style` ×fable ALIVE 15:47 @S187, registry phiên-CLI-mới tự nạp; chi tiết khối (73) dưới)* · **(74)** rotate mật khẩu prod `vrapp` *(treo từ S153 — em không đụng credential)*. Mọi câu governance khác anh ĐÃ PHÁN HẾT trong phiên: **YC-019 (6) + YC-020 (5) + YC-021 (4) + YC-022 (1) = 16 phán quyết, 0 câu treo**.
|
||||
> 🔵 **NEXT-em @S185 (tự chạy, không cần anh):** 3 over-cap còn (`reviewer` 31.341 vừa-harvest-để-lắng · `harvest-curator` 28.071 · `ctx-audit` 26.695 — xử theo E4 "bệnh TỐC-ĐỘ, không phải MỨC") · **C-1 W3b chờ rider-jump được DỰNG** (nợ-chưa-có-chủ F-L2-2) · E1 `-Detail` đã cắm ⇒ closeout kế có TÊN mục MISS để reinject · 3 món thiết-kế ctx (nhịp-refresh-`_mind` vào CHỮ · `LEAD-PHAI-NHAC-LAI` 0-hit · trần đối-chứng 36,7%) · `/day` gõ-thật lần dậy sạch tới + self-check ca-3/4/5 thư hub.
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,58 @@
|
||||
# S187→S188 — YC-023/024/025: module **Duyệt Hợp đồng (GĐ3)** từ KHKK
|
||||
|
||||
> 2026-08-10 · phiên-LOGIC **L14** (window 2-3) · lead = Fable 5 (đổi Opus 5 @closeout) · 0 migration · test **668 → 680**
|
||||
> Run-trace: `.claude/workflows/runs/2026-08-10-S187-duyet-hd-tu-khkk/` (11 artifact) + `…/2026-08-10-S188-bookend-close/`
|
||||
> Push: `bc309c55..0149f106` (đợt-1) · `0149f106..b275893c` (cụm) · `80febec9` (sổ) — cicd **4/4** + **5/5**
|
||||
|
||||
## 1. Owner-decisions (nguyên văn → sổ yêu-cầu)
|
||||
|
||||
| mã | tóm | thi hành |
|
||||
|---|---|---|
|
||||
| `YC-023` (S187) | mở module Duyệt HĐ GĐ3 mirror PE/KHKK, quy trình per-LOẠI, kế thừa KHKK đã duyệt; điều phối 2 invest + 1 style-review + 1 plan-review ×`/fable-real` → fan-out Opus 5 MAX per-wave | 4/4 lượt Fable xong → spec → 2 đợt fan-out |
|
||||
| `YC-024` (S188) | **9 đáp án (80)-(88)** | 7-LOẠI · PA-A · mở-tất-cả-trước (W8 HOÃN) · roster sao khuôn KHKK · 2-nút · admin giữ ẩn (W9 HỦY) · khoá cứng · 0-cột-gợi-ý · ruột pre-fill |
|
||||
| `YC-025` (S188) | *"làm tiếp hết đi, xong hết tao review 1 lần"* | W3-W6 + W10 chạy trọn không dừng giữa wave; push gom; trình review 1 lần |
|
||||
|
||||
## 2. Chuỗi 4 lượt `/fable-real` (STAGE A-C) — S187→S188
|
||||
|
||||
- **invest BE** (26.119 B) + **invest FE** (21.981 B) song song 2 lăng kính. Lõi: V2 tái dùng 100% · `ApplicableType=3` không phân loại · **phiếu GĐ3 = chính `Contract`** (0 entity mới) · 0-mig · vỏ FE đủ 42 leaf `Ct_*` · khuôn duyệt = `KhkkWorkflowPanel`.
|
||||
- **style-review** (`back-end-reviewer-style` ×Fable, 21.680 B) — `PASS_WITH_FLAGS — 7 flag`; nặng nhất **FLAG-2 wave MỒ CÔI**: F1/F2 cần BE-DTO mà wave-list không có.
|
||||
- **plan-review** (`reviewer` ×Fable, 29.647 B) — 12/12 claim re-verify bằng code + **3 phát hiện mới**: ① FE đề xuất DTO khuôn **PE** trong khi panel mirror là khuôn **KHKK** (chọn PE = viết lại panel) · ② `fe-admin` ẩn `Ct_*` **2 TẦNG** (`ADMIN_HIDDEN_KEYS` + prefix-rule `:248`) · ③ đường fetch cây workflow đã có sẵn. Ra **plan 11 wave** + hợp nhất 12 nhãn CHỜ-ANH → **9 câu** + 3 tự-quyết.
|
||||
- Lead verify + ghi [`spec-duyet-hd-10-08-2026.md`](../../../.claude/workflows/runs/2026-08-10-S187-duyet-hd-tu-khkk/spec-duyet-hd-10-08-2026.md) (H21① 3 heading).
|
||||
|
||||
## 3. Thi công — 2 đợt ship
|
||||
|
||||
**Đợt-1 (0-chặn-owner, `0149f106`):** W1 gỡ 2 bom per-type (test-before 3 ĐỎ-hành-vi → XANH) · W2 BE-DTO nền (`ContractSourceDto` reverse-join KHKK + `CurrentWorkflowStepIndex` + cây thô khuôn KHKK) · W7 server-filter per-type. Reviewer `PASS_WITH_FLAGS — 8`: **F-1/F-2 MAJOR** (3 tên field FE↔BE lệch + nullability — build xanh nên không máy nào bắt) **vá ngay trước commit**; F-4 sửa AC-W7 + nợ `[carry:w7b-inbox-param]`; F-3 treo W6.
|
||||
|
||||
**Cụm W3-W6 (`b275893c`):** W3 seed 7 quy trình `HD-*` sao khuôn KHKK (builder chung; cờ finalize **false** có khai — tránh config-lie #78) + 7 key `AwV2_Hd*` **by-construction** + menu-row T6 + 2 row canonical STATUS · W4 guard 4-cửa nhà chung `ContractWorkflowGuards` (khoá cứng theo loại; bridge `ApprovalWorkflowId` → nullable auto-pin) · W6-BE Đ2 guard đúng-trạm V2 (V1 giữ nguyên) + test security · W5 card "Nguồn gốc KHKK" · W6-FE panel duyệt **2 nút** mirror `KhkkWorkflowPanel` (dual-render V1) + Designer type-3 family-slice.
|
||||
|
||||
## 4. Nghiệm thu
|
||||
|
||||
- **cicd đợt-1** 4/4 · **cicd cụm PASS 5/5**: run #482 success (gate 680) · bundle rotate ×2 app · **seeder chạy thật prod: 7 `HD-*` + 7 menu-row, FK sạch, 8 `KHKK-N*` control nguyên** · smoke 9/9 · DLL marker `ContractWorkflowGuards` 0→4.
|
||||
- **W10 dry-run Dev PASS 5/5** (lead tự chạy sau 4 đời agent chết non): nhánh A `HD-TP` auto-pin → 5 trạm → **DaPhatHanh** (`APVN01/HDTP/SOL&NCC-DIEN/01`) · sai-trạm **403 nêu đích danh Bước/Cấp** · nhánh B gửi mã sai họ → **409 nêu tên mã**, auto-pin → `APVN01/HĐDV/SOL&DV-BAOVE/01` · F3 inbox 2 chiều đúng (approver thấy / ngoài cấp không).
|
||||
- Sổ ID Dev (seq đã cháy — không phải data thật): `KHKK/2026/901` + 2 HĐ `ZZTEST-W10`.
|
||||
|
||||
## 5. Bài học phiên (ứng viên gotcha/memory)
|
||||
|
||||
1. 🔴 **#53 garble ~90% return** (≈15/17 lượt sub) — **đĩa cứu 100%, 0 byte mất**. Lượt nào lead ép "ghi file TRƯỚC TIÊN" thì recover trọn; lượt reviewer-cụm **không ép** → chết trắng 0 trace ×2 ⇒ *ép-ghi-trước-tiên là biến quyết định, không phải lời khuyên*.
|
||||
2. **Agent chết non ≠ mất việc, NHƯNG ledger phải tiến từng đời**: W10 qua 4 đời agent, mỗi đời để lại B0/B1 trên trace ⇒ đời sau nối được; cuối cùng lead tự chạy B2-B5. Trace = đơn vị tiến-độ, không phải return.
|
||||
3. **Tiền-đề spec sai 3/4 ở W7** (fe-admin không có `MyContractsPage`; inbox không có param) — implementer **BLOCKED đúng kỷ luật** thay vì làm bừa ⇒ nợ có mã thay vì bug câm.
|
||||
4. **Build xanh ≠ hợp đồng đúng**: 3 tên field FE lệch BE mà `tsc`/680 test đều im (0 consumer) — chỉ reviewer đọc chéo 2 phía mới bắt.
|
||||
5. **sqlcmd `-i` mặc định `QUOTED_IDENTIFIER OFF`** ⇒ mọi DML trên bảng có filtered index chết `Msg 1934`; `sqlcmd < file` (stdin) chạy **im lặng 0 dòng**. Dùng `-I`.
|
||||
6. **Rate-limit login 5/phút/IP** (`Program.cs` `RateLimit:AuthLoginPerMinute`) — kịch bản nhiều danh tính phải cache token, không login lại mỗi bước.
|
||||
|
||||
## 6. Nợ mang sang
|
||||
|
||||
- `[carry:w7b-inbox-param]` — BE `/contracts/inbox` thêm `?type=` + bỏ `Take(100)`, rồi FE gỡ client-filter (kèm `ContractCreatePage` ×2 cùng lớp).
|
||||
- **W8 authz Đ1 HOÃN** theo (82) — chờ anh nói "ổn rồi". **W9 HỦY** theo (85).
|
||||
- F-3 `ActiveOthers` — Designer đã đi hướng lát-cắt-history (khuôn KHKK) ⇒ field API còn 0 consumer, quyết giữ/gỡ ở wave sau.
|
||||
- Slot chờ anh còn: (74)(76)(77)(78)(79) + tồn (22)(67)(72).
|
||||
|
||||
## 7. memory-triple + gate (điền ở closeout)
|
||||
|
||||
```
|
||||
memory-triple: do=scripts/measure-agent-memory.ps1 · exit 0
|
||||
memory-triple: de-xuat=scripts/memory-archive-gate.ps1 DRY · (xem harness-eval return)
|
||||
memory-triple: kiem=harness-audit · (verdict trong run-folder bookend-close)
|
||||
memory-triple: do-record=governance-detectors TOTAL=59 (INFORM 24 tách riêng)
|
||||
memory-triple: do-record=NHIP-NO: kiem light 2/6 deep 2/1 OVERDUE:deep | tran-bo-nho 5 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 0 ngay | so-yc treo 4 / nhac2+ 2
|
||||
```
|
||||
Reference in New Issue
Block a user