# S122 — 2026-07-15 — Wave adap 6 broadcast AI_INFRA (W0→W6 đóng trọn) **Lead:** Opus 4.8 (1M, Max) · **Vào phiên bằng:** `/session-start` → `/tiep` (nối mạch S121) **Chain:** `4727d16..2f068c5` — **4 push**, K=0, tree clean. ## wf: run-trace (Sàn-5 — sổ cái vĩnh viễn, KHÔNG phải WAL) > 🔴 Dòng này ở đây vì **WAL là sổ ghi-đè ≤40 dòng** và marker `wf:` bị xoá ngay khi việc xong ⇒ hậu-kiểm cuối phiên **không tìm thấy**. Session-log = append-only ⇒ chỗ dấu BỀN. - `wf: run=2026-07-15-S122-retro-harvest-7-orphan | wf-id=wf_5ce007c4-980 | 7 task investigator-codebase | engine /hmw RUN-TRACE | 7/7 done · 0 error · 1 RỖNG (schema-fail, dữ-liệu KHÔNG mất — lấy lại từ đĩa) | 526s · 836K tok · marker đăng-ký TRƯỚC phóng (Sàn-1) | synthesis: retro-harvest-synthesis.md` ## B1 — Vào phiên `/session-start` → BƯỚC 0.7 WAL-check bắt mạch dở S121 (`[!]` chờ restart CLI) → anh gõ `/tiep`. Ground-truth 9/9 probe khớp chain, **0 chỗ phải sửa ngược**. 🔴 **Spawn-probe 14/14 SỐNG** (0 error, 0 garble) — gate `[!]` chặn từ S121 đóng. 2 vai mới lean nhất roster (~26K tok < cap 60K). ## B2 — W3.0 (chèn mới): retro-harvest 7 orphan — LẬT TIỀN-ĐỀ Anh chốt **đóng THẬT** (không scope, không allowlist, không bịa) vì FIX#4 **tự mâu-thuẫn** (thân nói SCOPE, acceptance nói ĐÓNG). 🔴 **Kết quả lật tiền-đề của chính run: 0/7 là việc mất — 7/7 ĐÃ XONG, chỉ ghi synthesis SAI CHỖ.** - 6 folder có `## synthesis` trong **thân `run.md`** (dạng-3) · `pe-negative-quote` (**S116**) rải trong `## Stages`+`## wf run-id` (dạng-4) - ⇒ thực-địa **≥4 dạng**, doc thừa-nhận **2** ⇒ C8-dual **CHƯA ĐỦ** → **TRI-ACCEPT** - **Gốc:** orphan-authority hỏi *"đã harvest chưa"* (NỘI DUNG) nhưng **đo TÊN FILE** ⇒ **8 dương-giả / 25 run = 32%** - Ca nặng nhất: folder **ghi chép ĐẦY-ĐỦ NHẤT** (cicd PASS + bundle-hash + smoke 200 + *"PIPELINE COMPLETE"*) **vẫn** bị xếp orphan - Bồi: `8fa2fcc` khoe *"[H2 gate]"* mà `git show --stat` **không chạm folder** ⇒ H2 **đã soi + coi ĐÓNG**, chỉ lệch tên - **KHÔNG phải convention-cũ:** cùng ngày 07-12, `h22-wal-adopt` ghi dạng-1 còn `S112-*` ghi dạng-3 ⇒ **thói-quen không nhất-quán** - Cách đóng: **COPY additive** (run.md giữ nguyên) ⇒ 0 rewrite history. **dual-orphan 8→2**. +`rmdir` 2 probe-dir RỖNG (agent-memory 16→14) ## B3 — W3 (9 file, WAL kế-hoạch 5) + W4 + W5 | Wave | Kết quả | |---|---| | **W3** `dfa3dae`+`53765b0` | Sàn-3 canonical @`tiep.md §0` (**fault-inject 9/9**) · `session-start` 0.6b registry-probe + 0.7-trỏ (acceptance `grep -c "chain rỗng"`=**0**) + §2.1.8 counter + H23-note · `session-end` Sàn-2 + §5.0/§5.2 (**fault-inject cây-git 10/10**) + Sàn-5 + §L.b(j) + RE-STAMP + ④b · `fable-clone` GAP#6 `tier:'opus'` · +5 file sweep | | **W4** `a09dcae` | positive-control **5 FLAG → 0**, TOTAL **50→45** tụt **đúng 5**, **0 flag mới** (đo `comm`). TOTAL 50 **khớp chính xác dự-báo W2**. Vá = **B1 bỏ số**, không đổi số. 🆕 stale **nặng hơn con-số** mà detector đếm-số MÙ: `SKILL.md:20` liệt `Bg_*` như menu SỐNG — Budget **xoá từ S61**, mã chỉ còn bia-mộ | | **W5** `c39ba9d` | engine 4 hit → **0 occurrence** (`:345` bẫy mega-line: sửa 1 chỗ còn 1 chỗ **cùng dòng**) · **fix `$userMemDir`** hardcode ⇒ fault-inject **nay cô-lập được** | ## B4 — W6: 4 push + 5 report + 6 request + 2 email + 2 mark - **push** `4727d16..c39ba9d` → `..6dcd457` → `..0f2fe29` → `..2f068c5`. Mọi lần **squash→count→push TRỌN 1 LƯỢT**, trailing-K=0. - **5 adap-report** (H22 · H23 · H24 · EOL/CRLF · owner-sign `n-a`) · **6 adap-request** (R1-R5 + **R6 anh nêu**) · **2 email** (selftest-stamp PASS cả 2) - **2 mark Active-High** — anh chốt **TÁCH** vì 2 trục có **nấc bằng-chứng khác hẳn**: `RC-…15-32-20` (H22, bằng-chứng mạnh) · `RC-…15-32-23` (H24, **caveat binding: "LỆNH về CÁCH LÀM, chưa phải bằng-chứng về HIỆU-QUẢ"**) ## B5 — 🔴 R6 (ANH NÊU) — lead vá triệu-chứng, anh chỉ ra gốc user-memory **48 file · 151 671 B** ở `C:\Users\…` = **0 git · 0 Dropbox · 0 history**; `.claude/agent-memory/` 1.1MB **git đủ** ⇒ bất-đối-xứng **không lý-do kỹ-thuật**. 🔴 Bug **#53 zero-byte** (S45 **mất index thật**) xảy ra **đúng ở thư-mục không có history** ⇒ *"verify byte>0"* = **kỷ-luật người đứng thay version-control**. `settings.json` (project+user) = **0 key** ⇒ **harness ép** ⇒ SE **cố ý KHÔNG tự dời** (dời tay ⇒ mất auto-inject) ⇒ **hỏi hub**. Hardcode = **hệ-quả phụ**: sinh `e70c046` **06-18** → vá `c39ba9d` **07-15** = **27 NGÀY**; cơ-chế = **sinh-1-lần rồi SỐNG SÓT qua rà** (5/8 commit `-S` chỉ là doc nhắc path; 1 trong 3 cái thật là **`ae957c4` "double-check ×2"** — đợt double-check **sờ đúng file mà không bắt**, vì nó hỏi *"logic đúng không?"* mà **logic VẪN đúng**). ## B6 — Sàn-2 + Sàn-5 chạy THẬT lần đầu (đóng gap runtime) - **Sàn-2 sentinel:** đặt @BƯỚC 0, xoá @§6.4 ✅ runtime-verified phiên này. - **Sàn-5:** 🔴 **3 bug lead tự mắc @W3, Sàn-5 TỰ BẮT ở lần chạy đầu** — (1) `git log -1` = commit **CUỐI** ⇒ bắt "folder bị SỬA" thay "folder được TẠO" ⇒ **9 dương-giả**; đúng = `| tail -1` · (2) **soi sai CHỖ**: chỉ grep WAL — mà WAL **ghi-đè ≤40 dòng + marker bị xoá khi việc xong** ⇒ soi sổ-tạm-đang-co để tìm dấu vốn thiết-kế-để-xoá ⇒ **không thể đúng**; spec v1:120 **đã ghi "WAL/session-log"**, lead **rớt nửa sau** · (3) **bẫy `grep -c` lần thứ BA cùng phiên** (`|| echo 0` ⇒ `"0\n0"` ⇒ syntax error) — lead **đã ghi bẫy này vào §5.0(a) VÀ gửi hub R2(β) cùng phiên**. ⇒ sau vá: **1 run sinh phiên này, 1 LỆCH = TRUE-POSITIVE** (marker thiếu ở session-log) ⇒ đóng bằng dòng `wf:` ở đầu file này. 🔸 **Sàn-5 sai được 3 lần là VÌ nó `informational`** — nếu là cổng-chặn thì 9 dương-giả đã chặn cả phiên và người sẽ bypass ngay lần đầu. ## 🔴 Lỗi LEAD phiên này (đều đã vào adap-report + mark + email hub) 1. *"đo lại tái-hiện CHÍNH XÁC dự-báo FIX#4"* rồi lấy trùng-khớp làm chỗ dựa — **con-số đúng, HƯỚNG ĐO SAI** (cả spec lẫn lead đo TÊN FILE) 2. memoryPack ghi *"S113/pe-negative-quote"* — **SAI, là S116**; sub **không bị dắt** (tự truy git) 3. **SHA BỊA** — ghi `Commit 8fb2c9d` vào WAL **TRƯỚC khi commit**; **tái phạm WAL:13(b) đúng 1 NGÀY** sau khi nó thành bài học 4. `-m @'…'@` = here-string **PowerShell** trong **Bash** (tool-desc **cảnh-báo sẵn**) 5. *"runbook 8 hit"* — thật **14** (lấy output `head -40` **đã cắt** làm số tổng) 6. Viết `exit 1` **chặn push** cho ④b EOL — script **cố ý `exit 0` always**, W0.6 **đã bác** CRLF-fatal 7. **R6: vá triệu-chứng không hỏi gốc** — `feedback_root_cause_over_symptom` **đã auto-inject** mà không tự bật; **anh phải chỉ** 8. **R6: vá đúng cái được chỉ, không quét cùng-lớp** — anh hỏi mới lòi script thứ 2 ⇒ **thoát vì MAY** 9. **Sàn-5 ×3** (B6 trên) — gồm bẫy `grep -c` **lần thứ ba** 🔴 **Mệnh-đề chung, chứng 3 lần trong 1 ngày:** **bài-học viết ra / nạp vào context KHÔNG tự chặn được gì.** (#3 tái-phạm sau 1 ngày · #7 memory auto-inject mà không bật · #9 ghi bẫy vào §5.0 rồi vẫn mắc). ⇒ thứ chặn được = **LUẬT SOI-ĐƯỢC**, không phải trí-nhớ. Đây là lý-do adap-request R6 §3.2(4) đề-xuất **luật `no-absolute-path`** thay vì *"nhớ cẩn thận hơn"*. 🟢 **Đối-chứng:** 6/6 lane sub neo **SHA thật, 0 garble**. Khác biệt: **sub bị ép neo từng claim vào `file:line`; lead thì tự do viết văn.** ## Còn nợ (khai thẳng, KHÔNG giả-vờ đã đóng) - **2 vai H24 CHƯA CHẠY lần nào** — counter tick lần đầu phiên này (0→1); `light_every=6` ⇒ nhịp audit đầu tiên **~S128** - **Precedence H23 CHƯA test** — chỉ phân-biệt được ở phiên **lead=Fable** - **Dạng-4 orphan = kẽ CÒN LẠI** — không máy nào bắt được, để người phán - **R6 chờ hub** — SE không tự dời memory được