From 8fd5422711ba249ef01c1c84f0924097ac0cf280 Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Fri, 7 Aug 2026 15:47:41 +0700 Subject: [PATCH] wal: flush 20260807T1547 --- .claude/WAL.md | 4 +- .claude/agent-memory/reviewer/MEMORY.md | 2 +- .../sub-w0b-index-hash.md | 46 +++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/.claude/WAL.md b/.claude/WAL.md index 0678800..b4f9d25 100644 --- a/.claude/WAL.md +++ b/.claude/WAL.md @@ -11,8 +11,8 @@ chain: - [x] N2 fable-real review: PASS_WITH_FIXES 0C/5M/6m — T2 claim-không-đứng = 0 - [x] N3 fable-clone 6 lane (OD-1 lai): A 57KB · B 47KB · C 72KB · D 44KB · E 38KB · F - [x] N4 wave-plan: 7 wave + 3 sub gated, 2 chạy-ngay, 5 chờ-anh, 0 loại (50KB) -- [!] W0 đang chạy 2 lane: (a) fitmap 7 dòng + tracking 20 khoản · (b) _index.md + 24 dòng đã-nhận + hash -- [ ] W1 GĐ-1 chuẩn-tên (chốt MỞ KHOÁ mọi GĐ sau) +- [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 +- [!] W1 GĐ-1 chuẩn-tên (chốt MỞ KHOÁ) — lane a KIỂM KÊ MÁY đang chạy; lane b ký-chuẩn CHỈ chạy SAU (lane A: ký trước khi biết = ký ra thứ không áp được mà không làm vỡ) - [ ] W2 GĐ-2 · 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 diff --git a/.claude/agent-memory/reviewer/MEMORY.md b/.claude/agent-memory/reviewer/MEMORY.md index e7737b7..5a1aa1d 100644 --- a/.claude/agent-memory/reviewer/MEMORY.md +++ b/.claude/agent-memory/reviewer/MEMORY.md @@ -93,6 +93,6 @@ Adversarial pre-commit reviewer SOLUTION_ERP. Read-only verify + live curl prod - **[→ `archive/2026-08.md` §@S180-ba-khối — verbatim, probe 6/6 + control-âm 0] S180 (08-07) N4 wave-plan · W0 lane-a fitmap · W0 lane-b `_index` (digest gộp):** **ô-đòi-MÃ không nhận CÂU-VĂN** (wave không trỏ mã TC = thoát ràng buộc nghiệm thu) · tách trục **CHỮA ⟂ NGHIỆM-THU** (thiếu THƯỚC ≠ thiếu THUỐC) · 2 hệ đánh số trong 1 artifact phải khác TIỀN-TỐ · **ghi-đĩa-4-nhát qua Edit-append anchor-đuôi** (13 vai dính #53, 4 nhát land sạch). - 🔴 **acceptance ĐO HÌNH-DẠNG-DÒNG, KHÔNG ĐO GIÁ-TRỊ-Ô** — `grep -c '^| GĐ-[0-6]'` vẫn ra 7 dù ô điền sai từ-vựng (từ-vựng Phần C nhét vào ô Phần A ⇒ đẻ giá-trị-thứ-tư, đúng lỗi file sinh ra để đóng, nghiệm thu vẫn xanh) ⇒ thêm phép đo GIÁ-TRỊ · **2 tệp anh em cùng bảng 7 dòng = dương-giả thật** ⇒ chạy chéo 2 chiều + control-dương · **`grep -c` exit 1 khi 0-hit CẮT ĐỨT chuỗi `&&`** · **1 phép đo 3 nguồn 3 số** ⇒ chép PHẦN LIỆT KÊ, đừng chép số tổng. - 🔴 **W0-b, 3 bài đắt nhất:** (a) **lệnh lead sai theo chiều PHÁ chính mục-đích lệnh** — *"backfill `se` cho 22 dòng cũ"* nhưng sổ có **45 dòng** (23 `se` + 22 `all`) ⇒ gán hàng loạt dán nhãn sai lên đúng 22 dòng fan-out mà P6 sinh ra để hợp-thức-hoá; gốc = **hai số 22 khác nghĩa va nhau trong CÙNG bản giao việc** ⇒ trị bằng + nghĩa ngược = con số thôi làm chứng, dẫn giá-trị **từng dòng từ đĩa**. (b) **`grep -c ` có TRẦN CỨNG** — lead đọc `=4` thành *"mới bù 4"* trong khi **17 dòng đã land** ⇒ **biết tên bẫy KHÔNG đủ, phải khai mẫu-số NGAY CẠNH con số**. (c) **glob `*/` bỏ trọn thư-mục GỐC** ⇒ mù đúng nơi thư *chưa xử lý* hạ cánh; 69/24 khớp chỉ vì gốc chỉ có `README.md` = trùng hợp, không phải tương đương. -- 🟢 **Khuôn tái dùng:** thêm cột vào sổ bằng-chứng thì đặt **CUỐI hàng** ⇒ *"không sửa dòng cũ"* thành **phép kiểm chạy được** (dòng cũ = **tiền-tố nghiêm ngặt** của dòng mới; 45/45, khối kia byte-identical). 🔸 `status` **định-nghĩa-bằng-thư-mục** ⇒ gộp 2 kênh làm cột chỉ đo đúng NỬA số dòng (fan-out `/adap-apply` không đụng thư mục ⇒ `processed` = *đã move*, KHÔNG phải *đã áp*). 🔸 **mốc nước nói về VẮNG-KHỎI-HỘP**, không miễn cho thư ĐÃ NẰM TRONG hộp mà thiếu dòng. `stamp_verify.py` 17/17 exit 0; `status: DRAFT` ⟂ đòi-dấu-đã-duyệt = **lệch trạng-thái, KHÔNG tamper**. +- 🟢 **Khuôn tái dùng:** thêm cột vào sổ bằng-chứng thì đặt **CUỐI hàng** ⇒ *"không sửa dòng cũ"* thành **phép kiểm chạy được** (dòng cũ = **tiền-tố nghiêm ngặt** của dòng mới; 45/45, khối kia byte-identical). 🔸 `status` **định-nghĩa-bằng-thư-mục** ⇒ gộp 2 kênh làm cột chỉ đo đúng NỬA số dòng (fan-out `/adap-apply` không đụng thư mục ⇒ `processed` = *đã move*, KHÔNG phải *đã áp*). 🔸 **mốc nước nói về VẮNG-KHỎI-HỘP**, không miễn cho thư ĐÃ NẰM TRONG hộp mà thiếu dòng — **lead nhận lập luận, phán bù nốt 7** ⇒ đợt-2: 24/24 dòng bù, `stamp_verify.py` **24/24 exit 0 · 0 tamper**, vắng-mặt **24→0**, 5/5 bất-biến đo LẠI vẫn đạt. `status: DRAFT` ⟂ đòi-dấu-đã-duyệt = **lệch trạng-thái, KHÔNG tamper**. 🔸 2 số 69 (đĩa ⟂ dòng) **KHÔNG phải phép đo thứ hai** — là hệ quả của (0 vắng ∧ 0 mồ-côi ∧ 0 trùng). - **2 thước hỏng:** **heredoc `<<'EOF'` gãy** với tiếng Việt + backtick (lead dính y hệt) ⇒ tệp dài dùng **Write/Edit** · **probe `grep -F` sai HOA/thường ⇒ 0-hit GIẢ** (`ô-` ⟂ `Ô-`) ⇒ 0-hit phải thử lại **đúng ca chữ TRƯỚC** khi kết luận mất nội dung. - Tag `[s180, w0-lane-b, colliding-22, grep-substring-ceiling, glob-star-slash-blind, prefix-preserving-column, status-defined-by-folder, shape-vs-value-acceptance, heredoc-broken, probe-case-trap]` diff --git a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md index 598eac3..b25f781 100644 --- a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md +++ b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md @@ -196,3 +196,49 @@ Thêm một dòng dẫn ngay trên bảng `INBOUND`, giải thích vì sao hai c - **Không sửa** đoạn đối chiếu S123 chen giữa bảng `OUTBOUND` — nó cắt bảng ấy làm hai khúc. Ngoài phạm vi, nhưng ghi lại vì máy nào đọc `OUTBOUND` bằng cách quét liên tục từ dòng tiêu đề sẽ **dừng sớm ở đó**. - **Không tự bù** 7 thư trước mốc nước (§5.4) và **không tự đổi** luật chiều GỬI (§5.6). Cả hai chờ lead hoặc anh phán. +--- + +## §8 — ĐỢT 2: lead phán BÙ đủ 7 thư trước mốc nước (đóng `K9` về 0) + +**Lead chấp nhận lập luận ở §5.4** và ra quyết định: mốc nước `check-email.md:39` chỉ miễn cho thư **vắng khỏi hộp** (lớp đã-adopt-đọc-tại-chỗ, không đòi copy); bảy thư này **đang nằm trong hộp** nên mốc nước không áp. Đây là **ghi sổ cơ học**, không chạm lằn ranh nào, nên lead phán chứ không đẩy lên anh. + +**Hash — chạy `python scripts/stamp_verify.py` trên cả 7, không tự chế lệnh:** **7/7 `OK (canonical match)` · exit 0 · 0 cờ giả mạo.** Cả bảy khai đủ 64 chữ số hex, khớp tuyệt đối (khác bốn món của gói vốn khai rút gọn 8 chữ). + +| Thư (rút gọn) | 12 chữ đầu tính lại | verdict | +|---|---|---| +| `2026-07-13-…-adap-update-harness-22-wal-push-guard` | `dd4b0176fa3a` | OK (canonical match) | +| `2026-07-13-…-adap-update-presence-not-age-reinject` | `ab6c387ee5fb` | OK (canonical match) | +| `2026-07-13-…-harness-22-wal-defect-fix` | `76919abc2ff9` | OK (canonical match) | +| `2026-07-13-…-harness-23-explicit-model-at-spawn` | `7c0ec06700af` | OK (canonical match) | +| `2026-07-14-…-harness-24-lead-self-audit-h17-cadence` | `7400d951bebd` | OK (canonical match) | +| `2026-07-14-…-owner-sign-3-marks-h21-mtv3-h22` | `ae119b953218` | OK (canonical match) | +| `2026-07-15-…-eol-crlf-agent-registry-defect-notice` | `1c039f336b28` | OK (canonical match) | + +**Cột `kênh` vẫn dẫn TỪNG DÒNG từ `to:` trên đĩa** (giữ đúng kỷ luật đợt 1, không gán hàng loạt): cả 7 đều `to: all-fit` ⇒ `kênh = all`. Không thư nào thiếu trường `to:`. +**`received`** = ngày commit đầu tiên đưa tệp vào kho, cả 7 đều `2026-07-16` (kéo về sau ngày đề trên thư 1–3 hôm). +**`ghi-chú`** ghi đúng câu lead giao, nêu rõ lý do bù và điều khoản mốc nước được viện dẫn. + +### Năm bất biến — ĐO LẠI SAU KHI BÙ, không suy từ đợt 1 + +| Bất biến | Kết quả | +|---|---| +| Khối `OUTBOUND` byte-identical (so `git show HEAD:…`) | **ĐẠT** | +| Dòng cũ là **tiền tố nghiêm ngặt** của dòng mới | **45/45 đạt · 0 hỏng** | +| Mọi hàng đúng 9 ô | **ĐẠT** — tập số ô = {9} | +| Mã định danh trùng lặp | **0** | +| Dòng mồ côi | **0** | + +### Mẫu số sau khi bù (khai cạnh mọi con số) + +- Thư trên đĩa `broadcasts/inbox/**`, **đã loại `README.md` bằng tên**: **69**. +- Dòng dữ liệu khối `INBOUND`: **69** — trong đó **`se` = 23 · `all` = 46**. +- **Vắng mặt (đối chiếu ngược, duyệt đệ quy): 0** ⇒ nghiệm thu `wave-plan:33` **đạt**. +- Chứng từ tách hai đợt: `grep -c "bù dòng @S180"` = **17** (đợt 1) · `grep -c "bù @S180 — trong hộp"` = **7** (đợt 2). Tổng **24** dòng bù, khớp con số lỗ ban đầu. +- 🔸 Hai số 69 bằng nhau **không phải một phép đo độc lập** — nó là **hệ quả** của (0 vắng mặt ∧ 0 mồ côi ∧ 0 trùng lặp). Đừng đem "69 = 69" ra làm bằng chứng thứ hai; nó là cùng một sự thật nói lại. + +### Ba khoản lead chốt GIỮ NGUYÊN (tôi không đụng) + +1. **Lược đồ cột `status`** (§5.5) — `processed` = *đã move* ⟂ *đã áp*. Đổi lược đồ chạm lằn ranh ⇒ lead mang lên anh cùng P3/P5/P7/P8. +2. **Chiều GỬI** (§5.6) — luật trỏ tới `COMMS-LEDGER` không tồn tại (0 tệp, control dương `*ledger*` = 4) cho một việc chưa từng xảy ra (`outbox/all/` = 0 tệp). Giữ nguyên, có khai. +3. **Máy kiểm `A0-2`** (§5.3) — chỉ ghi thành **cảnh báo cho người sẽ cắm**: duyệt **đệ quy**, loại `README` **bằng tên**, **in mẫu số**. Tôi **không tự cắm máy**. +