# N3 — LANE D / 6 · GĐ-5 (cửa gọi mô hình đắt) + GĐ-6 (niêm phong đồng bộ + bảng gốc)

> Vai: `reviewer` (đối kháng, read-only/propose-only) · phiên **S180** · engine `/fable-clone`
> Ghi đĩa TRONG LÚC LÀM (chống #53). Mọi mục dưới đây được đổ ruột ngay khi đo xong, KHÔNG để placeholder.

---

## §0 — KHUNG ĐO: mẫu số lấy từ đâu (đọc trước, vì cả lane treo vào đây)

Đề bài của lane này khác N2: **N2 kiểm claim có đứng không, lane D kiểm PHỦ CÓ ĐỦ KHÔNG.**
Muốn nói "được bao nhiêu" thì phải nói "trên bao nhiêu" — và phải nói rõ **đếm CÁI GÌ**, vì cùng một
giai đoạn có tới ba cách đếm hợp lệ mà ra ba con số khác nhau.

**Ba mẫu số nguyên bản của hub cho GĐ-5** (không phải tôi chế ra, hub tự đánh số):

| Mẫu số | Nguồn | Số |
|---|---|---|
| **A. Bước làm** | `thu-chinh:221-229` — hub tự đánh 1..8 | **8** |
| **B. Sàn chức năng** | `phu-luc:296-316` — hub tự đánh (i)..(vii); riêng (vi) hub tự tách **3 gạch đầu dòng** ("ba chỗ dây điện chịu lực") | **7 mục / 9 atomic** |
| **C. Nghiệm thu** | `phu-luc:328-335` — 6 ô tích | **6** |

**Mẫu số D — atomic hợp nhất (dùng cho tiêu đề):** tôi hợp A ∪ B ∪ C, khử trùng, tách mỗi
mệnh đề cưỡng chế **kiểm được độc lập** thành một khoản, mỗi khoản neo `file:line` của hub.
Ra **20 khoản** cho GĐ-5 (bảng §1) và **17 khoản** cho GĐ-6 (bảng §5).
Đây là **phép tách của tôi**, không phải số của hub ⇒ tôi dán nguyên bảng để ai cũng đếm lại được.
Ai không đồng ý cách tách thì cãi vào từng dòng, không cãi vào con số tổng.

🔴 **Vì sao phải phiền thế:** N2 đã bắt N1 lỗi *"~70% không mẫu số"* ở GĐ-2 (`sub-review-n2-S180.md:82`).
Lane này mà lại phán "gần xong" bằng cảm giác thì lặp đúng lỗi vừa bị bắt.

**Quy ước ô trạng thái:** `ĐỦ` (có, chạy được, có bằng chứng) · `NỬA` (có mầm/tương đương một phần,
thiếu vế kiểm được) · `THIẾU` (không có) · `KHÁC` (SE làm khác hub có lý do — mục 6 khuôn báo cáo)
· `KHÔNG-ĐO-ĐƯỢC` (không có dụng cụ để phán).
Khi tính tử số tôi tính **ĐỦ = 1 · NỬA = 0.5 · KHÁC = 1 (nếu tương đương kiểm được) · THIẾU = 0**,
và **dán cả hai con số**: nghiêm ngặt (chỉ ĐỦ) và nới (ĐỦ + NỬA + KHÁC).

---

## §1 — 🔴 PHÁT HIỆN NẶNG NHẤT CỦA LANE (ghi ngay, trước cả bảng khoản)

### D-LANE-01 [MAJOR] — Máy soát chỗ-ngồi model MÙ TRỌN VẸN với phiên hiện tại, mà vẫn in "0 lệch"

Đây là khoản chống lưng **quan trọng nhất** cho câu "GĐ-5 gần xong nhất" (N1
`sub-invest-fitmap-S180.md:138`, và cũng là ô TC-09 của N1 `:183`). N2 đã verify khoản này và
**không bác được** — nhưng N2 kiểm *hằng-số có đồng bộ không* (2-key `hmw.js:73` ⟂
`spawn-model-audit.ps1:102`), **không kiểm máy có phủ được dân số nào không**. Tôi kiểm vế thứ hai,
bằng cách **chạy thật cái máy đó**.

**Lệnh đã chạy (dán nguyên):**
```
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/spawn-model-audit.ps1
```

**Kết quả thật, trích nguyên văn khối B:**
```
session scope  : 80080445-1a92-4320-ac13-327a3d919e69 (last write 2026-08-06 10:10)
scope = CURRENT session only, by design (old runs predate the convention; owner-decisions:64)
  wf_264fb5c2-0db/agent-a02e9ca3e3a0f1a45.jsonl [reviewer] -> claude-fable-5 (40 record(s))
  COUNTS: 1 dispatch | 1 explicit | 0 mismatch
  [OK] 0/1 lane(s) drifted off expected 'claude-opus-5'
TOTAL FLAGS: 0
```

**Vì sao đây là lỗi, không phải máy chạy đúng:**

Phiên đang chạy là **S180, ngày 2026-08-07**, id `be228103-d2dc-4df6-aa72-1914725656c5`. Máy lại
tuyên *"CURRENT session only"* rồi đo phiên `80080445…` **ghi lần cuối 2026-08-06 10:10** — tức
phiên **của hôm qua (S179)**. Nhãn *"phiên hiện tại"* là **nhãn SAI**, và cái sai đó không hề được
khai ra dòng nào.

**Đo dân số bị bỏ sót (lệnh + số):**

| Đại lượng | Lệnh | Giá trị |
|---|---|---|
| Lane spawn của phiên S180 | `ls $P/be228103…/subagents/*.jsonl \| wc -l` | **17** |
| Bản ghi model trong 17 lane đó | `grep -ohE '"message"\s*:\s*\{\s*"model"\s*:\s*"[^"]+"'` rồi tally | **893** (725 `claude-opus-5` + **168 `claude-fable-5`**) |
| Lane máy audit THẤY | dòng `COUNTS:` của chính máy | **1** |
| Bản ghi model máy audit THẤY | dòng lane của chính máy | **40** |

⇒ Máy đo **1/17 lane (5,9 %)** và **40/893 bản ghi (4,5 %)** — và cả 1 lane nó thấy đều **không
thuộc phiên hiện tại**. Nói cách khác: **phủ thật của phiên hiện tại = 0/17 = 0 %.**
🔴 Toàn bộ **168 bản ghi `claude-fable-5`** — tức đúng cái **mô hình đắt** mà cả GĐ-5 sinh ra để
canh — nằm **trọn trong vùng mù**.

**Cơ chế hỏng, tìm được bằng đọc mã:** `scripts/spawn-model-audit.ps1:250-253` chọn phiên bằng vị từ
**hình-dạng-đường-dẫn**:
```powershell
Get-ChildItem -Path $projDir -Directory |
    Where-Object { Test-Path (Join-Path $_.FullName 'subagents\workflows') } |
    Sort-Object LastWriteTime -Descending | Select-Object -First 1
```
Vị từ `Test-Path subagents\workflows` là **đại-diện (proxy)** cho *"phiên này có spawn"*. Nó đúng khi
lane đi qua **Workflow tool** (`hmw.js` → `subagents/workflows/wf_*/agent-*.jsonl`), và **sai câm**
khi lane đi qua **Task tool** — lúc đó bản ghi rơi **PHẲNG** vào `subagents/agent-*.jsonl`.

**Đo trên đĩa (0-hit kèm control-dương, đúng ràng buộc lane):**

| Phép đo | Kết quả |
|---|---|
| `test -d be228103…/subagents/workflows` | **NO** (0-hit) |
| `find be228103… -maxdepth 2 -type d -name workflows \| wc -l` | **0** |
| **Control-dương:** `ls 041d0937…/subagents/workflows/` | **`wf_a574cff1-6b9`** ⇒ vị từ *có* chạy, không phải hỏng thước của tôi |
| mtime phiên S180 / mtime phiên máy chọn | `1786081087` / `1785985825` ⇒ máy bỏ qua phiên **mới hơn ~26,5 giờ** |

**Vì sao nó đắt hơn một cờ thường:**
1. Nó đánh thẳng vào **nghiệm thu TC-09 của hub** (`thu-chinh:84`): *"máy soát chỗ-ngồi trả không có
   lượt nào lệch"*. Máy SE **đang trả đúng câu đó** — `0 mismatch`, `TOTAL FLAGS: 0` — trên một mẫu
   **1 lane của hôm qua**. Đây là **đèn xanh giả**, đúng lớp bệnh mà `khuon…:295` gọi tên: *"chưa
   có dữ liệu"* bị in ra trông y hệt *"đã đo và bằng không"*.
2. Máy **tự dán nhãn sai** (`CURRENT session only, by design`) ⇒ người đọc báo cáo không có cách nào
   biết nó đang đo phiên khác. Đúng lớp **`vắng-mặt trông giống ổn`** trong sổ nhớ SE.
3. Nó là **cùng một cái máy** mà N1 đem ra chống lưng cho "GĐ-5 gần xong nhất", và là **cùng một cái
   máy** mà `docs/gotchas`-culture của SE gọi là *"mỗi phép đo kèm CONTROL DƯƠNG"*. Máy có control
   cho vế hằng-số (khối A `anti-vacuous note`), **không có control cho vế dân số**.

**Đề xuất nghiệm thu (propose-only, KHÔNG tự sửa):** máy phải (a) chọn phiên bằng **định danh phiên**
hoặc mtime **không lọc theo hình dạng thư mục**; (b) quét **cả hai** vị trí `subagents/*.jsonl` và
`subagents/workflows/**/agent-*.jsonl`; (c) khi phiên được chọn **không phải** phiên mới nhất, phải in
**một dòng khai thẳng** chênh lệch đó thay vì giữ nhãn *"CURRENT"*; (d) in **mẫu số**: `n lane đo /
m lane tồn tại`. Phản chứng bắt buộc: chạy trên một phiên chỉ có lane phẳng thì máy **phải** thấy
lane, không được rơi về phiên cũ.

🔸 **Khai công bằng cho SE — 3 vế của máy này ĐỨNG VỮNG và tôi không bác:**
- Khối A **2-key** đồng bộ thật: `hmw.js:73` = `claude-opus-5` = `spawn-model-audit.ps1:102`, và máy
  **tự loại grep ngây thơ** (*"naive grep … 2 hit(s) [comment text] -> NOT used as evidence"*) —
  đây là chống citation-trap đúng bài.
- Khối C/D đo **26/26 agent** mang `model: opus` **và** 26/26 mang `effort: max`; canonical
  `STATUS.md:478` = 26 khớp đĩa 26.
- Khối E **tự khai 6 điều máy KHÔNG nói**, gồm *"Nothing here blocks a spawn"* và *"RETROSPECTIVE
  ONLY"*. Đây là **A16 làm đúng** (khai máy/tay, khai giới hạn) — hiếm và đáng giữ.
⇒ Lỗi nằm ở **tầng chọn mẫu**, không nằm ở tầng so sánh. Vá tầng chọn mẫu là đủ; đừng đập cả máy.

### §1-bis — ĐÍNH CHÍNH 2 CHỖ TRONG CHÍNH §1 CỦA TÔI, và 1 chỗ trong lệnh của lead

**(a) Sửa con trỏ dòng của chính tôi.** §1 tôi ghi khối chọn phiên ở `:250-253`. Đo lại bằng
`sed -n '246,256p'`: khối thật ở **`spawn-model-audit.ps1:251-254`**. Lệch 1 dòng. Claim không đổi,
con trỏ sai thì vẫn phải sửa — đúng lớp *"cite sai ≠ claim sai"*.

**(b) Dòng nhãn sai — địa chỉ chính xác:** `scripts/spawn-model-audit.ps1:262`
```powershell
Write-Host '  scope = CURRENT session only, by design (old runs predate the convention; owner-decisions:64)'
```
Chuỗi này in **vô điều kiện** ngay sau khi `$sessionDir` được chọn, **không hề kiểm** phiên vừa chọn
có phải phiên mới nhất không. Đó là chỗ nhãn trở thành lời khai sai.

**(c) 🔴 Lệnh của lead đảo NGƯỢC chiều mù — tôi không gật.**
Lead viết: *"sai CÂM với lane đi qua Workflow tool (`hmw.js` → `subagents/workflows/wf_*/agent-*.jsonl`)"*.
**Đo được nói ngược lại.** Máy đọc đúng `subagents\workflows\**\agent-*.jsonl`
(`:270` `$wfRoot = Join-Path $sessionDir.FullName 'subagents\workflows'`), nên **đường Workflow là
đường nó THẤY**. Đường nó **mù** là đường **Agent/Task tool**, nơi bản ghi rơi **phẳng** vào
`subagents/agent-*.jsonl`.

Bằng chứng hai chiều, cả hai đều từ lượt chạy thật hôm nay:

| Chiều | Phép đo | Kết quả |
|---|---|---|
| **Control-dương — đường Workflow THẤY được** | chính output của máy | `wf_264fb5c2-0db/agent-a02e9ca3e3a0f1a45.jsonl [reviewer] -> claude-fable-5 (40 record(s))` ⇒ máy **có** đọc được lane nằm dưới `workflows/` |
| **Chiều mù — đường Agent/Task KHÔNG thấy** | `ls be228103…/subagents/*.jsonl \| wc -l` = **17**, `COUNTS:` của máy = **1 dispatch** | 17 lane phẳng, **0** lane được đếm |

⇒ Nếu chữa theo chiều lead viết thì **vá nhầm phía** và lỗ hổng còn nguyên. Ghi lại đây để người thi
công wave sau không đọc nhầm.

### §1-ter — Đơn vị của con số 168 (lead đòi, và đòi đúng: phiên này đã 2 ca bẫy đơn-vị)

**168 = số BẢN GHI ASSISTANT, không phải số lượt spawn, không phải số dòng tệp.**

- **Tập đo:** 17 tệp `be228103…/subagents/agent-*.jsonl` (toàn bộ lane của phiên S180).
- **Phép đếm:** đếm số lần khớp mẫu **cấu trúc** `"message"\s*:\s*\{\s*"model"\s*:\s*"…"` — đúng mẫu
  mà chính `spawn-model-audit.ps1:268` dùng (`$RX_MODEL`). Neo vào **hình dạng bản ghi**, nên đoạn
  JSON mà agent dán vào nội dung hội thoại **không bị đếm nhầm**.
- **Ba đơn vị, ba con số — dán cả ba để khỏi ai suy sai:**

| Đơn vị | Giá trị | Cách ra |
|---|---|---|
| **Bản ghi assistant** mang model đắt | **168** | 86 (`investigator-codebase`) + 82 (`reviewer` lane fable) |
| **Lane** chạy model đắt | **2 / 17** | bảng per-lane bên dưới |
| **Bản ghi assistant** toàn phiên | **893** | 725 `claude-opus-5` + 168 `claude-fable-5` |

**Bảng per-lane (dán đủ, không nén thành khoảng — A12):**

| agentType | model | bản ghi | lane |
|---|---|---|---|
| investigator-codebase | **claude-fable-5** | 86 | `agent-ac5f6f7d0e2a76f52` |
| reviewer | **claude-fable-5** | 82 | `agent-a7390eedfdc5630c7` |
| reviewer | claude-opus-5 | 64 | `agent-a5e5e718aff8efd8c` |
| reviewer | claude-opus-5 | 60 | `agent-a92da9c10dcc99e40` |
| reviewer | claude-opus-5 | 60 | `agent-aa7e9553a0f020dea` |
| reviewer | claude-opus-5 | 58 | `agent-ab75396c9a7f3c954` |
| reviewer | claude-opus-5 | 53 | `agent-af88ca58f3cc2b801` |
| reviewer | claude-opus-5 | 53 | `agent-a9abe52ea06316342` |
| ring1-audit | claude-opus-5 | 93 | `agent-a031dd3d8d90080dd` |
| ring2-audit | claude-opus-5 | 93 | `agent-a601d55c746799f00` |
| tooling-auditor | claude-opus-5 | 67 | `agent-a84bf779106c92924` |
| lead-gap-auditor | claude-opus-5 | 59 | `agent-ae3dbb06ff8aca6e5` |
| lead-stale-auditor | claude-opus-5 | 59 | `agent-a7e55a9bf374c912e` |
| harvest-curator | claude-opus-5 | 52 | `agent-a8669ed5d706881d3` |
| back-end-reviewer-style | claude-opus-5 | 1 | `agent-a97df3ebc18174343` |
| database-reviewer-style | claude-opus-5 | 1 | `agent-ae88236e97dcbc610` |
| front-end-reviewer-style | claude-opus-5 | 1 | `agent-a5e6351fbc6042d16` |

🟢 **Phát hiện phụ, ngược chiều lo ngại của hub — đáng ghi:** lane `investigator-codebase` chính là
lane **bị #53 rồi được resume trong phiên** (`run.md:22`). Nó vẫn là **MỘT** lane (86 bản ghi, không
có lane thứ hai cùng agentType), và **giữ nguyên `claude-fable-5` xuyên suốt**. Hub cảnh báo
*"nối lại làm rớt tham số mô hình đã ghi đè"* (`phu-luc:304`). **Ở SE, lần này, tham số KHÔNG rớt.**
n=1, chỉ nói về lane công-việc chứ không nói về lane tổng-hợp — nhưng đây là bằng chứng dương đầu
tiên và nên được đo lại chứ đừng chép lo ngại của hub thành lo ngại của mình.

### §1-quater — Phạm vi bị ảnh hưởng (giới hạn đúng cái đo được, không rộng hơn)

- ✅ **KHÔNG bị ảnh hưởng:** phép đo **H23 @S126**. Máy tự dẫn chứng lane `wf_cb964f83-331` và lượt
  chạy hôm nay bắt được `wf_264fb5c2-0db` ⇒ các lượt đó đi **đường Workflow**, đúng đường máy thấy.
  Kết luận S126 (*spawn-param thắng frontmatter hard-pin*) **vẫn đứng**.
- ⚠️ **Bị ảnh hưởng:** mọi câu `0-mismatch` tuyên cho **phiên mà spawn đi đường Agent/Task**. Với các
  phiên đó, câu đúng không phải *"đo rồi, sạch"* mà là **"chưa đo gì"**. Phiên S180 là một ca như vậy:
  **0/17 lane được đo.**
- 🔴 **Cách đọc lại cho đúng:** các claim đó **không bị chứng minh là SAI** — chúng **mất chỗ dựa**.
  Đây là khác biệt A14 (*"chưa biết" ≠ "xong"*): tôi không tuyên máy nói dối, tôi tuyên **máy im lặng
  mà bị đọc thành sạch**.
- 📌 **Chưa đo, cần lệnh:** tỉ lệ phiên-đi-đường-Workflow / phiên-đi-đường-Agent trong lịch sử kho.
  Lệnh đề xuất: đếm thư mục con `~/.claude/projects/<slug>/*/` có `subagents/workflows` so với tổng số
  có `subagents/*.jsonl`. **CHƯA CHẠY** ⇒ không phán số.

---

## §2 — GĐ-5: BÓC TỪNG KHOẢN (mẫu số D = 20)

| # | Khoản hub (neo) | SE | Bằng chứng `file:line` |
|---|---|---|---|
| **D-1** | Cửa gọi model đắt **chỉ chủ dự án gõ** (`thu-chinh:222`, `phu-luc:314`) | **ĐỦ** | `commands/fable-real.md:38` *"Lead KHÔNG tự ý gọi engine-đắt — kể cả khi HMW-mode ON"*; H21 per-invocation `:9` |
| **D-2** | Đội **không bao giờ tự nâng hạng** (`thu-chinh:222`) | **ĐỦ** | `fable-real.md:37` *"Engine-đắt per-invocation = đường DUY NHẤT nâng 1 vai lên hạng-nhất"* |
| **D-3** | **Mọi chỗ gọi** mang tham số model **tường minh**; quét kho **không còn chỗ để mặc định** (`phu-luc:313`, nghiệm thu `:331`) | **NỬA** | Tầng frontmatter ĐỦ: audit khối D = **26/26** `model: opus` + **26/26** `effort: max`. Tầng chỗ-gọi **KHÔNG**: `hmw.js:274` `model: resolveModel(...)`, mà `resolveModel` trả **`undefined`** ở **cả hai** nhánh (`:95` role-less, `:96` role-có-frontmatter) = **đúng nghĩa "để mặc định"**. Cộng máy soát mù (§1). |
| **D-4** | Điều phối **chỉ ĐÓNG GÓI, cấm diễn giải lại** (`thu-chinh:223`, `phu-luc:300`) | **NỬA** | Luật CÓ nhưng **sai lane**: `commands/pause.md:53` *"chép nguyên văn, CẤM paraphrase… CẤM dựng lại từ trí nhớ"* — áp cho **sổ lưu trữ**, không áp cho **lượt dispatch** vào sub |
| **D-5** | **Rào** đánh dấu vùng nguyên văn (`thu-chinh:223`) | **NỬA** | Rào CÓ THẬT: tiền tố `> anh:` (`pause.md:53`; `session-start.md:98` `_context-s-<N>.md` FLOW). Chỉ sống ở lane lưu trữ. 🔴 **N1 `:148` khai "chưa có rào-nguyên-văn" là BI QUAN QUÁ** — rào có, đặt nhầm chỗ |
| **D-6** | Cửa **biên dịch ý định** → đặc tả **4 khối** (`thu-chinh:224`, `phu-luc:302`) | **ĐỦ** | spec-file H21 `fable-real.md:28`; instance sống = `spec-adap-upgrade-pack-phased-07-08-2026.md` cùng thư mục |
| **D-7** | **Chỉ ra bản nháp**, không tự thi công (`phu-luc:302`, nghiệm thu `:330`) | **ĐỦ** | `fable-real.md:28` *"Engine propose-only… Engine KHÔNG tự ghi"* |
| **D-8** | **Cửa duyệt chủ dự án** giữa spec-nháp và thi công (`phu-luc:304` tầng 3, nghiệm thu `:332`) | **KHÁC (có khai)** | SE: anh duyệt **ở ĐẦU** (gõ lệnh + vai + đề bài), lead verify spec rồi worker chạy **cùng invocation** — N1 `:147`. Hợp lệ theo *"sàn chỉ nâng"* `thu-chinh:285`, **phải khai mục 6 khuôn B** |
| **D-9** | Thi công song song: **1 nhánh sâu + N nhánh rộng** (`phu-luc:304` tầng 4) | **ĐỦ** | `/fable-real` (1 sâu) ⟂ `/fable-clone` (N rộng); phiên này chạy đúng hình đó — `run.md:4` |
| **D-10** | Tổng hợp = **MỘT LƯỢT GỌI MỚI**, không nối lại (`phu-luc:304` tầng 5) ← **N2 F-09** | **NỬA** | Thiết kế ĐÚNG: `run.md:60` N4 = `/fable-real reviewer` = **lượt gọi mới**. Nhưng **0 luật thành văn** cấm nối-lại-khi-tổng-hợp ⇒ hôm nay đúng vì tình cờ, mai không ai chặn. Xem §1-ter: lý do hub sợ (**rớt tham số model**) **đo thật ở SE = không rớt** |
| **D-11** | Gói ngữ cảnh chuẩn hoá **5 mảnh** (`thu-chinh:225`, `phu-luc:306`) | **NỬA — 3/5** | ✅ nền trỏ-không-chép (`tiep.md:183`) · ✅ lớp mềm mạch việc (`_mind`/WAL) · ✅ ký ức vai cắt theo trần (`hmw.js:9` memory-pack slice + `memory-budget.json`) · ❌ **sở thích** (sổ GĐ-4 chưa có) · ❌ **lời chủ nguyên văn ở lane dispatch** (= D-4/D-5) |
| **D-12** | Mảnh chưa có phải **khai "chưa có"** (`phu-luc:306`) | **NỬA** | Có cho **1** mảnh: `pause.md:53` *"⇒ ghi `(THIẾU — lý do)`"*. Không có luật tổng cho cả gói |
| **D-13** | Vật chứng **CHUNG GỐC**, sổ riêng chỉ là khung nhìn (`thu-chinh:228`, `phu-luc:308`) | **ĐỦ** | `runs/` là gốc duy nhất; file lane này nằm cùng `runs/2026-08-07-S180-…/` với mọi lane khác. **0 đường dẫn thứ hai** |
| **D-14** | **Sổ lượt chạy đắt** tồn tại, 5 cột khung nhìn (`thu-chinh:226`, `phu-luc:316`) | **THIẾU** | 0-hit `grep -rniE "sổ.*(lượt|lần).*đắt|expensive-run"` trên `.claude`+`docs`. **Control-dương:** `grep -rlni "engine-đắt"` = **6 tệp** ⇒ thước chạy, vật không có |
| **D-15** | **Ghi dòng NGAY lúc dựng thư mục** (`thu-chinh:226`) | **THIẾU** | Hành vi tương đương CÓ (`hmw.js:9` scaffold run-folder @P1 trước fan-out) nhưng **không có sổ ⇒ không có dòng**. Vật chủ vắng thì khoản này rỗng |
| **D-16** | **Dòng sống kể cả lượt chết giữa chừng** (`thu-chinh:226`) | **NỬA** | Nghi thức chứng minh được: 7/7 vai #53 phiên này recover 0 byte mất (`run.md:54`). Nhưng là **tệp lane**, không phải **dòng sổ** |
| **D-17** | Vật chứng lượt đắt thiếu tệp = **mức nghiêm trọng CAO NHẤT** (`phu-luc:316`) | **THIẾU** | Thang-nghiêm-trọng-theo-chi-phí-chạy-lại chưa tồn tại (thuộc GĐ-2; N1 `:227` + N2 `:82` đều xếp GĐ-2 thiếu vế này) |
| **D-18** | Vai mới vào **danh sách vai hợp lệ** TRƯỚC khi dùng (`thu-chinh:227`, `phu-luc:312`) | **ĐỦ — MẠNH HƠN SÀN** | `hmw.js:22` `VALID_ROLES`; `:173` *"Vai ∉ VALID_ROLES … DỪNG HẲN (STOP-HARD) — KHÔNG fail-soft"*. Hub chỉ đòi *có danh sách*; SE có **cổng chặn cứng**. Ghi mục 6 khuôn B (làm MẠNH HƠN) |
| **D-19** | **Một lượt thử do chủ gõ** + soi thư mục **đủ bộ tệp chuẩn** (`thu-chinh:229`, nghiệm thu `:334`) | **NỬA** | Vế 1 ĐỦ: anh gõ `/fable-real`+`/fable-clone` (`run.md:4`), đo được **168 bản ghi fable**. Vế 2 THIẾU: **0 máy điểm danh bộ-tệp** (GĐ-2) ⇒ "đủ bộ" chưa ai kiểm |
| **D-20** | Điều kiện vào + **có hạn mức** (`thu-chinh:220`) | **ĐỦ** | Hạn mức **đo được**, không phải khai suông: 168 bản ghi `claude-fable-5` hôm nay. **Không** rơi nhánh `không áp dụng` |

**Tử số GĐ-5:** ĐỦ = D-1,2,6,7,9,13,18,20 (**8**) + KHÁC-tương-đương D-8 (**1**) = **9**
· NỬA ×8 (D-3,4,5,10,11,12,16,19) = **4,0** · THIẾU ×3 (D-14,15,17) = 0.

> ### 🔢 **GĐ-5 = 13,0 / 20 (65 %) nới · 9 / 20 (45 %) nghiêm ngặt**

**Kiểm chéo bằng 2 mẫu số gốc của hub — ba số phải hội tụ, nếu không là tôi tách sai:**

| Mẫu số | Tính | Tỉ lệ |
|---|---|---|
| A — 8 bước làm (`thu-chinh:222-229`) | 0,83+0,5+1+0,5+0+1+1+0,5 = **5,33/8** | **67 %** |
| C — 6 ô nghiệm thu (`phu-luc:330-335`), ô 6 `không áp dụng` vì CÓ hạn mức | 1+0,5+1+0+0,5 = **3,0/5** | **60 %** |
| D — atomic hợp nhất | **13,0/20** | **65 %** |

Ba mẫu số độc lập ra **60–67 %**, không mẫu nào lệch ra ngoài dải. ⇒ phép tách của tôi **không bơm số**.

---

## §3 — 🔴 CÂU "GĐ-5 GẦN XONG NHẤT" — KHÔNG ĐỨNG

**N1 tuyên** (`sub-invest-fitmap-S180.md:136` + `:255`, và `run.md:41` chép lại): GĐ-5 = *"GĐ GẦN XONG NHẤT"*.

**Đây là claim XẾP HẠNG.** Một claim xếp hạng chỉ đứng khi có **ít nhất hai** đại lượng cùng đơn vị
đem so. N1 **không** đưa đại lượng nào — không mẫu số cho GĐ-5, và không mẫu số cho cái nó vượt.

**Phép so cùng-đơn-vị duy nhất hiện có trên đĩa** — cả hai đều tính trên **8 bước làm của thư chính**:

| GĐ | Tử/mẫu | Tỉ lệ | Nguồn |
|---|---|---|---|
| **GĐ-2** | **5,5–6 / 8** | **69–75 %** | N2 đếm độc lập, `sub-review-n2-S180.md:82` (liệt từng bước: `(i)✓ (ii)nửa (iii)✓ (iv)nửa (v)✓ (vi)2/4 (vii)2.5/3 (viii)✗`) |
| **GĐ-5** | **5,33 / 8** | **67 %** | lane này, §2 bảng kiểm chéo |

⇒ **Trên cùng một thước, GĐ-2 ≥ GĐ-5.** Câu *"GĐ-5 gần xong nhất"* **không được dữ liệu đỡ**;
tốt nhất là hoà với GĐ-2 trong sai số, xấu nhất là **xếp sai thứ tự**.

**Hai lý do khiến câu này còn nguy hơn một con số lệch:**

1. **Bằng chứng chống lưng chính của nó vừa sập.** N1 dựng "gần xong nhất" trên 5 gạch đầu dòng
   (`:137-143`), mà gạch nặng nhất — `spawn-model-audit` *"đo thật 0-mismatch"* — nay đo lại là
   **0/17 lane của phiên hiện tại** (§1). Bỏ gạch đó ra, GĐ-5 tụt tiếp.
2. **Nó điều khiển thứ tự wave.** `run.md:41` đã chép "gần xong nhất" vào bảng bậc-trưởng-thành, và
   N1 `:243` từ đó suy ra *"W5 … Nhẹ, có thể ghép W2"* — mà N2 `:19-20` đã bác vì vi phạm
   **điều-kiện-vào GĐ-5** (`thu-chinh:220` đòi GĐ-2 *đã thi công*) **lẫn OD-2**. Nhãn lạc quan →
   xếp lịch sai. Tôi **không** đề xuất lại phương án ghép đó.

🟢 **Công bằng với N1:** bản đồ N1 là bản đồ tốt và N2 đã đo ~60 phép mà không claim nào đổ
(`sub-review-n2-S180.md:128`). Chỗ hỏng **không phải** các claim thành phần — **từng claim đều đứng**.
Chỗ hỏng là **phép cộng chúng lại thành một thứ hạng**. Đúng lớp bệnh sổ nhớ SE gọi là
*meta-count self-coverage blind-spot*: đo tốt, **đếm-về-tổng** thì sai.

**Đề xuất câu thay (propose-only):** bỏ hẳn chữ "gần xong nhất"; thay bằng
*"GĐ-5 ≈ 5,33/8 bước (67 %), ngang GĐ-2 (5,5–6/8) trong sai số; phần còn thiếu của GĐ-5 nằm ở khoản
CHỐNG-LƯNG (máy soát) nên rủi ro cao hơn phần còn thiếu của GĐ-2 vốn chỉ là công cụ cộng thêm."*

---

## §4 — HAI MÓN N1 NÓI CÒN THIẾU: hub đòi CHÍNH XÁC gì, SE dựng tới đâu

### (a) Sổ khung-nhìn lượt chạy đắt

**Hub đòi 6 vế** (`thu-chinh:226` + `phu-luc:316`), liệt từng vế, không nén thành khoảng:

1. Là **khung nhìn**, KHÔNG phải đường dẫn thứ hai (`phu-luc:308`).
2. Năm cột: **thời điểm · loại · đề bài · con trỏ vật chứng · kết luận**.
3. **Ghi dòng ngay lúc dựng thư mục.**
4. **Dòng sống kể cả khi lượt chết giữa chừng.**
5. Vật chứng **chung gốc** với mọi lượt chạy khác.
6. Thiếu tệp ở lượt đắt = **mức nghiêm trọng cao nhất**.

**SE dựng tới đâu:** vế 1 và 5 **ĐÃ ĐẠT trước cả khi có sổ** (`runs/` là gốc duy nhất — D-13).
Vế 3 có **hành vi** tương đương (`hmw.js:9` scaffold @P1). Vế 4 có **bằng chứng hành vi** mạnh
(7/7 vai #53 recover, 0 byte mất). **Vế 2 và vế 6 = 0.** Bản thân **cuốn sổ = 0** (0-hit, control-dương
6 tệp). Dữ liệu để dựng thì **đã nằm sẵn**: `runs/` + dấu `[engine:` trong nhật ký vai (**8 tệp** có
dấu này — `grep -rl "\[engine:" .claude/agent-memory/`) + chuỗi WAL.

⇒ **Hình dạng đúng của món này = một lượt DERIVE, không phải một cuốn sổ chép tay.** Chi phí thấp.
🔴 Nhưng chỗ **đặt** nó là quyết định của anh: đặt sai thành **nguồn-đôi** với WAL/`runs/` — đúng rủi ro
N1 `:211(c)` đã nêu cho sổ GĐ-4.

### (b) Luật truyền-nguyên-văn

**Hub đòi 3 vế** (`thu-chinh:223`, `phu-luc:300`): điều phối **chỉ đóng gói** · lời thô **đi nguyên
khối** · **có rào** đánh dấu vùng nguyên văn. Cộng luật rút ra số 5 (`thu-chinh:295`):
*"Lời chủ dự án truyền nguyên văn, cấm đi qua bộ não trung gian."*

**SE dựng tới đâu — và đây là chỗ N1 khai SAI CHIỀU:**
N1 `:148` viết *"SE chưa có luật thành văn + chưa có rào-nguyên-văn"*. **Cả hai vế đều có.**
`pause.md:53` là luật thành văn, có rào (`> anh:`), có cả nhánh khai-thiếu (`(THIẾU — lý do)`), có cả
lệnh cấm dựng-lại-từ-trí-nhớ. `session-start.md:98` nhắc lại cho `_context-s-<N>.md`.

**Cái THẬT SỰ thiếu, hẹp hơn nhiều:** luật đó phủ **lane LƯU TRỮ** (ghi vào sổ mạch việc), **không phủ
lane DISPATCH** (đóng gói lời anh gửi vào prompt của vai đắt) — mà lane dispatch mới đúng là cái
GĐ-5 nói tới.

🔬 **Phép đo tự-quy-chiếu, chạy trên chính lượt này:** prompt dispatch của lane D chứa **0** khối
`> anh:` nguyên văn; toàn bộ đề bài là **chữ của lead** (*"N1 nói GĐ-5 là chỗ SE gần xong nhất"*,
*"2 món N1 nói GĐ-5 còn thiếu"*). Tôi là **dụng cụ đo**, và kết quả là: lời anh **đã đi qua bộ não
trung gian** trước khi tới vai chạy model đắt. Đúng thứ `thu-chinh:295` cấm.
🔴 Và đây là **LỚP-2 của hub** (*thợ rèn không có dao*) tái diễn: lượt đi kiểm luật-truyền-nguyên-văn
**chính nó** vi phạm luật đó.

🔴 **CẤM TUYÊN MẠNH — nhắc lại đúng nấc hub tự khai:** `thu-chinh:62` (iii) ghi cưỡng chế nguyên văn
ở hub đang **"BỎ QUA CÓ KHAI, chưa phải ĐÃ CHỨNG MINH"**. ⇒ SE **cấm** viết "đã chứng minh" cho khoản
này. **Kiểm N1 có lỡ tuyên vượt nấc không:** N1 `:148` viết *"hub tự khai cơ chế của chính họ đang
'bỏ qua có khai' ⇒ adopt mức LUẬT-THÀNH-VĂN trước, máy sau"* — **N1 ĐÚNG NẤC, không vượt.**
Lỗi của N1 ở khoản này là **bi quan sai về SE**, không phải lạc quan sai về hub. Ghi rõ để wave sau
đừng đi dựng lại cái đã có.
---

## §5 — TC-07 + luật tự-trị ba bậc: xác nhận số mục, và SE CÓ MẮC không

### §5.1 — Xác nhận N2 F-07b: số mục là **(vi)**, không phải (vii)

Đo trực tiếp trên phụ lục (`sed -n '202,205p'`):

- **`phu-luc:202` = (vi)** — *"**Tiền kiểm KHÔNG BAO GIỜ đứng chờ chỉ thị.** Đây là luật tự trị ba bậc:
  bằng chứng rõ thì tự vá và khai lại · mơ hồ thì chọn nhánh an toàn…"*
- **`phu-luc:204` = (vii)** — *"**Guard vắng tệp phải là vị từ máy**…"*

⇒ **N2 F-07b ĐÚNG.** N1 `§7.1` gọi tự-trị-3-bậc là "(vii)" là **con trỏ sai**; nội dung claim đúng.
🔸 Lưu ý phạm vi: khoản này nằm ở **GĐ-3**, không phải GĐ-5 — nhưng nó là **thuốc của TC-07** nên
lane D phải bóc.

### §5.2 — SE CÓ MẮC TC-07 KHÔNG? — **CÓ, dạng nhẹ, và nguyên nhân là cấu trúc**

**Định nghĩa bệnh** (`thu-chinh:82`): *"Chủ dự án mở và đóng phiên lúc rảnh, không ngồi ra chỉ thị
được; quay lại thấy máy **đứng chờ**."*

**Ca sống, đo trên đĩa ngay phiên này** (`grep -n "chờ anh" .claude/WAL.md`, control-dương: cùng tệp
đọc được, tổng **27 dòng**):

| WAL | Nguyên văn | Đọc ra |
|---|---|---|
| `:4` | `goal: bootstrap S180 + bookend @open 5 vòng ĐÓNG; chờ anh chọn việc chính` | máy dựng xong nền rồi **dừng** |
| `:16` | `next: chờ anh chọn (a) áp 4 thư upgrade-pack-phased / (b) dọn nợ governance / (c) việc sản phẩm` | **đứng chờ chỉ thị**, đúng chữ TC-07 |

**Phán: đây là "đứng chờ" hay "hỏi đúng việc hệ trọng"?** Đem áp **lằn ranh đỏ** mà chính hub liệt
(`khuon…:304`, A6): *đổi lược đồ dữ liệu · xoá dữ liệu · việc hướng ra ngoài · việc không lùi được ·
việc dính tiền*. Câu hỏi ở `WAL:16` là **chọn hạng mục việc để làm tiếp** — **không rơi vào ô nào**
trong năm ô đó. Cả ba lựa chọn (a)(b)(c) đều **lùi được**, đều **không dính tiền**, đều **không hướng
ra ngoài**. ⇒ Theo đúng thước của hub, đây là **đứng chờ**, không phải hỏi-hệ-trọng.
⇒ **SE MẮC TC-07.** Không nặng — máy **khai rõ** mình đang chờ (`next:` có ghi), tức là *đứng chờ CÓ
KHAI* chứ không phải treo câm. Nhưng khai xong vẫn là đứng.

**Nguyên nhân cấu trúc — và nó nối thẳng về GĐ-4, không phải GĐ-5:**
SE **có** uỷ quyền thường trực, nhưng **chỉ theo từng lát**, không có mục tổng:
`commands/session-end.md:82` — *"🔓 **UỶ-QUYỀN THƯỜNG-TRỰC** (owner slot (71) @S172, nguyên văn:
*'gom và sleep thì auto nhé, tự quyết'*) — GOM (harvest) và NÉN-NGỦ từ nay là AUTO, lead TỰ QUYẾT,
KHÔNG hỏi từng lần."*
Đây là **đúng khuôn hub muốn** (lời anh nguyên văn + phạm vi + cấm hỏi lại) — nhưng phủ **đúng hai
việc**: gom và ngủ. Không có mục *"tự trị khi chủ dự án vắng"* ở dạng tổng quát — mà đó chính là
**mục mồi thứ hai** hub đòi ở GĐ-4 bước 3 (`thu-chinh:201`).

⇒ **Kết luận nối hai giai đoạn:** TC-07 của SE **không chữa được ở GĐ-5**. Thuốc nằm ở **GĐ-4**
(mục sở-thích-thường-trực cho phép tự trị + lằn ranh đỏ liệt kê) và **GĐ-3** (luật tự trị ba bậc,
`phu-luc:202`). Mà GĐ-4 đúng là ô N1 xếp **hổng nhất** (`run.md:45`). Hai lane khớp nhau độc lập.

🔸 **Giữ nguyên nhãn hub, không tự chế số:** `thu-chinh:92` dán TC-07 = ***chưa có dụng cụ***.
SE cũng **0 bộ đếm đứng-chờ**. Tôi phán được **có bệnh** (bằng 2 dòng WAL), **không phán được tần
suất**. Ai muốn số thì phải dựng bộ đếm trước — **CHƯA ĐO, và cấm điền số ước.**

---

## §6 — GĐ-6: BÓC TỪNG KHOẢN (mẫu số E = 17) + ĐIỀU KIỆN VÀO

### §6.1 — Điều kiện vào: N1 nói "chưa thoả" — **ĐÚNG KẾT LUẬN, nhưng lý do yếu hơn sự thật**

**Hub** (`thu-chinh:242`): *"**Điều kiện vào:** mọi giai đoạn nằm trong phạm vi `áp dụng` của **bản đồ
áp dụng nhà bạn** đã ở nấc *đã thi công*."*

**N1** (`sub-invest-fitmap-S180.md:165`) ghi: *"MỌI GĐ trong phạm-vi-áp-dụng đã thi công — XA NHẤT,
đúng thiết kế."*

🔴 **Lý do thật nặng hơn thế.** Điều kiện vào GĐ-6 tham chiếu tới **bản đồ áp dụng bảy dòng** — và
**vật đó chưa tồn tại trên đĩa SE**: đó chính là khoản **A0-4** (`khuon…:266`), thuộc **GĐ-0**, mà
GĐ-0 còn chưa đóng (N1 `:46` xếp GĐ-0 *"gần đóng"*, và `:58` đo được **A0-3 hụt** —
`grep "upgrade-pack-phased" broadcasts/_index.md` = **0 hit**, control `harness-22` = 3).

⇒ Trạng thái đúng của điều-kiện-vào GĐ-6 **không phải** *"chưa thoả"* mà là
**"chưa ĐÁNH GIÁ ĐƯỢC — thiếu vật tham chiếu"**. Khác biệt có hậu quả: *chưa thoả* gợi ý "cứ làm các
GĐ khác rồi tự khắc thoả"; *chưa đánh giá được* nói rõ **phải đẻ bản đồ áp dụng trước**, nếu không thì
tới lúc mở GĐ-6 vẫn không ai biết "mọi GĐ trong phạm vi áp dụng" là những GĐ nào.
📌 Đây là **một khoản vào wave W0**, không phải wave cuối.

**Kết luận cho câu hỏi của đề bài:** N1 nói SE chưa động GĐ-6 và đó là **đúng thiết kế** — tôi **xác
nhận**, và **không** đề xuất kéo sớm bất kỳ phần nào của GĐ-6. OD-2 giữ nguyên.

### §6.2 — Bảng 17 khoản

| # | Khoản hub (neo) | SE | Bằng chứng |
|---|---|---|---|
| **E-1** | Cổng đồng bộ **4 tầng** chạy + **dán kết quả**, mỗi tầng *khớp*/*lệch đã khai* (`thu-chinh:244`, `phu-luc:343`) | **THIẾU** | Họ hàng có (drift-audit tháng, ring1/ring2) nhưng là **doc-drift + lead-claim audit**, không phải trace ý-tưởng→spec→việc-thật (N1 `:159`) |
| **E-2** | **Trace xuôi**: mảnh → đặc tả → giai đoạn → vật chứng (`phu-luc:349`) | **THIẾU** | — |
| **E-3** | **Trace ngược**: trên đĩa mà không truy được về đặc tả = **phạm vi tự phình**, liệt từng khoản (`thu-chinh:245`, `phu-luc:350`) | **THIẾU** | — |
| **E-4** | **Đối chiếu ba chiều** bảng bệnh: bệnh → thuốc → bằng chứng (`phu-luc:351`) | **THIẾU** | §2 của N1 là **phôi** (12 TC × bằng chứng), chưa có chiều "thuốc" |
| **E-5** | Soi lệch đặc tả ⟂ đĩa, đặc biệt khoản **áp một nửa** (`phu-luc:352`) | **THIẾU** | — |
| **E-6** | **Phán theo mức chặn**, không gộp một cục (`phu-luc:353`) | **THIẾU** | Xung đột nền: doctrine SE `exit-0-advisory` (`governance-detectors.ps1` *"Exit 0 always"*) — N1 `:49` xếp đây là xung đột triết lý |
| **E-7** | Số kỳ vọng cổng điểm danh **suy từ độ dài danh sách**; quét kho tìm số cũ viết cứng (`thu-chinh:246`, `phu-luc:355`) | **NỬA** | ĐẠT ở **một** cổng, đo được hôm nay: `spawn-model-audit` khối C/D suy **26** từ `.claude/agents/*.md` trừ README, cross-check canonical `STATUS.md:478` = 26 ⇒ **khớp**. Chưa phủ **mọi** cổng; N1 `:160` |
| **E-8** | Bài kiểm **ghim liệt kê từng TÊN**, không ghim con số (`thu-chinh:246`, `phu-luc:355`) | **CHƯA ĐO** | Cần: đọc các bài kiểm/cổng roster xem ghim tên hay ghim số. **Lệnh đề xuất:** `grep -rn "VALID_ROLES\|informRoles" .claude scripts tests` rồi soi từng chỗ. **KHÔNG PHÁN** khi chưa chạy |
| **E-9** | **Phép thử đột biến**: bỏ 1 tên ⇒ **nhiều hơn một** bài kiểm đỏ (`thu-chinh:246`, `phu-luc:355`) | **THIẾU** | N1 `:160` *"mutation-test cho cổng roster: KHÔNG CÓ"* |
| **E-10** | **Điều kiện vào danh sách** — vai chỉ vào cổng khi **cùng một commit** đủ 4 vế: tệp vai · thư mục ký ức · chỗ gọi ở **CẢ HAI** cửa · tập đăng ký (`thu-chinh:247`, `phu-luc:357`) | **NỬA** | Vế 1+2 đo được **ĐẠT hôm nay**: `ls .claude/agents/*.md` trừ README = **26**, `ls .claude/agent-memory/` (trừ `memory-budget.json`) = **26** ⇒ **26/26 vai có thư mục ký ức, 0 lệch**. Vế 3 (chỗ gọi 2 cửa) + vế 4 **CHƯA ĐO**. Luật thành văn ràng 4-vế-1-commit: **THIẾU** |
| **E-11** | **Bộ đăng ký sửa trọn gói** — liệt trước mọi chỗ máy đếm vai, sửa hết 1 commit (`phu-luc:359`) | **THIẾU** | Luật chưa thành văn. SE có ca cùng lớp: `"17/17"` hardcode stale (`hmw.js:57` comment) — N1 `:185` |
| **E-12** | Chạy lại **đối chứng đặt tên hai chiều + phản chứng** (`thu-chinh:248`) | **THIẾU (bị chặn ngược)** | Phụ thuộc GĐ-1 (**chuẩn đặt tên duy nhất**) mà N1 `:44` xếp GĐ-1 = **chốt MỞ KHOÁ, chưa có** |
| **E-13** | **Bảng gốc**: mỗi TC 1 dòng, **mỗi ô số kèm lệnh tái lập**; chưa đo ghi thẳng `KHÔNG ĐO ĐƯỢC` (`thu-chinh:249`, `phu-luc:361`) | **THIẾU** | §2 của N1 là **phôi 12 dòng có bằng chứng**, nhưng **không phải** bảng gốc: thiếu cột *đại lượng đo* + *ngày đo*, và nhiều ô **không kèm lệnh tái lập** |
| **E-14** | **Bản nháp dấu** trạng thái *chờ ký*, **mã dấu để trống** cho chủ điền (`thu-chinh:250`, `phu-luc:363`) | **ĐỦ** | `.claude/governance/ACTIVE-MARKS.md` — schema `RC-pqhuy1987-dd-mm-yyyy-hh-mm-ss`, và luật **đúng ngữ nghĩa hub**: *"**Binding (P3):** có stamp = **LỆNH** · không stamp = đang **BÀN**"*. Người thi công **không tự cấp dấu** |
| **E-15** | **Quét đồng bộ tài liệu**: liệt danh sách trước rồi **tick từng cái** (`thu-chinh:251`, `phu-luc:365`) | **NỬA** | Khuôn tick-list có trong nghi thức drift-audit (`rules.md §6.4/§9.4`, dẫn qua `CLAUDE.md:121`); chưa có danh sách chốt cho gói này |
| **E-16** | **Báo cáo cuối** gửi hub; nấc *đã được kiểm chứng* chỉ flip **sau khi hub soi** (`thu-chinh:252`) | **THIẾU** | Chưa có báo cáo nào cho gói này (GĐ-0 chưa đóng) |
| **E-17** | Quét **rò rỉ đặc thù nội bộ** trên bản gửi ra ngoài = **không hit**, + khai chạy **máy hay tay** (`phu-luc:387`, A16 `khuon…:366`) | **NỬA** | Văn hoá khai **có thật và mẫu mực**: khối E của `spawn-model-audit` tự khai 6 điều nó KHÔNG nói, gồm *"Nothing here blocks a spawn"*. **Bảng A16 hợp nhất chưa có** (N1 `:163`); máy quét rò rỉ chưa có |

**Tử số GĐ-6:** ĐỦ = E-14 (**1**) · NỬA ×4 (E-7, E-10, E-15, E-17) = **2,0** · CHƯA ĐO ×1 (E-8, tính 0
và **khai rõ**) · THIẾU ×11 = 0.

> ### 🔢 **GĐ-6 = 3,0 / 17 (18 %) nới · 1 / 17 (6 %) nghiêm ngặt**

**Đọc con số này cho đúng:** 18 % **không phải điểm kém** — GĐ-6 là giai đoạn **niêm phong**, theo
thiết kế nó chỉ mở khi mọi GĐ khác xong. Con số thấp ở đây là **bằng chứng SE đang tuân OD-2**, không
phải bằng chứng SE chậm. Cái đáng chú ý ngược lại: **E-14 đã ĐỦ từ trước** (RC-mark) và **E-7 đã đạt ở
một cổng** — tức SE có sẵn hai mảnh của GĐ-6 mà **không phải đi mượn hình thức của hub**.

---

## §7 — VƯỢT KHUNG (cần anh quyết, lane này KHÔNG tự chốt) — **3 khoản**

1. **Chỗ đặt sổ lượt-chạy-đắt** (§4a). Derive được, nhưng đặt ở đâu để **không thành nguồn-đôi** với
   `runs/` và WAL là quyết định kiến trúc. Cùng lớp rủi ro N1 `:211(c)` nêu cho sổ GĐ-4.
2. **Luật truyền-nguyên-văn ở lane DISPATCH** (§4b). Áp nó nghĩa là **lời anh gõ phải được chép nguyên
   khối vào prompt của vai đắt**, kèm rào. Điều này **đổi cách anh ra lệnh** (anh phải chấp nhận lời
   mình đi thẳng, lead không được tóm gọn) ⇒ **anh quyết, không phải lead quyết**.
3. **GĐ-6 điều-kiện-vào-danh-sách trọn-gói-1-commit** (E-10). Đụng roster + chỗ gọi ở **cả hai cửa
   phiên**. `phu-luc:357` gọi đây là *"luật đắt nhất của giai đoạn"* và cảnh báo **nâng sớm là tự khoá
   cửa ra của chính mình** — hub đã giẫm thật. **Không chạm trước khi có bản đồ áp dụng.**

🔸 **KHÔNG tính là vượt khung:** vá `spawn-model-audit` (§1). Đó là **sửa lỗi thường**, em-main làm
được, không cần anh. Đừng để nó bị đẩy vào hàng chờ owner rồi nằm đó.

---

## §8 — TỔNG KẾT LANE D

| Trục | Kết quả |
|---|---|
| **GĐ-5** | **13,0 / 20** (65 %) nới · **9 / 20** (45 %) nghiêm · hội tụ 3 mẫu số 60–67 % |
| **GĐ-6** | **3,0 / 17** (18 %) nới · **1 / 17** (6 %) nghiêm · điều-kiện-vào **chưa đánh giá được** |
| **"GĐ-5 gần xong nhất"** | **KHÔNG ĐỨNG** — GĐ-2 (5,5–6/8) ≥ GĐ-5 (5,33/8) trên cùng thước |
| **Vượt khung** | **3** |
| **Lỗi máy tìm được** | **1 MAJOR** (`spawn-model-audit` mù 17/17 lane phiên hiện tại, vẫn in `0 mismatch` + `TOTAL FLAGS: 0`) |
| **Đính chính N1** | 2 (rào-nguyên-văn **có** — N1 bi quan sai · "gần xong nhất" — claim xếp hạng không mẫu số) |
| **Đính chính N2** | 0 — F-07b và F-09 đều **xác nhận đúng** |
| **Đính chính lệnh lead** | 1 (chiều mù bị viết ngược — xem §1-bis(c)) |
| **Đính chính chính tôi** | 1 (con trỏ `:250-253` → `:251-254`) |

**Khoản khai `CHƯA ĐO` — có tên, có lệnh, không giấu:**
1. **E-8** bài kiểm ghim tên hay ghim số — cần soi từng cổng roster.
2. Tỉ lệ phiên đi **đường Workflow** ⟂ **đường Agent** trong lịch sử kho (§1-quater).
3. **E-10** vế 3 (chỗ gọi ở cả hai cửa) + vế 4 (tập đăng ký).
4. Tần suất TC-07 — **không tồn tại dụng cụ**, giữ nguyên nhãn chữ của hub.

**END sub-n3-lane-d-gd56 — VERDICT: GĐ-5 13,0/20 · GĐ-6 3,0/17 · 3 vượt-khung · 1 MAJOR máy-mù · "gần xong nhất" BÁC.**
