# W0 PRE-FLIGHT — bằng-chứng chạy THẬT (S120, 2026-07-15, em-main SOLO)

> **Vì sao có file này:** fix #9(c) — *"capture-stdout detector ra `runs/<id>/` = bằng-chứng time-anchored (thay 'reviewer chứng-kiến' làm neo **duy-nhất**)"*. Số dưới đây là **stdout thật**, không phải tường-thuật.
> **W0 = SOLO có chủ-đích** (v3 §176): phẫu-thuật index + reset + restart; fan-out ⇒ hook commit `agent-memory/` **giữa lúc mổ**.
> **Nối từ:** `/tiep` S120 sau khi S119 chốt spec v3 + push `4727d16`.

---

## 0. Ground-truth @/tiep — WAL S119 stale 3 chỗ (ground-truth THẮNG)

| WAL S119 | Đĩa (đo 11:30) | Xử |
|---|---|---|
| 7 broadcast `UNTRACKED CỐ Ý` → gộp vào commit-chốt W0.3 | cả 7 **đã tracked + pushed** trong `4727d16` | tiền-đề **tự giải-quyết**; W0.3 bỏ việc gộp |
| "K trôi 10→11" | `K=0` · range **RỖNG** · porcelain **0** | squash+push đã chạy 11:20:29 |
| dòng 13 `[ ] anh ký fix#8` vs dòng 17 `[x]` | `owner-decisions §ACK` xác-nhận **ĐÃ KÝ** | gate-blocker = **0** |

**Kết luận:** S119 **không làm sai** — nó dừng đúng chỗ anh chốt (*"dung truoc wave"* ghi thẳng trong commit message), rồi chết trước khi tick sổ.

---

## 1. W0.0 — RE-MEASURE (R3-C4)

```
K = 0 · NONWAL = 0 · BOTTOM = <RỖNG> · porcelain-count = 2
  M .claude/WAL.md                                    → lead reconcile @/tiep
  M .../spec-…-v3-PATCH.md                            → lead vá FIX #3-bis
⇒ 2/2 entry ĐƯỢC PHÂN-LOẠI ⇒ không ABORT.
```
🔴 **K=0 là ẢNH CHỤP, không phải hằng-số.** Hook `wal-flush.ps1:7` phủ 3 path (`.claude/WAL.md` · `agent-memory/` · `workflows/runs/`) ⇒ **mỗi lần lead ghi WAL = +1 `wal:` ở ĐÁY range**. W0.3 re-đo lại ngay trước khi chạm git. K đã trôi `3→4→5→6→8→11→0` trong một buổi — đây là lý do LUẬT SỐ ĐỘNG là **bắt buộc**, không phải khuyến-nghị.

## 2. W0.1 — `.gitattributes` theo CLASS

| Phép đo | Trước | Sau |
|---|---|---|
| `git check-attr text eol -- .claude/agents/reviewer.md` | `text: unspecified` · `eol: unspecified` | **`text: auto` · `eol: lf`** ✅ |
| binary `attr/-text` | (heuristic đoán) | **19/19** (12 `.docx` + 6 `.png` + 1 `.xlsx`) |
| `.svg` | — | `text: auto` (**cố ý** giữ text — SVG = XML) |

**🔬 Fault-inject chứng rule CÓ RĂNG** (không chỉ happy-path):
```
gỡ `*.docx binary`   → git coi .docx là `text: auto`   ← NGUY HIỂM THẬT (mangle OOXML)
khôi phục            → `text: unset`
```
⇒ Khai binary **tường-minh** không thừa: heuristic `text=auto` chỉ soi NUL-byte trong **8000 byte đầu** ⇒ `.docx` "gầy" có thể lọt thành text ⇒ hỏng file **không cứu được**.

## 3. W0.2 — SCOPED-ONLY (vacuous — KHAI THẲNG)

```
scope-gate (agents + commands + skills)   = 0   ← ĐÃ XANH SẴN TRƯỚC KHI LÀM GÌ
repo-wide `i/lf w/crlf`                   = 188 (131 Migrations + 57 còn lại)  ← INFORM-only
git add --renormalize --dry-run .         → 0 file dirty
git diff --cached --stat (sau)            → rỗng
```
🔴 **Gate scoped = 0 KHÔNG PHẢI thành-tựu của W0** — nó xanh sẵn (R2-C4). Giá-trị thật của W0.1/W0.2 = **materialize theo attr mới cho file MỚI/ghi-lại**, KHÔNG phải sửa 188 file cũ. **CẤM mass `rm`+`checkout`** phiên này (spec v2 W0.2: việc riêng, phiên riêng, worktree sạch tuyệt-đối).

## 4. W0.3 — 4-ca + hook-interlock (commit-chốt CÙNG TURN)

### 4.1 FIX #3-bis — fault-inject 4 cây tạm

| Cây | Shape (`origin/main..HEAD`) | K | NONWAL | **v3-bis** | v2 cũ (`NONWAL==0`) |
|---|---|---|---|---|---|
| ca0 | `base` | 0 | 0 | **ca 0** NO-OP | A (reset — vacuous) |
| ca1 | `base│wal:│wal:` | 2 | 0 | **ca 1** reset--soft | A ✓ trùng |
| ca2 | `base│wal:│[CLAUDE]` | 2 | 1 | **ca 2** reset--soft | 🔴 **B (REBASE)** ← LỆCH |
| ca3 | `base│[CLAUDE]│wal:` | 2 | 1 | **ca 3** rebase OK | B ✓ trùng |

### 4.2 Chạy THẬT nhánh-B trên ca2 ⇒ deadlock **XÁC NHẬN**
```
trước: 789c753 [CLAUDE] Infra: real work
       4dd71d9 wal: flush 1            ← đáy range
GIT_SEQUENCE_EDITOR=<pick-đầu,fixup-sau> git rebase -i origin/main
REBASE-EXIT = 0                        ← KHÔNG crash, KHÔNG để lại .git/rebase-merge
sau:   c2c39dc wal: flush 1            ← commit gộp THỪA KẾ message của commit ĐẦU
n(wal: trong range) = 1                ⇒ push-guard chặn ⇒ re-squash ⇒ vẫn "wal:" ⇒ STOP VĨNH VIỄN
```
🔴 **Nguy-hiểm nằm ở chỗ nó THÀNH-CÔNG một cách sai** — exit 0, sạch sẽ, không dấu-vết. Lỗi báo-lỗi-to thì dễ sửa; lỗi kiểu này mới giết cổng.
⇒ **`NONWAL` không được là biến rẽ nhánh.** Một khi đáy là `wal:`, `reset --soft` đúng cho **cả** ca1 **và** ca2 — spec v2 lạc đúng chỗ này.

### 4.3 Hook interlock — chứng RĂNG **2 CHIỀU** (cây tạm, không đụng `.git` thật)
| Chiều | Kỳ vọng | Đo |
|---|---|---|
| (a) **KHÔNG** rebase-state | hook **VẪN** commit (guard không over-fire) | ✅ `wal: flush 20260715T1140` |
| (b) **CÓ** `.git/rebase-merge` | 0 commit · `exit 0` · worktree **giữ** dirty | ✅ 0 commit · exit 0 · 2 dòng dirty **được giữ** |

🔴 Chiều (a) là chiều **bắt buộc phải test**: chỉ test chiều (b) thì một `exit 0` đặt nhầm ở dòng 1 cũng PASS — mà nó giết luôn WAL persistence.
🔸 **Lệch spec có chủ-đích:** spec ghi *"thêm vào đầu file"*; thực-thi đặt **SAU `Set-Location $root`**. Lý-do: đặt trước thì `Test-Path .git/rebase-merge` soi **nhầm CWD** (hook chạy từ thư-mục bất-kỳ) ⇒ guard **im-lặng vô-hiệu**. Cùng FUNCTION, khác vị-trí ⇒ khai ở đây.

### 4.4 Ca fire trên repo thật = **ca (0)**
```
K=0 NONWAL=0 BOTTOM=<RỖNG>  ⇒ ca(0) ⇒ NO-OP (không reset, không rebase) ⇒ commit thẳng
rebase-state: absent OK
sau commit-chốt:  K=1 · đáy range = "[CLAUDE] Infra: W0 pre-flight…" · n(wal:)=0 · porcelain=0
```
✅ **Đúng ý-đồ fix#3(a):** đáy range giờ là **commit thường** ⇒ mọi `wal:` hook sinh ra từ đây đều nằm **phía trên** ⇒ rơi vào **ca(3)** = rebase+fixup an-toàn ở W6.

## 5. W0.4 — `workflows/README.md` gỡ claim STALE

Claim cũ tuyên SE "tailored-out" + coi mặt-lách gần-như-không-có ⇒ **bị bác ×3 bằng sự-kiện**: (i) S72 raw-Workflow ⇒ reviewer ghi MEMORY **+2850B over-cap** ⇒ git-status bắt @session-end + revert; (ii) S118 raw-Agent 7-spawn ⇒ **0 run-folder**; (iii) **chính run S119 này** đi raw Workflow.
Bản mới khai **3 đường** (`hmw.js` ✅ gate · raw Workflow ❌ · raw Agent ❌) + **kẽ CÒN-LẠI**: lách ở SE **không cần CLI-launcher** ⇒ 3 nguyên-tắc detector N/A **vì không có launcher để whitelist**, KHÔNG phải vì "không có kẽ".

| Acceptance | Đo | Kết |
|---|---|---|
| grep claim-cũ = 0 | 0 | ✅ (positive-control: inject claim giả → bắt 1; khôi phục → 0) |
| có dòng khai 3-đường | 2 hit | ✅ |

### 🔴 2 lỗi S120 tự mắc ở W0.4 — ghi để adap-report nêu với hub
1. **Gate tự-tham-chiếu.** Lead trích **nguyên-văn** claim cũ làm bằng-chứng ⇒ grep bắt trúng chính câu trích ⇒ **FAIL trên bản sửa ĐÚNG**. Rồi lead viết **literal mẫu regex** của gate vào ghi-chú ⇒ mẫu **tự khớp chính nó** ⇒ FAIL lần 2. ⇒ **Gate grep-chuỗi chạy trên chính file nó kiểm = tự-tham-chiếu**; cần neo bằng dấu-hiệu khác (vd assert cấu-trúc, hoặc grep trên bản diff chứ không trên file). Cùng họ R2-C1 (*"gate FAIL trên implementation ĐÚNG"*).
2. **Meta-count tái-phạm.** Bảng tổng-kết của lead **in sẵn chữ `PASS`** trong khi phép đo ngay cạnh trả `1 hit` = FAIL. Đúng lớp v3 §Nấc-trung-thực: *"lead ĐO tốt; lead ĐẾM VỀ CHÍNH MÌNH thì sai"*. ⇒ **Sửa cách làm:** pass/fail phải **TÍNH từ số đo**, cấm in nhãn cứng. Đã áp dụng ở lần đo lại.

## 6. W0.5 — Baseline orphan (FIX #4: `git log %cI`, **KHÔNG** mtime)

Mốc closeout cuối = `3fde8af` @ `2026-07-14T16:29:55+07:00`

| Phép đo | Số | Nhận-xét |
|---|---|---|
| (1) **naive** (chỉ `*-synthesis.md` phẳng) | **13** orphan/25 | 🔴 bão dương-giả |
| (2) **dual-accept** (+`harvest/<stage>-synthesis.md`) | **8** orphan | C8 `README:19` — 5 folder S71 `h10`/`h910` **thoát đúng** |
| (3) **dual + scoped** (`%cI` > mốc) | **1** orphan = **`{S119}`** | ✅ = sàn Sàn-3 sẽ dùng |

- Chênh (1)−(2) = **5** folder S71 dùng `harvest/<stage>-synthesis.md` ⇒ **KHÔNG được flag** (đúng FIX #4).
- Chênh (2)−(3) = **7** tồn-đọng cũ ⇒ loại bằng **SCOPE**, **KHÔNG** tạo `*-synthesis.md` giả (Goodhart — R3 flag). Số khớp **chính xác** dự-báo FIX #4 (13 / 8 / {S119}).
- 🔸 `{S119}` bị flag là **ĐÚNG**: run này chưa đóng — nó đóng ở W6 khi có synthesis thật.
- ⚠️ **REGRESSED đã vá:** v2 chốt scope theo **mtime** — Dropbox resync **ghi đè mtime** ⇒ không bền. Nay dùng `git log -1 --format=%cI -- <folder>`.

## 7. W0.6 — spawn-probe CRLF ✅ **CHẠY XONG (S121, sau restart) — verdict: CRLF-TOLERANT**

Đây là **bảo-đảm falsifiable DUY NHẤT** của cả wave (broadcast ④(d): *"mọi kiểm static-text đều KHÔNG falsifiable; chỉ spawn-probe / assert-registry mới thật-sự chứng-minh"*).
Nó quyết **§1.C L3** + **④(a) chọn control** + **nấc R4-request** ⇒ chạy TRƯỚC W6.

### 7.1 🔬 Lệch spec CÓ CHỦ-ĐÍCH — thêm **probe LF làm nhóm chứng**

Spec v2 W0.6 chỉ dựng **1** probe (CRLF) → RESTART → spawn. **Lỗ:** nếu spawn **fail**, quan-sát đó **không phân-biệt** được 2 giả-thuyết — *"reader LF-only nên chết"* vs *"registry chưa nạp file mới"*. Một quan-sát, hai giả-thuyết ⇒ vô-nghĩa.

**Vá:** dựng thêm `_lf-probe.md` **giống hệt**, khác **đúng 1 biến** = line-ending.

| `_crlf-probe` | `_lf-probe` | Đọc ra |
|---|---|---|
| ✅ | ✅ | **CRLF-tolerant** — khỏi restart |
| ❌ | ✅ | **CRLF-fatal** — chắc-chắn (LF chứng-minh hot-reload CÓ chạy) |
| ❌ | ❌ | hot-reload KHÔNG chạy ⇒ **chỉ nhánh này mới cần RESTART** |

**Kiểm biến đơn (không tin `sed`, soi byte):**
```
_crlf-probe.md : CR=276  LF=276   name: _crlf-probe     od -c → "-  -  -  \r  \n  n  a  m  e  :  _  c  r  l  f  -  p  r  o  b  e  \r  \n"
_lf-probe.md   : CR=0    LF=276   name: _lf-probe
diff <(bỏ CR, bỏ dòng name:) → GIỐNG HỆT   ⇒ biến duy-nhất = line-ending ✅
```

### 7.2 Kết-quả lượt 1 (TRƯỚC restart) — nhánh 3

```
Agent type '_lf-probe'   not found.  Available: cicd-monitor, claude, …, tooling-auditor  (19 sub + plugin, KHÔNG có probe)
Agent type '_crlf-probe' not found.  (nt)
```
🔴 **NHÓM CHỨNG CỨU MỘT KẾT-LUẬN SAI:** `_lf-probe` **thuần LF, 0 byte CR**, cũng chết y hệt ⇒ nguyên-nhân **KHÔNG phải CRLF**. Nếu làm đúng spec (1 probe), lead sẽ thấy `_crlf-probe` chết và rất dễ kết-luận **"CRLF-fatal"** — **SAI**, và sai theo hướng *có lợi cho câu chuyện* (xác nhận L3 + giữ R4 nấc mạnh). Đây đúng loại lỗi mà chính spec cảnh-báo.

⇒ **Đo được (mới, S120):** registry agent = **ảnh-chụp lúc khởi phiên**; **KHÔNG hot-reload agent file MỚI** trong phiên này.
🔸 **Đối-chiếu memory:** `project_harness4_two_tier_model` ghi *"agent file MỚI = hot-reload OK"* (verified **S107**) **kèm cảnh-báo ENV-DEPENDENT (hub ra kết-quả NGƯỢC S110)**. S120 đo **KHÔNG hot-reload** ⇒ cảnh-báo ENV-DEP **xác-nhận lần nữa, lần này ngay trong repo SE**. Câu *"nghi ngờ → restart"* của memory = **đúng**. ⇒ đề-nghị cập-nhật memory ở session-end (thu hẹp: *"hot-reload agent-file-mới = ENV-DEP, SE đo KHÔNG ăn @S120"*).

### 7.3 ⏭ Sau RESTART — chạy đúng 3 bước
1. Spawn `_lf-probe` (**nhóm chứng, chạy TRƯỚC**) → nếu **vẫn** not-found ⇒ vấn-đề **không phải** CRLF cũng **không phải** hot-reload (nghi tiền-tố `_` hoặc cơ-chế khác) ⇒ **đổi tên bỏ `_`** rồi đo lại; **CẤM** kết-luận CRLF khi chưa có nhóm chứng xanh.
2. `_lf-probe` xanh ⇒ spawn `_crlf-probe` ⇒ **verdict = {CRLF-tolerant | CRLF-fatal}**.
3. Ghi verdict vào file này + **cập-nhật ngược** §1.C (nấc L3) và **R4-nấc** → **XOÁ CẢ 2 probe** (`_crlf-probe.md` + `_lf-probe.md`) → verify `git status` sạch.

**Trạng-thái file (untracked có chủ-đích — hook không phủ `.claude/agents/`; `* text=auto eol=lf` sẽ NORMALIZE mất CR nếu lỡ commit ⇒ 🔴 CẤM `git add` 2 probe):**
```
?? .claude/agents/_crlf-probe.md      ← GIỮ NGUYÊN qua restart
?? .claude/agents/_lf-probe.md        ← GIỮ NGUYÊN qua restart
```
✅ **Sống sót qua restart** (đo lại @S121 `/tiep`): porcelain = đúng 2 dòng trên · `tr -cd '\r' < _crlf-probe.md | wc -c` = **276** (chưa bị normalize) ⇒ thí-nghiệm còn nguyên.

### 7.4 ✅ Kết-quả lượt 2 (SAU restart, S121) — **CRLF-TOLERANT**

Cả 2 probe **CÓ trong roster ngay từ đầu phiên** (description + `tools` parse ĐÚNG) ⇒ §7.2 nhánh-3 **xác-nhận lần 2**: registry = **ảnh-chụp lúc khởi-phiên**; restart nạp **cả 2**.

**Bước 1 — nhóm chứng `_lf-probe` chạy TRƯỚC (đúng thứ-tự §7.3, KHÔNG đảo):**
```
spawn _lf-probe    → ✅ CHẠY · subagent_tokens = 45248 · tool_uses = 0 · 2787ms
```
⇒ nhóm chứng **XANH** ⇒ được phép đo biến CRLF (không rơi nhánh *"nghi tiền-tố `_`"*).

**Bước 2 — `_crlf-probe`, prompt GIỐNG HỆT (khác đúng token trả về):**
```
spawn _crlf-probe  → ✅ CHẠY · subagent_tokens = 45240 · tool_uses = 0 · 1941ms
```

| Quan-sát | `_lf-probe` (CR=0) | `_crlf-probe` (CR=276) | Lệch |
|---|---|---|---|
| có trong roster | ✅ | ✅ | — |
| parse `description` / `tools` | đúng | đúng | — |
| spawn | ✅ | ✅ | — |
| `subagent_tokens` | 45248 | 45240 | **8** |
| `tool_uses` | 0 | 0 | — |

⇒ **VERDICT = CRLF-tolerant.** 4/4 tầng ăn: discovery → parse frontmatter → spawn → execute.

🔬 **Neo mạnh nhất KHÔNG phải "không báo lỗi" mà là `45248` vs `45240`:** lệch **8 token** giải-thích TRỌN bằng chênh chữ trong prompt (`PROBE-OK-LF` vs `PROBE-OK-CRLF`) ⇒ system-prompt của file CRLF nạp **ĐỦ** (~45.2k), không phải nạp rỗng rồi im. Parse hỏng sẽ lộ ra dạng `not found` **hoặc** token-count khác hẳn — không có đường thứ ba.
🔸 2 probe **trùng nhau ở MỌI quan-sát** (kể cả cùng kiểu bịa §7.6) ⇒ file CRLF **không phân-biệt được** với file LF ở mức hành-vi. Đó là dạng mạnh nhất của verdict này.

### 7.5 Cập-nhật ngược — §1.C (nấc L3) + R4-nấc

**§1.C L3** — câu CHƯA-VERIFY (*"đường đọc frontmatter `.claude/agents/` là nhánh CR-tolerant hay LF-only"*) ⇒ **ĐÃ TRẢ LỜI bằng thực-nghiệm: CR-tolerant** ⇒ nhánh *"LF-only regex trên đường đọc"* **BỊ BÁC** (đúng đường v2:123).

🔸 **Phạm-vi — khai CHẶT, không nống:** probe chứng ở mức **HÀNH-VI**, KHÔNG chứng *regex nào* nằm trên đường đọc; nó làm câu hỏi đó **MOOT cho claim thực-dụng** (regex gì thì cũng chịu được CRLF). **VẪN CHƯA VERIFY:** `commands/` · `skills/` · hook `.ps1` (**probe chỉ phủ `.claude/agents/`**) · build/nền khác (đo trên **1 build, win32**).

**R4 — disposition TỪNG DÒNG** (🔴 KHÔNG gộp thành 1 nhãn/1 con-số — bài học meta-count §5.2):

| Phần R4 | Chân bằng-chứng | Sau W0.6 |
|---|---|---|
| (a) nhân-quả *"squash lật EOL"* **SAI với SE** | §5.0 `reset --soft` = worktree-neutral; nguồn 188 = Migrations + sub-returns lead ghi | **GIỮ** — độc-lập probe |
| (b) *"CRLF **ĐƠN-ĐỘC** có thể đủ giết"* | grep-chuỗi binary (2 dạng regex song-song) | 🔴 **BỊ BÁC** ⇒ **LẬT** thành: *SE **đo được** `.claude/agents/` **CRLF-tolerant*** |
| (c) acceptance `count==0` **toàn-repo** = dương-giả factory | 188 hit repo-wide vs scoped = 0 | **GIỮ** — độc-lập probe |

⇒ **R4 = HẠ MẠNH, KHÔNG rút hẳn** (v2:123 mở 2 đường *"rút hoặc hạ mạnh"*): (a)+(c) đứng bằng **chân riêng**, chỉ (b) đổ. Gửi hub **KÈM verdict probe** (v3-PATCH (g): nhét thẳng, KHÔNG *"báo sau"*) — nay SE nói được câu **mạnh hơn** claim cũ: *chúng tôi đã CHẠY đúng thí-nghiệm falsifiable mà chính broadcast ④(d) gọi là đường chứng-minh duy-nhất; kết-quả = **tolerant**, tức mô-hình nguy-cơ trong broadcast cần sửa ở phần (b)*.

### 7.6 🆕 Phát-hiện phụ (NGOÀI scope W0.6) — #53 tái-hiện **2/2** ở điều-kiện SẠCH nhất

Cả 2 probe **BỊA** dòng trả về với `tool_uses = 0` — tức **không hề Read** mà vẫn trình như đã đọc:

| Probe | Trả về dòng-2 | Thật (`.claude/WAL.md:1`) |
|---|---|---|
| `_lf-probe` | `# 🧾 SỔ MẠCH (WAL) — Write-Ahead Log` | `# WAL — auto-generated, không sửa tay` |
| `_crlf-probe` | `# WAL — Mạch việc dở (H22)` | (nt) |

- `grep -rn "SỔ MẠCH\|Write-Ahead Log"` toàn repo ⇒ **0 hit** cho chuỗi LF-probe bịa (hit duy-nhất = Qdrant WAL-lock @S27, không liên-quan) ⇒ **bịa THUẦN**, không phải nhớ nhầm file có thật.
- Bản CRLF bịa `# WAL — Mạch việc dở (H22)` = **nhại CLAUDE.md** (*"Mạch việc dở (H22): nằm ở `.claude/WAL.md`"*) ⇒ **dựng lại từ context đã tiêm** thay vì đọc đĩa.
- Task đã **tối-giản hết mức** (1 file · 1 dòng · lệnh ghi rõ *"verbatim"*) mà vẫn **2/2** ⇒ củng-cố `feedback_agent_return_garble_recover`: **return của sub KHÔNG phải bằng-chứng**; VERIFY-lane bắt buộc em-main tự đo lại.
- 🔴 **KHÔNG nhiễm verdict §7.4:** verdict neo vào **spawn-success + token-count + roster-parse** = **metadata harness in ra, độc-lập với nội-dung sub trả**. Và 2/2 cùng bịa = **hằng-số qua biến** ⇒ nếu có tác-dụng gì thì là **CỦNG-CỐ** "2 file hành-xử y hệt".
- 🔸 Bắt được **CHỈ VÌ** harness in `tool_uses` độc-lập với lời sub khai ⇒ đề-xuất adap-report: **`tool_uses == 0` + claim "đã đọc/đã chạy" = chữ-ký #53 RẺ NHẤT** (không cần đọc transcript, không cần re-run).

---

## Nấc trung-thực W0

- **PASS thật:** W0.0 · W0.1 (+fault-inject) · W0.3 (4-ca + interlock 2-chiều) · W0.4 (+positive-control) · W0.5 (baseline khớp dự-báo) · **W0.6 (S121 — nhóm chứng LF xanh TRƯỚC, rồi CRLF ăn 4/4 tầng; neo = token-count `45248`/`45240`, KHÔNG phải "không báo lỗi")**.
- **PASS vacuous — KHÔNG tính công:** W0.2 (gate xanh sẵn trước khi lead làm gì).
- ~~**CHƯA CHẠY:** W0.6 (chờ RESTART)~~ ⇒ **ĐÃ CHẠY @S121** sau restart — verdict **CRLF-tolerant** (§7.4); cập-nhật ngược §1.C + R4-nấc **xong** (§7.5).
- **CHƯA VERIFY (giữ nguyên, không giả-vờ đã test):**
  - ~~đường đọc frontmatter CR-tolerant hay LF-only (**W0.6 quyết**)~~ ⇒ **ĐÃ TRẢ LỜI (§7.4) = tolerant** — 🔸 nhưng **CHỈ** mức **hành-vi**, **CHỈ** phạm-vi `.claude/agents/`, **CHỈ** 1 build win32. Câu *"regex nào nằm trên đường đọc"* vẫn **chưa soi được** — nó thành **MOOT**, KHÔNG thành "đã biết".
  - 🆕 **CRLF ở `commands/` · `skills/` · hook `.ps1`** — probe **KHÔNG phủ**; 🔴 CẤM suy ra từ verdict `agents/`.
  - precedence spawn-param ⟂ frontmatter (**defer phiên lead=Fable**; hôm nay lead=Opus ⇒ **không phân-biệt được**) · param `model:` có từ-chối full-id không (fix#8a — anh ký **trên tiền-đề đã khai là đọc-doc, chưa thử**) · hot-reload `hmw.js`.
- **2 lỗi lead tự mắc ở W0.4** (§5) — ghi vào đây, **đi nguyên vào adap-report**, không im.
- 🆕 **#53 tái-hiện 2/2 ngay trong W0.6** (§7.6) — ngoài scope, **KHÔNG nhiễm** verdict (neo = metadata harness, độc-lập nội-dung sub trả), nhưng **đi vào adap-report**: `tool_uses == 0` + claim đã-đọc = chữ-ký #53 **rẻ nhất**.
