wal: flush 20260807T1634

This commit is contained in:
pqhuy1987
2026-08-07 16:34:14 +07:00
parent 0f0cc4643e
commit 903dcab245
3 changed files with 225 additions and 3 deletions

View File

@ -13,15 +13,18 @@ chain:
- [x] N4 wave-plan: 7 wave + 3 sub gated, 2 chạy-ngay, 5 chờ-anh, 0 loại (50KB) - [x] N4 wave-plan: 7 wave + 3 sub gated, 2 chạy-ngay, 5 chờ-anh, 0 loại (50KB)
- [x] **W0 ĐÓNG — nghiệm thu ĐẠT** (lead verify độc lập): fitmap 11.697B 7/7 dòng 0-ô-trộn · tracking 17.890B 20/20 khoản · _index.md 45->69 dòng (23 se + 46 all), 24 dòng bù (17+7), 7/7+17/17 hash OK 0 tamper, 5/5 bất-biến, VẮNG=0, residual-write ngoài phạm vi = 0 - [x] **W0 ĐÓNG — nghiệm thu ĐẠT** (lead verify độc lập): fitmap 11.697B 7/7 dòng 0-ô-trộn · tracking 17.890B 20/20 khoản · _index.md 45->69 dòng (23 se + 46 all), 24 dòng bù (17+7), 7/7+17/17 hash OK 0 tamper, 5/5 bất-biến, VẮNG=0, residual-write ngoài phạm vi = 0
- [x] **W1-a XONG** — kiểm kê 14 đoạn máy (11 VỠ-CÂM · 3 vỡ-ồn · 0 tự-thích-nghi), 9 nhóm tên / 28 họ, 44.914B. BÁC HẲN 2 mục lane A (`detectors:1716`+`:1679` = dòng CHÚ THÍCH không phải mã; `applied-eval-nokey` = 0 file-IO) - [x] **W1-a XONG** — kiểm kê 14 đoạn máy (11 VỠ-CÂM · 3 vỡ-ồn · 0 tự-thích-nghi), 9 nhóm tên / 28 họ, 44.914B. BÁC HẲN 2 mục lane A (`detectors:1716`+`:1679` = dòng CHÚ THÍCH không phải mã; `applied-eval-nokey` = 0 file-IO)
- [!] W1-b ký chuẩn + `naming-scan.ps1` INFORM-only + 3 vá kèm — ĐANG CHẠY - [x] **W1-b XONG — W1 ĐÓNG**: `naming-standard.md` 31.822B (11/11 ràng buộc) + `scripts/naming-scan.ps1` 14.341B INFORM-only + 3 vá 3/3. Scan 233 tên / **8 lệch** (BÁC lane a "23": 16 script `s<n>-`/`plan-` = một-lần HỢP LỆ). Fault-inject **4/4 BA chiều** (A cấy lệch->kêu · B cấy đúng->0 dương-giả · **A2 đổi cả tập -> FLAG THIẾU-TẬP cạnh LỆCH 0**, số 0 mất quyền đọc thành sạch). 0 tên bị đổi.
- [!] W2 GĐ-2 lưới ghi đĩa — ĐANG CHẠY
LUẬT THIẾT KẾ W1-a đo được (ràng buộc mọi wave sau): LUẬT THIẾT KẾ W1-a đo được (ràng buộc mọi wave sau):
"một nhóm tên sạch CHÍNH XÁC tới độ sâu máy của nó KIỂM, không sâu hơn một nấc" "một nhóm tên sạch CHÍNH XÁC tới độ sâu máy của nó KIỂM, không sâu hơn một nấc"
=> vế "phải STOP-HARD" ĐỔ (session-<N> sạch 12/12 dưới máy chỉ INFORM); vế "phải có máy TỪ CHỐI" ĐỨNG => vế "phải STOP-HARD" ĐỔ (session-<N> sạch 12/12 dưới máy chỉ INFORM); vế "phải có máy TỪ CHỐI" ĐỨNG
=> CẤM ký chuẩn sâu hơn máy => CẤM ký chuẩn sâu hơn máy
BẪY-4 giải bằng ĐỔI TẬP ĐO: quét .md = 1.545, miễn trừ 1.131 (73,2%), 90,7% chỗ lệch NẰM TRONG vùng miễn trừ => 0-hit vô nghĩa. BẪY-4 giải bằng ĐỔI TẬP ĐO: quét .md = 1.545, miễn trừ 1.131 (73,2%), 90,7% chỗ lệch NẰM TRONG vùng miễn trừ => 0-hit vô nghĩa.
Thay bằng quét 231 tên VẬT-BỘ-MÁY: 0 miễn trừ, 23 lệch thật => có răng ngày đầu. Thay bằng quét tên VẬT-BỘ-MÁY: 0 miễn trừ => có răng ngày đầu.
- [ ] W2 GĐ-2 · W3 GĐ-3 · W5 GĐ-5 (tự chạy) · W3b/W4/W4b/W5b/W6 chờ anh 🔴 So "23 lech" cua lane a DA BI W1-b BAC: do that = **8** (16 script `s<n>-`/`plan-` la mot-lan HOP LE, dem rieng).
Lane a du bao 231 ten, W1-b do 233. CA HAI deu dung — dem khac thoi diem/khac tap. Dung chep so, chay `scripts/naming-scan.ps1`.
- [ ] W3 GĐ-3 · W5 GĐ-5 (tự chạy) · W3b/W4/W4b/W5b/W6 chờ anh
next: W0 xong -> W1; hỏi P3/P5/P7/P8 khi chạm W3b/W4b/W5b next: W0 xong -> W1; hỏi P3/P5/P7/P8 khi chạm W3b/W4b/W5b

View File

@ -1,5 +1,7 @@
# Implementer-Backend Agent — Persistent Memory # Implementer-Backend Agent — Persistent Memory
- **S180 (2026-08-07) lane W1-b — ký chuẩn đặt tên + dựng máy soi (11/11 ràng buộc · 3/3 vá · fault-inject 4 lượt/3 chiều) `[#53 vai thứ 18/phiên; cứu TRỌN nhờ ghi-đĩa-từng-phần — artifact 21KB đủ ruột TRƯỚC khi return chết; lead resume, xong nốt]`:** Nghề mới ăn tiền = **LUẬT NẤC: "một nhóm tên sạch CHÍNH XÁC tới độ sâu máy của nó KIỂM, không sâu hơn một nấc"** ⇒ mỗi mục chuẩn PHẢI khai nấc + trỏ máy ép đúng nấc đó; nhóm không máy ⇒ ghi `CHƯA CÓ MÁY`, **CẤM ký luật hình dạng** (ký sâu hơn máy = ký ra thứ tự nó trôi). Hệ quả 2: máy chỉ-ĐỌC (`detectors:1109` liệt-không-cờ) hoặc THA (`:1660` `-or` chấp 2 tên) ⇒ tên vẫn trôi — **nhưng KHÔNG cần STOP-HARD**: `:1639` chỉ in INFORM mà nhóm sạch 12/12. 🔴 **Tự bắt mình tái phạm citation-trap:**`hmw.js:33` bỏ số "11 class", bản vá ĐẦU **trích nguyên văn** cụm cũ ⇒ grep vẫn =1 ⇒ bài học **lời-giải-thích nằm TRONG tập đo**; vòng 2 mới =0 (control-dương 2 chuỗi cùng tệp). **Bác 3 chỗ, 3/3 đứng:** (a) lane a "23 lệch" → tôi đo **8/233** (16 script `s<n>-`/`plan-`*một-lần HỢP LỆ*, gọi lệch = **dương-giả**, mà dương-giả ngày đầu là cách nhanh nhất để người ta tắt máy soi; +1 vật lane a sót `resume-S146`); (b) lead tả bản vá S159 = `(sub|harness)-*` → đĩa thật `^(sub-.+|.+-return)\.md$` (bộ ba lọt qua nhánh `-return`, KHÔNG qua tiền tố) — mirror theo *diễn giải* sẽ đẻ **bản sao thứ 3 lệch nhau**; (c) `wave-plan:85` kê W3 sửa "5 class"→**6** = đúng LỚP-5 vừa gỡ, phải **BỎ SỐ** không đổi số. Bẫy đơn-vị cắn thật: `scripts/`+`docs/governance/` đếm theo **MỤC** (gồm thư mục) ≠ **TỆP** ⇒ lệch 4; và tự mình đẻ 2 vật giữa lượt ⇒ 231→233, phải KHAI. Phát hiện mới ngoài lane a: `settings.json:2` `autoMemoryDirectory` = **đường dẫn TUYỆT ĐỐI** neo cả tên thư mục lẫn gốc kho (lane a chỉ liệt `:9`). Tag `[s180, w1b-naming-standard, luat-nac, citation-trap-tu-bat, duong-gia-vs-chung-nhan, muc-vs-tep, inform-only-exit0]`
- **S171 (2026-08-04) lane BE — `7/7 mục, build PASS`, return SẠCH `[LEAD HARVEST HOI-TO @S172 — no mo tu closeout truoc; owner slot (71) chot 'gom va sleep thi auto, tu quyet'. Nguon = artifact tren dia, KHONG suy dien]; nguồn `runs/2026-08-04-S171-khkk-ui-mirror-pe/sub-implementer-backend-s171.md` 11.650 B`:** BE-1 DetailDto +5 field · **BE-1b `FinalizeStepName`/`FinalizeLevelName` DẪN XUẤT 3-ngả in-memory thay 3 subquery** (+ sửa công thức con-trỏ cho đúng KHKK) · BE-2 `ContractSigningPlanApprovalDto` đẻ mới + projection · **BE-3 tên người duyệt join `Users` — đường THỨ BA** (2 đường kia không dùng được, lý do §2) · BE-4 `WorkflowStepDto` +`DepartmentName` · BE-5 endpoint changelogs policy `KeHoachKyKet.Read` **+ rào `EnsureCanViewAsync`** · BE-6 map Cấp cho Approvals · **BE-7 enum `+ApprovalAttachment=3` + endpoint upload riêng (policy `Update`)**. Mirror `types/khkk.ts` ×2 app **SHA256 trùng khít**; `dotnet build` 0 warning/0 error + `tsc -b` ×2 exit 0. 🔴 **Tự khai 3 chỗ lệch-có-lý-do + treo B-3 vì DB dev 0 phiếu** — nấc trung thực đúng: *làm được thì khai làm được, không đo được thì khai treo*, KHÔNG nhét acceptance runtime vào ô đã-xong. ⚠️ Hệ quả @S172: chính `ApprovalAttachment` + policy `Update` đẻ ra câu hỏi owner slot (67) — **người SOẠN cũng qua được `KeHoachKyKet.Update`**. Tag `[s171, be-7-7-build-pass, dan-xuat-thay-subquery, duong-thu-ba-join-users, treo-b3-trung-thuc]` - **S171 (2026-08-04) lane BE — `7/7 mục, build PASS`, return SẠCH `[LEAD HARVEST HOI-TO @S172 — no mo tu closeout truoc; owner slot (71) chot 'gom va sleep thi auto, tu quyet'. Nguon = artifact tren dia, KHONG suy dien]; nguồn `runs/2026-08-04-S171-khkk-ui-mirror-pe/sub-implementer-backend-s171.md` 11.650 B`:** BE-1 DetailDto +5 field · **BE-1b `FinalizeStepName`/`FinalizeLevelName` DẪN XUẤT 3-ngả in-memory thay 3 subquery** (+ sửa công thức con-trỏ cho đúng KHKK) · BE-2 `ContractSigningPlanApprovalDto` đẻ mới + projection · **BE-3 tên người duyệt join `Users` — đường THỨ BA** (2 đường kia không dùng được, lý do §2) · BE-4 `WorkflowStepDto` +`DepartmentName` · BE-5 endpoint changelogs policy `KeHoachKyKet.Read` **+ rào `EnsureCanViewAsync`** · BE-6 map Cấp cho Approvals · **BE-7 enum `+ApprovalAttachment=3` + endpoint upload riêng (policy `Update`)**. Mirror `types/khkk.ts` ×2 app **SHA256 trùng khít**; `dotnet build` 0 warning/0 error + `tsc -b` ×2 exit 0. 🔴 **Tự khai 3 chỗ lệch-có-lý-do + treo B-3 vì DB dev 0 phiếu** — nấc trung thực đúng: *làm được thì khai làm được, không đo được thì khai treo*, KHÔNG nhét acceptance runtime vào ô đã-xong. ⚠️ Hệ quả @S172: chính `ApprovalAttachment` + policy `Update` đẻ ra câu hỏi owner slot (67) — **người SOẠN cũng qua được `KeHoachKyKet.Update`**. Tag `[s171, be-7-7-build-pass, dan-xuat-thay-subquery, duong-thu-ba-join-users, treo-b3-trung-thuc]`
- **S167 (08-01) lane K7 — cầu KHKK→HĐ BE + 5 vá `[artifact sub-implbe-k7.md; return-1 garble #53 → lead SendMessage-resume, xong solo]`:** Bài lớn nhất = **BÁC TIỀN ĐỀ ĐỀ BÀI bằng 4 phép đo trước khi gõ**: lead nói "bridge ĐÃ TỒN TẠI (W6-S161), mày chỉ vá quanh nó" — đĩa nói KHÔNG (`grep create-contract` 1 hit duy nhất = bridge PE cũ · 0 file · 0 endpoint · 0 write-site `Line.ContractId`). Cái tồn tại @W6**đường-ống HĐ V2**, không phải cầu ⇒ lead nhập nhằng "đường ống đã vá"≠"bridge có". **Phép thử rẻ phân biệt:** vá-6 ("nạp Project.Code/Supplier.Code theo khuôn bridge-cũ") là **no-op nếu áp lên bridge cũ** (nó ĐÃ có 2 dòng đó) ⇒ vá chỉ có nghĩa với vật CHƯA có ⇒ suy ngược ra vật thiếu. Xử: DỰNG bridge theo spec invest §K7.1 đã pin sẵn (0 quyết-định-mới của tôi) + nhúng 5 vá, KHAI RÕ chệch-khuôn + trỏ dòng spec — lead nhận. Khi **spec vá ⊥ nền invest** (`WorkflowDefinitionId` null vs pin) → **vá THẮNG** (spec `:4` viết luật đó). Cột đã có từ mig cũ ⇒ **0-mig**. `??=` giữ CHIỀU: cầu chạy sau không cướp ô của cầu trước. Thêm field vào projection dùng-chung-3-endpoint → **chạy test filter rẻ ngay** (collection-subquery SQLite dịch được: 34/35). 1 fail = reflection-authz test bắt mọi action phải cùng key module, mà vá-1 cố ý gate key MODULE KHÁC (`Contracts.Create`, #85) ⇒ **verified-fail bàn giao test-lane, KHÔNG tự sửa** (S112 khuôn). Tag `[s167, k7-bridge-khkk-hd, bac-tien-de-4-phep-do, va-noop-suy-nguoc-vat-thieu, spec-thang-nen, 0-mig, verified-fail-handoff]` - **S167 (08-01) lane K7 — cầu KHKK→HĐ BE + 5 vá `[artifact sub-implbe-k7.md; return-1 garble #53 → lead SendMessage-resume, xong solo]`:** Bài lớn nhất = **BÁC TIỀN ĐỀ ĐỀ BÀI bằng 4 phép đo trước khi gõ**: lead nói "bridge ĐÃ TỒN TẠI (W6-S161), mày chỉ vá quanh nó" — đĩa nói KHÔNG (`grep create-contract` 1 hit duy nhất = bridge PE cũ · 0 file · 0 endpoint · 0 write-site `Line.ContractId`). Cái tồn tại @W6**đường-ống HĐ V2**, không phải cầu ⇒ lead nhập nhằng "đường ống đã vá"≠"bridge có". **Phép thử rẻ phân biệt:** vá-6 ("nạp Project.Code/Supplier.Code theo khuôn bridge-cũ") là **no-op nếu áp lên bridge cũ** (nó ĐÃ có 2 dòng đó) ⇒ vá chỉ có nghĩa với vật CHƯA có ⇒ suy ngược ra vật thiếu. Xử: DỰNG bridge theo spec invest §K7.1 đã pin sẵn (0 quyết-định-mới của tôi) + nhúng 5 vá, KHAI RÕ chệch-khuôn + trỏ dòng spec — lead nhận. Khi **spec vá ⊥ nền invest** (`WorkflowDefinitionId` null vs pin) → **vá THẮNG** (spec `:4` viết luật đó). Cột đã có từ mig cũ ⇒ **0-mig**. `??=` giữ CHIỀU: cầu chạy sau không cướp ô của cầu trước. Thêm field vào projection dùng-chung-3-endpoint → **chạy test filter rẻ ngay** (collection-subquery SQLite dịch được: 34/35). 1 fail = reflection-authz test bắt mọi action phải cùng key module, mà vá-1 cố ý gate key MODULE KHÁC (`Contracts.Create`, #85) ⇒ **verified-fail bàn giao test-lane, KHÔNG tự sửa** (S112 khuôn). Tag `[s167, k7-bridge-khkk-hd, bac-tien-de-4-phep-do, va-noop-suy-nguoc-vat-thieu, spec-thang-nen, 0-mig, verified-fail-handoff]`

View File

@ -62,3 +62,220 @@ Bốn ca hậu thuẫn (lane a §3.1, tôi dùng lại, KHÔNG đo lại): N1 é
### 1.5 — Ràng buộc kỹ thuật cho máy soi: **`.ps1` PURE-ASCII** (gotcha #30) ### 1.5 — Ràng buộc kỹ thuật cho máy soi: **`.ps1` PURE-ASCII** (gotcha #30)
Đo 3 script: `governance-detectors.ps1` · `memory-selfimprove-audit.ps1` · `wal-flush.ps1`**0/0/0 dòng chứa byte ngoài ASCII in-được**. Control-dương cùng thước trên `adap-upgrade-pack-tracking.md` = **58** ⇒ thước sống, 0 là 0 thật. ⇒ `naming-scan.ps1` **buộc viết pure-ASCII** (tiếng Việt không dấu), 0 ngoại lệ. Đo 3 script: `governance-detectors.ps1` · `memory-selfimprove-audit.ps1` · `wal-flush.ps1`**0/0/0 dòng chứa byte ngoài ASCII in-được**. Control-dương cùng thước trên `adap-upgrade-pack-tracking.md` = **58** ⇒ thước sống, 0 là 0 thật. ⇒ `naming-scan.ps1` **buộc viết pure-ASCII** (tiếng Việt không dấu), 0 ngoại lệ.
---
## §2 — LƯỢT CHẠY THẬT TRÊN KHO SỐNG (output nguyên văn)
Lệnh: `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/naming-scan.ps1` · **mã thoát = 0** (đúng hợp đồng INFORM-only).
```
=== naming-scan.ps1 - MAY SOI TEN (tang bo may) ===
RepoRoot : D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP
Che do : INFORM-only. LUON exit 0 ke ca khi co co (lai ma thoat = W3b, sau P1=PA-2).
Chuan : docs/governance/naming-standard.md
Tap do : 231 ten vat-bo-may, 0 mien tru VUNG (khong quet 1.545 tep .md - bay-4).
--- NHOM: vai [.claude/agents]
mau so: 27 tep
OK 26/27 | LECH 0/27 | MIEN-theo-luat 1/27
[MIEN ] README.md <- quy uoc pho quat (luat L4)
--- NHOM: nhat-ky-vai [.claude/agent-memory]
mau so: 26 thu muc
OK 26/26 | LECH 0/26 | MIEN-theo-luat 0/26
--- NHOM: lenh [.claude/commands]
mau so: 19 tep
OK 19/19 | LECH 0/19 | MIEN-theo-luat 0/19
--- NHOM: kich-ban [scripts]
mau so: 54 muc (tep + thu muc)
OK 52/54 | LECH 1/54 | MIEN-theo-luat 1/54
trong OK: 5/54 theo PEP-8 (*.py snake_case - DUNG, khong phai troi)
trong OK: 16/54 MOT-LAN (tien to s<n>-/plan- = kich ban mot lan, HOP LE)
[MIEN ] __pycache__ <- vat sinh tu dong (luat L4)
[LECH ] master-import-data.generated.md <- kich ban khong-phai-.py phai kebab; xem naming-standard.md section 8
[PEP8 ] parse_forms.py <- PEP-8: *.py snake_case la DUNG
[PEP8 ] parse_workflow.py <- PEP-8: *.py snake_case la DUNG
[MOT-LAN] plan-b-run-verify.ps1 <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-b-verify-prod.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-ca-run-perms.ps1 <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-ca-verify-menu.ps1 <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-ca-verify-menu.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-ca-verify-perms.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-r-backup.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-r-cleanup.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-s-wipe-all-workflows.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] plan-t5-final-cleanup.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s59-rename-workitems-pmh.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s59-wipe-demo-workitems.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s59-wipe-testing-data.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s85-wipe-uat-data.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s89-delete-test-users.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[MOT-LAN] s91-wipe-golive.sql <- kich ban mot lan thuoc phien/ke hoach - HOP LE, dem rieng
[PEP8 ] session_ctx.py <- PEP-8: *.py snake_case la DUNG
[PEP8 ] session_scaffold.py <- PEP-8: *.py snake_case la DUNG
[PEP8 ] stamp_verify.py <- PEP-8: *.py snake_case la DUNG
--- NHOM: moc-phien [.claude/sessions]
mau so: 90 tep
OK 87/90 | LECH 3/90 | MIEN-theo-luat 0/90
[LECH ] closed.md <- FORK dau-dong-phien: _end la ho chuan. detectors:1660 THA bang -or => doi sang ten thu BA thi phien da dong bi doc la DANG MO, co khong bao gio ban
[LECH ] pause-S146-20260722T2328.md <- FORK ho cu: _pause-* la ho chuan. session_ctx.py:349-358 THA (doc ca 2 glob) => fork song mai neu khong ai goi ten
[LECH ] resume-S146-20260722T2334.md <- tep moc phien moi BUOC BAT DAU bang _ ; xem naming-standard.md section 5
--- NHOM: so-governance [docs/governance]
mau so: 16 muc (tep + thu muc)
OK 11/16 | LECH 4/16 | MIEN-theo-luat 1/16
[LECH ] BROADCAST-OUT-SOLUTION-ERP-2026-05-29-INFRA-RETRO.md <- VAT LICH SU (thu da gui, mang ngay) - GIU NGUYEN theo luat L1, nhung phai duoc LIET TEN: no la chung nhan nhom nay co 2 ho
[LECH ] BROADCAST-OUT-SOLUTION-ERP-2026-05-29.md <- VAT LICH SU (thu da gui, mang ngay) - GIU NGUYEN theo luat L1, nhung phai duoc LIET TEN: no la chung nhan nhom nay co 2 ho
[LECH ] BROADCAST-OUT-SOLUTION-ERP-2026-06-01.md <- VAT LICH SU (thu da gui, mang ngay) - GIU NGUYEN theo luat L1, nhung phai duoc LIET TEN: no la chung nhan nhom nay co 2 ho
[LECH ] RAG-AUDIT-RESPONSE-2026-05-29.md <- VAT LICH SU (thu da gui, mang ngay) - GIU NGUYEN theo luat L1, nhung phai duoc LIET TEN: no la chung nhan nhom nay co 2 ho
[MIEN ] README.md <- quy uoc pho quat (luat L4)
--- NHOM: hook [.claude/hooks]
mau so: 1 tep
OK 1/1 | LECH 0/1 | MIEN-theo-luat 0/1
--- BAT BIEN: .claude/agents/<role>.md == .claude/agent-memory/<role>/ ---
mau so: 26 vai (tep persona, tru README) / 26 thu muc nhat ky
khop : 26/26
vai THIEU thu muc nhat ky : (danh sach rong)
nhat ky THUA (khong co persona): (danh sach rong)
--- NGOAI TAP 231 (khai tuong minh - KHONG phai [skip]) ---
thu muc phien: 12/12 dat hinh dang ^session-<so>$
CO CHU DICH nam ngoai tap 231: giu mau so 231 da thoa thuan, va nhom nay DA co may ep
(governance-detectors.ps1:1639 + session_ctx.py:133 + 2 ban session-scaffold).
=== TONG ===
mau so TONG : 233 ten vat-bo-may
goc 231 (do 2026-08-07 TRUOC wave W1) = 27 vai + 26 nhat ky + 19 lenh + 53 kich ban
+ 90 moc phien + 15 so + 1 hook
+2 vat chinh W1 de ra: scripts/naming-scan.ps1 va docs/governance/naming-standard.md
=> 233 sau W1. Khai ro de khong ai doc 233 thanh 'kho phinh ra' (bay-6: so do giua chung).
OK : 222/233
trong do PEP-8 : 5/233 (*.py snake - DUNG theo luat ngon ngu, khong phai troi)
trong do MOT-LAN : 16/233 (kich ban mot lan - HOP LE, tin hieu ton kho chu khong phai vi pham)
MIEN theo luat L4 : 3/233 (in ten o tung nhom - mien tru im lang va loi im lang trong giong het nhau)
LECH : 8/233
Danh sach LECH (tung ten - cam nen thanh khoang):
- [kich-ban] master-import-data.generated.md
- [moc-phien] closed.md
- [moc-phien] pause-S146-20260722T2328.md
- [moc-phien] resume-S146-20260722T2334.md
- [so-governance] BROADCAST-OUT-SOLUTION-ERP-2026-05-29-INFRA-RETRO.md
- [so-governance] BROADCAST-OUT-SOLUTION-ERP-2026-05-29.md
- [so-governance] BROADCAST-OUT-SOLUTION-ERP-2026-06-01.md
- [so-governance] RAG-AUDIT-RESPONSE-2026-05-29.md
Ma thoat: 0 (INFORM-only theo hop dong muc 1). Co o tren KHONG lai ma thoat.
Lai ma thoat thuoc wave W3b, sau khi chu du an chot phan loai co theo PA-2.
```
### §2b — Đọc kết quả lượt chạy thật
| Ô | Số | Mẫu số | Ghi chú |
|---|---|---|---|
| OK | 222 | /233 | gồm 5 PEP-8 + 16 MỘT-LẦN |
| MIỄN theo luật L4 | 3 | /233 | 2 `README.md` + `__pycache__`**in tên từng vật**, không im |
| **LỆCH** | **8** | /233 | liệt đủ 8 tên, xem dưới |
| TẬP VẮNG MẶT | 0 | /7 tập | cả 7 tập đều tồn tại |
| Bất biến vai ⟂ nhật ký | 26/26 khớp | | 0 thiếu, 0 thừa |
| Ngoài tập (khai tường minh) | 12/12 | thư mục phiên | đạt `^session-<số>$` |
| **Mã thoát** | **0** | | đúng hợp đồng INFORM-only |
**8 tên LỆCH (từng tên, cấm nén thành khoảng):**
1. `master-import-data.generated.md` *(scripts/)* — 🔸 **ứng viên DƯƠNG-GIẢ, cần lead phán**: `.generated.md` là hậu tố có nghĩa. Tôi **giữ cờ** thay vì tự miễn, vì tự miễn là đúng nước đi Goodhart mà phiên này đang chống. Nhưng nó cũng là phát hiện thật: một tệp **dữ liệu `.md`** đang nằm trong thư mục **máy móc**.
2. `closed.md` · 3. `pause-S146-20260722T2328.md` · 4. `resume-S146-20260722T2334.md` *(tệp mốc phiên — 2 fork + 1 vô-họ)*
5-8. `BROADCAST-OUT-…-INFRA-RETRO.md` · `BROADCAST-OUT-…-2026-05-29.md` · `BROADCAST-OUT-…-2026-06-01.md` · `RAG-AUDIT-RESPONSE-2026-05-29.md` *(vật lịch sử, giữ theo L1 nhưng phải bị gọi tên)*
---
## §3 — FAULT-INJECT: 3 CHIỀU, cây tạm `-RepoRoot` (happy-path KHÔNG tính)
Cây tạm dựng đủ **7 tập** (mẫu số nhỏ 12 tên) để có **baseline SẠCH thật** trước khi cấy.
| Chiều | Cấy gì | Kỳ vọng | Đo được | Đạt |
|---|---|---|---|---|
| **BASELINE** | cây sạch | LỆCH 0 | `LECH 0/12` · `khop 1/1` · exit 0 | ✅ |
| **A — cấy tên LỆCH** | `BadRole_Name.md` (vai) · `Bad_Script.ps1` (ps1 hoa+gạch dưới) · `closed.md` (fork) | **phải KÊU cả 3** | `LECH 4/15` — gọi đúng **4 tên**: `BadRole_Name.md` · `Bad_Script.ps1` · `closed.md` · **+`[bat-bien] BadRole_Name`** (vai không có thư mục nhật ký — bắt được **hệ quả thứ hai** mà tôi không cố ý cấy) | ✅ |
| **B — cấy tên ĐÚNG** | `beta-role.md`+thư mục nhật ký · `good_module.py` (PEP-8) · `s99-one-off.sql` (một-lần) · `_snapshot-3.md` | **phải IM** | `LECH 0/17` · `khop 2/2` · `PEP-8 2/17` · `MOT-LAN 1/17`**0 dương-giả** | ✅ |
| **A2 — đổi tên cả TẬP** | `mv .claude/commands → commands-RENAMED` | **phải KÊU**, cấm `[skip]` câm | `FLAG THIEU-TAP` + dòng *"Day KHONG phai [skip]… mau so = 0/19 ky vong"* + **bộ đếm riêng `TAP VANG MAT: 1`** đứng cạnh `LECH 0/16`**không đọc nhầm 0 thành "sạch"** | ✅ |
🔴 **Vì sao chiều A2 quan trọng nhất:** đây đúng lớp lỗi phiên này đã có **2 ca thật**`spawn-model-audit` mù đường Task vẫn in `TOTAL FLAGS: 0`, và H24-2 nuốt 4 khối carry vẫn in `[ok]`. Máy này **không thể** rơi vào ca đó: tập vắng làm bộ đếm `TAP VANG MAT` bật, và số 0 bên cạnh **mất quyền được đọc là "sạch"**.
**Mã thoát giữ 0 ở CẢ 4 lượt** (kể cả lượt có 4 cờ) ⇒ hợp đồng INFORM-only đứng vững; lái mã thoát vẫn để nguyên cho W3b.
---
## §4 — BA VÁ KÈM (R11): 3/3 LAND + verify
### Vá 1 — `.claude/workflows/hmw.js:33` · BỎ SỐ, trỏ khoá cấu hình
- **Làm:** xoá cụm chép-cứng số lớp, thay bằng câu trỏ `memory-budget.json → lead_self_audit.flag_classes` + giải thích **vì sao đếm lướt bị hụt** (lớp `view-claim-broader-than-sample` nằm cuối mảng, ngoài cụm `view-*` liền kề).
- 🔴 **KHÔNG sửa 11→12** — đúng chỉ thị B1: sửa số là để nó thối lại.
- **Verify:** `grep -c "11 class"` = **0** (trước vá = **1**). Control-dương cùng tệp: `flag_classes` = 1 · `VALID_ROLES` = 8 ⇒ thước sống, 0 là 0 thật. `node --check` **OK**.
- 🔴 **TỰ BÁO MỘT LẦN TÔI SUÝT TÁI PHẠM:** bản vá ĐẦU của tôi **trích nguyên văn** cụm cũ trong lời giải thích ⇒ `grep` vẫn ra **1**, tức tôi **tái tạo đúng mẫu đang gỡ, qua đường TRÍCH DẪN**. Đúng lớp *citation-trap self-reference* (doc mô tả anti-pattern thì chứa chính mẫu đó). Sửa vòng 2: mô tả **không** tái tạo chuỗi. Bài học chuyển giao: **vá một mẫu-chuỗi thì lời giải thích cũng nằm trong tập đo.**
### Vá 2 — `scripts/memory-selfimprove-audit.ps1:298` · mirror bản vá S159
- **Làm:** `-Filter 'sub-*.md'``Where-Object { $_.Name -match '^(sub-.+|.+-return)\.md$' }` + 8 dòng chú thích trỏ ca thật S159 và trỏ `naming-standard.md §12` (3 chỗ phải sửa cùng lúc). Sửa luôn chuỗi thông điệp `:301` cho khớp bộ lọc mới.
- 🔸 **ĐÍNH CHÍNH mô tả của lead:** brief ghi *"S159 nới thành `(sub|harness)-*`"*. Đĩa **không phải vậy** — bản vá S159 thật là `^(sub-.+|.+-return)\.md$` (`governance-detectors.ps1:1101-1102`). Bộ ba lọt lưới qua nhánh **`.+-return`**, KHÔNG qua tiền tố `harness-`. Tôi mirror **regex thật**, vì mirror theo diễn giải sẽ đẻ **bản sao thứ 3 lệch nhau** — đúng bệnh mà §12 đang cảnh báo.
- **Verify KHÔNG-GÃY** (máy `/session-end` đang sống): chạy thật → `EXIT=0` · **0** dòng lỗi PowerShell (control-dương: 5 hit `eval` ⇒ output thật) · 36 dòng output bình thường.
- **Verify CÓ RĂNG** (fault-inject `-RepoRoot` cây tạm, run-folder chỉ chứa 3 tệp `*-return.md` — dựng lại đúng ca S159):
| Chiều | Đo được |
|---|---|
| **trước-vá** (glob cũ trên cùng folder) | **0** ⇒ máy sẽ in *"no sub-\*.md … proxy N/A"* = **mù im lặng**, đúng bệnh |
| **sau-vá** | **3** ⇒ in `3 sub-md but 0 synthesis` + `GAP:MED`**nhìn thấy 3 lane đắt nhất** |
| **không dương-giả** | cấy thêm `ghi-chu-phu.md` (ngoài mọi họ) ⇒ đếm vẫn **3**, không phải 4 ✅ |
- 🔸 Trên run-folder S180 hiện tại, cũ ⟂ mới **đều = 12** (folder này có 0 tệp `-return.md`) ⇒ **lượt chạy live KHÔNG chứng minh được răng**; răng chỉ chứng minh được bằng fault-inject ở trên. Control-dương cho biết họ này có thật: **38** tệp `*-return.md` trên toàn `runs/`.
### Vá 3 — Khai bất-biến `agents/<role>.md` ≡ `agent-memory/<role>/`
- **Làm:** ghi vào `naming-standard.md` **§1** (mô tả + hệ quả 2 máy khi lệch: `mfe-eval.ps1:264-267` loại vai khỏi phép đo kèm lời giải thích sai sự thật · `detectors:1109` xếp `$unmapped` liệt-không-cờ) và **§12** (bảng "3 chỗ, không nguồn chung").
- 🟢 **NÂNG CẤP ngoài yêu cầu:** lane a khai bất biến này *"2 chỗ, 0 nguồn chung, **0 máy**"*. Nay nó **CÓ MÁY**`naming-scan.ps1` kiểm **2 chiều** (vai thiếu nhật ký / nhật ký thừa không persona). Đã chứng minh bằng fault-inject chiều A: cấy `BadRole_Name.md` ⇒ máy bật thêm dòng `FLAG vai THIEU nhat ky` mà tôi **không cố ý cấy**.
- **Verify kho thật:** 26/26 khớp, 0 thiếu, 0 thừa.
### Quét CÙNG-LỚP sau vá (luật "được-chỉ-1-chỗ ⇒ grep cùng-lớp")
Quét `[0-9]+ class` ngoài run-folder: **2 hit trong `scripts/`** = **dương-giả** (`+-1/2 class`, `armed-at-0 class` — không phải số lớp). **Trong persona: 3 site CÒN SỐNG**`lead-stale-auditor.md:39` + `:41` ("5 class", thật 6) · `ring2-audit.md:4` ("5 class `view-*`").
🔴 **NGOÀI SCOPE W1 — đã có chủ: wave W3 gói-B persona.** Nhưng bàn giao kèm **một cảnh báo**: `wave-plan-S180.md:85` kê việc đó là *"`5 class view`→**6**"* — tức **đổi số**, đúng LỚP-5 mà vá-1 vừa gỡ. Làm vậy nó sẽ thối lại. **Đề nghị W3 đi đường của vá-1: BỎ SỐ, trỏ `lead_self_audit.flag_classes`.**
---
## §5 — ĐỐI CHIẾU 11 RÀNG BUỘC R1-R11 (tự chấm, lệnh chạy được)
| R | Nội dung | Ở đâu | Verify |
|---|---|---|---|
| R1 | phụ lục 14 đoạn máy | PHỤ LỤC A | `grep -cE '^\| M-[0-9]+ \|'` = **14** ✅ |
| R2 | số chỗ sửa đồng thời (4·3·3·5) | §12 | 4 dòng, liệt **từng chỗ**, cấm nén khoảng ✅ |
| R3 | tên neo NGOÀI kho mã | §11 | **3 vật** (lane a khai 1; +`settings.json:2`, +4 path thân hook) ✅ |
| R4 | CẤM "giữ nguyên số dòng" | §0 L3 (`:45`) | kèm định lượng **21 trích dẫn** `wal-flush.ps1:13`, 2 neo SỐNG ✅ |
| R5 | mỗi nhóm khai NẤC + có máy | §1-§10 | `grep -c "NẤC muốn sạch"` = **11** (10 nhóm + bảng L0) ✅ |
| R6 | máy TỪ CHỐI, cấm 3 lối câm | script hợp đồng (4) | chứng bằng fault-inject A2: `THIEU-TAP` + bộ đếm riêng ✅ |
| R7 | quét 231 tên, luôn in mẫu số | script hợp đồng (2)(3) | chạy thật: 233 (=231+2 vật W1, **khai rõ**) ✅ |
| R8 | tập hợp lệ nhật ký chứa **cả 5 họ** | §6 | `grep -cE '^\| \([a-e]\) \|'` = **5** ✅ |
| R9 | miễn trừ theo ngôn ngữ | §0 L4 | 3 loại; máy **in tên từng vật miễn** ✅ |
| R10 | khai 2 xung đột | §14 | `grep -cE '^### XĐ-[12]'` = **2** ✅ |
| R11 | 3 vá kèm | §4 | 3/3 land + verify 2 chiều ✅ |
**11/11.** Phạm vi chạm: đúng **5 tệp** (2 đẻ mới + 2 vá + nhật ký). **0 tệp cấm bị sửa** (`STATUS`/`HANDOFF`/`CLAUDE.md`/`adap-upgrade-pack-*`). **0 tên bị đổi.**
## §6 — CHƯA ĐO / CẦN LEAD
1. 🔸 `master-import-data.generated.md`**ứng viên dương-giả**, tôi giữ cờ thay vì tự miễn (tự miễn = nước đi Goodhart). Lead phán: nhận `.generated.md` là hậu tố hợp lệ, hay coi đây là *tệp dữ liệu nằm nhầm thư mục máy móc*?
2. 🔴 **`CLAUDE.md:151` sai với 59,7% đĩa** (nợ N-1) — W1 **bị cấm sửa** `CLAUDE.md`. Cần lead/chủ dự án mở đường; đến lúc đó `:151` phải đọc là *khuôn khuyến nghị*, KHÔNG phải vị từ kiểm kho.
3. 🔴 **W3 đừng sửa "5 class"→"6"** (`wave-plan:85`) — đó là LỚP-5. Đi đường vá-1: bỏ số, trỏ khoá. 3 site: `lead-stale-auditor.md:39`+`:41` · `ring2-audit.md:4`.
4. **KHÔNG ĐO ĐƯỢC:** mã thoát thật khi `wal-flush.ps1` bị đổi tên (cần đổi tên cây tạm + chạy hook + đọc `$LASTEXITCODE`) — nợ N-4.
5. **CHƯA ĐO:** `.claude/commands/*.md` (19) + `.claude/agents/*.md` (27) neo tên gì bên trong — đó là **kiểm kê máy** (việc lane a), nhận thêm ở W1 là ăn lẹm — nợ N-5.
6. Máy soi **chưa cắm cổng** (chạy tay) — cắm `session-end` = W3 (gom restart); lái mã thoát = W3b sau PA-2. Ô nghiệm thu *"vai giữ chuẩn"* = **NGOÀI scope** theo fit-map, chờ **P4**.
---
**END sub-w1b-chuan-ten — VERDICT: chuẩn 11/11 ràng buộc (10 nhóm tên ⊇ 6 nhóm sàn hub) · máy soi 233 tên / 8 lệch / 0 tập vắng / exit 0 · fault-inject 4 lượt 3 chiều ĐẠT (baseline sạch → cấy-lệch KÊU 4 → cấy-đúng IM 0 → mất-tập KÊU THIEU-TAP) · 3/3 vá land + verify · 3 ràng buộc/mô-tả bị BÁC có bằng chứng · 0 tên bị đổi · 0 tệp cấm bị chạm.**