# Lane C — h23-vs-h8

> RETURN-only tu /fable-clone ensemble wf_1f6bd5e2-478 (vai investigator-codebase, model opus).
> Lead ghi (B3 single-writer) — sub KHONG tu ghi. agentId=a3af2ab52fd357759

---

VERDICT: H23 và H8 **KHÔNG mâu-thuẫn** — H23(1) chấp-nhận form "ghi-chú-đầu-cây" nên thoả được mà GIỮ H8 100% nguyên-vẹn; nhưng kiểm-kê bắt **1 GAP THẬT có runtime-hại**: `.claude/commands/fable-clone.md` hứa "ensemble tier-2" mà KHÔNG hề có `tier:'opus'` → khi Fable UP, lệnh-B im-lặng chạy N×Fable, trái chính §K.D floor-2 của SE (runbook:431 đã ghi 🔴 BẮT BUỘC, command-file thì không) — nên với SE, H23 KHÔNG phải "phòng-xa runtime-0" như hub khai.

## 1. Kiểm-kê spawn-site (đã đọc, file:line thật)

**2 CLASS ngữ-nghĩa NGƯỢC nhau** — đây là mấu-chốt cả phân-tích:
- **Class A** = roster mặc-định. `inherit` = **CHỦ-ĐÍCH** (H8, anh-chốt S66). lead đổi → sub đổi = ĐÚNG, không phải "âm-thầm sai".
- **Class B** = `/fable-clone` ensemble. `inherit` = **SAI** khi lead=Fable (clone phải tier-2 theo định-nghĩa).

| # | Spawn-site | Model tường-minh? | Class |
|---|---|---|---|
| 1 | `.claude/workflows/hmw.js:162-167` (`agent(prompt,{agentType,schema,label,model:resolveModel(…)})`) | ✅ **TỐT NHẤT** — param CÓ trong code, `undefined` by-design; **ghi-chú-đầu-cây thật** ở `:32-42` phủ cả `resolveModel:43-51` | A+B |
| 2 | `.claude/agents/README.md:75-127` decision-tree ~12 nhánh | ⚠️ 0/12 nhánh; note `:3` = đầu **FILE** không đầu **CÂY** (cách 72 dòng, khác heading) | A |
| 3 | `.claude/commands/session-start.md:96,97` (tooling-auditor + harvest-curator) | ❌ không. BƯỚC 0.6 `:37-45` = probe **lead**, không phải note-spawn | A |
| 4 | `.claude/commands/session-end.md:49,52` (harvest-curator (d)/(f) + tooling-auditor (g)) | ❌ không | A |
| 5 | `.claude/commands/sleep-recovery-memory-l2.md:60` (harvest-curator) | ❌ không | A |
| 6 | **`.claude/commands/fable-clone.md:15,34,38-40`** | 🔴 **KHÔNG — và KHÔNG có `tier:'opus'`.** `:15` hứa "ENSEMBLE tier-2-mạnh-nhất"; `:38-40` "Floor model-tier v3" chỉ nói ghế **lead**. Cơ-chế đạt tier-2 **VẮNG HẲN** | **B — GAP** |
| 7 | `.claude/commands/fable-real.md:36` | ✅ nêu rõ H8 all-inherit + đường elevate; single-Fable = intent | B |
| 8 | `docs/governance/fable-real-runbook.md:130-132, 287-291, 416-422` (3 ví-dụ args) | ✅ `"tier":"opus"` **mỗi item** + `:431` 🔴 BẮT BUỘC + `:299` | B |
| 9 | `docs/governance/harness-11-engine.md:343` (K.E bảng lệnh-B) | ⚠️ "ensemble tier-2" mà không nói cơ-chế; `K.D:336` có "worker-draft pin tier-2 Opus" | B |

**GAP #6 — chi-tiết đo được.** `runbook:431` nguyên-văn: *"Fable UP mà BỎ pin → N lane inherit = **N×Fable** = 2 vị-trí chạm top-model NGOÀI chế-độ thật (trái K.D floor-2)"*. Mandate đó sống ở runbook + §K, **KHÔNG** ở command-file — tức thứ anh gõ. Đã cắn THẬT 1 lần: reviewer S108 FAIL, MAJOR #3 *"clone-example thiếu `tier:'opus'` trái K.B/floor-2 khi Fable UP"* (`agent-memory/reviewer/archive/2026-07.md:13`) → fix landed ở **runbook**. `fable-clone.md` H21-redesign S110 (`debe82f`, mtime Jul 11 — SAU S108 Jul 10) không mang mandate sang. *(CHƯA VERIFY: file này từng có `tier:'opus'` trước S110 hay chưa — `git log -S"tier"` ra 2 commit nhưng giải-thích được bằng "tier-2"/"model-tier"/"frontier-class"; **hiện-trạng vắng = VERIFIED**.)*

## 2. Trả lời 6 câu

**(1) SE có phải ca "MỘT model duy-nhất" của §4?** **KHÔNG sạch.** SE = một-model-**tại-một-thời-điểm** nhưng **ĐỘNG** (per-session, owner-choice {Fable|Opus}, probe `session-start.md:37-45`). Khác-biệt quyết-định: hệ "một model" của §4 là **TĨNH** → alias-vs-phiên-bản vô-nghĩa vì không có tầng-2 để lệch. SE thì Class-B **có tier-2 thật** (`/fable-clone` pin Opus ⟂ lead Fable — §K.D:336 ghi "phân-tầng THẬT bén" từ S108). ⇒ §4 "(2)(3) rút gọn" **chỉ đúng Class A**; Class B thì (2) SỐNG.

**(2) Xem bảng §1.** Class A 1 site tốt (hmw.js), 4 site thiếu-nhưng-vô-hại. Class B 1 site thủng.

**(3) Ghi-chú-đầu-cây map ra sao?** SE **đã có 1 bản mẫu đúng chuẩn**: `hmw.js:32-42` — khối comment H8 đặt ngay trên `resolveModel`, phủ mọi lane, KHÔNG lặp inline. Đó chính là form §2(1) khuyên. Thiếu là **nhân-bản form đó** sang `agents/README.md:75` (đầu decision-tree) + `session-start/end`. Rẻ, 3 chỗ, không đụng frontmatter.

**(4) `inherit` nằm đâu trong mô-hình §2(2)?** **Không phải full-id, không phải alias — là INDIRECTION (con-trỏ).** Nó không khoá gì cả, uỷ-quyền 100% cho lead. ⇒ thẩm-quyền phiên-bản THẬT của SE = **`~/.claude/settings.json` `model: claude-fable-5[1m]`** (`agent-memory/tooling-auditor/MEMORY.md:19`, tự cảnh-báo *"đừng conflate 2 file settings"*) — **NGOÀI repo**, machine-wide, dùng chung AI_INFRA+VIETREPORT, **không git-tracked**. Project `.claude/settings.json` = 239B hooks.Stop only, **0 key `model`** (đã verify). ⇒ **SE thoả H23 mà VẪN giữ H8: CÓ** (xem PA-1).

🔴 **Nhưng 1 side-effect thật của H8 phải nói thẳng:** H8/S66 **xoá 7 pin full-id `claude-opus-4-8`** (`hmw.js:36` xác nhận *"KHÔNG còn demote-pin"*). Grep `.claude/**` = **0 full-id sống** (chỉ comment lịch-sử). Mà `tier:'opus'`/`tier:'fable'` (`resolveModel:44`) = **alias trần khoá HỌ, không khoá phiên-bản** — đúng y §2(2). ⇒ escape-hatch Class-B giờ **không còn neo phiên-bản nào trong repo**; Opus đời sau ra → `tier:'opus'` trôi, không ai bắt. Đây **không phải mâu-thuẫn** (H8 xoá pin-DEMOTE, đúng ý-đồ "chất-lượng trên chi-phí") mà là **hệ-quả kèm** — và là điểm DUY-NHẤT H8 phải trả giá dưới lăng-kính H23.

**(5) §6 phép thử-phá áp cho SE.** Hub bảo bỏ param mà không đổi ⇒ phòng-xa. **SE KHÔNG có pin tầng-2** ⇒ bỏ param **CÓ đổi** (inherit→lead). Theo chính lời hub: *"Nếu nó **đổi** → hệ bạn CHƯA pin đủ, và sàn này vừa cứu bạn một lỗi thật."* ⇒ **H23 với SE ≠ phòng-xa.** Chính-xác: **Class A runtime-value = 0** (inherit = intent, đổi theo lead là đúng); **Class B runtime-value = THẬT** (GAP #6 = lỗi sống, chờ Fable UP là kích). Nói "H23 vô-giá-trị vì SE all-inherit" = **kết-luận sai** do gộp 2 class.

**(6) §2(5) kỷ-luật động-từ.** ✅ **ĐÃ THOẢ — không cần làm gì.** SE gương-mẫu, grep 0 mis-nấc quanh model/tier: `engine:348` "KHÔNG code-enforced" · `engine:353` "mechanized = 0" · `engine:355` "scope-guard… = convention" · `fable-real.md:22` "KHÔNG claim code-enforced" · `README:173`+`database-agent.md:13,55`+`session-end.md:52` G-015 "TRACKED ≠ read-only-enforced".

**Bonus §2(3) kết-nạp 3-việc:** SE **có đủ 3 chỗ** (frontmatter / `hmw.js:22-30` VALID_ROLES / spawn-sites) và **đã chạy đúng** (office-document S107 9→10; 2 monitor S110 10→12 — `fable-clone.md:21`). Thiếu: **chưa viết thành checklist** → dựa trí-nhớ. Gap = quy-trình, không phải artifact.

## 3. 🔴 QUYỀN ANH — 3 phương-án

> **Khuyến-nghị lane này: đọc kỹ tiền-đề trước khi chọn.** Tiền-đề brief "H23 ⟂ H8 xung-đột" — lane này **BÁC**: không xung-đột. Nên 3 PA dưới là **mức-độ-adopt**, KHÔNG phải "có lật H8 không". **Không PA nào đụng H8.** Nếu anh muốn PA lật H8 thì phải là đề-bài khác.

| | **PA-1 — Tailor tối-thiểu** *(lane này nghiêng)* | **PA-2 — PA-1 + neo full-id** | **PA-3 — n-a toàn-bộ** |
|---|---|---|---|
| **Làm** | (a) Vá GAP #6: thêm `tier:'opus'` 🔴-BẮT-BUỘC-khi-Fable-UP vào `fable-clone.md` (trỏ `runbook:431`, KHÔNG lặp nội-dung). (b) Nhân form `hmw.js:32-42` → note-đầu-cây 3 chỗ: `README.md:75`, `session-start.md:96`, `session-end.md:49`. (c) Checklist kết-nạp-sub 3-việc vào `agents/README.md`. (d) §2(5) = n-a đã-thoả. | PA-1 **+** neo full-id cho `tier:'opus'` (hằng-số `hmw.js` HOẶC `memory-budget.json`) → alias có thẩm-quyền phiên-bản trong repo. | Ghi 1 dòng "n-a: all-inherit = một-model, §4 miễn (2)(3)" rồi đóng. |
| **Kéo theo** | Sửa **4 file .md, 0 frontmatter, 0 config, 0 số**. H8 nguyên-vẹn. Vá 1 lỗi-sống. **KHÔNG** dựng bộ-soát (§4 cho phép "n-a: chưa dựng"). | **Con-số/policy mới ⇒ quyền anh** (memory-fidelity: em KHÔNG tự đặt). Chặn alias-drift Opus-đời-sau. Chi-phí: +1 chỗ phải bảo-trì khi model đổi. | **GAP #6 Ở LẠI** → Fable UP là N×Fable, trái K.D floor-2 của chính SE. Phải khai "biết mà không sửa" ở adap-report — sẽ đụng nấc trung-thực §C5. |
| **Rủi-ro** | (b)/(c) là note thuần → gần 0. (a) đụng command-file → **restart CLI** (no hot-reload, `fable-clone.md:8`) | như PA-1 + risk pin lệch settings user-global | Cao — reviewer sẽ bắt lại như S108 |

**Lý-do nghiêng PA-1:** vá đúng chỗ thủng, không đẻ policy mới, không đòi anh quyết con-số. Nâng lên PA-2 **chỉ khi** anh muốn `tier:'opus'` có neo phiên-bản — đó là **quyết-định của anh**, không phải suy-luận của em.

## 4. Acceptance ĐO ĐƯỢC

1. `grep -n "tier:'opus'\|\"tier\": \"opus\"" .claude/commands/fable-clone.md` → **≥1 hit** (nay = **0**). ⚠️ Dùng **Grep tool**, không Bash-grep: pattern `\|`+quote cho **false-negative** — lane này dính, `tier:'opus'` toàn-repo ra rỗng dù runbook:431 có thật.
2. 3 note-đầu-cây tồn-tại **≤5 dòng trên** dòng spawn đầu-tiên: `README.md:~75` · `session-start.md:~96` · `session-end.md:~49`. Nội-dung phải nêu: "mọi spawn dưới = `model: inherit` (H8 S66) = top-tier lead per-session; giá-trị SỐNG → BƯỚC 0.6 probe".
3. Checklist kết-nạp-sub 3-việc (frontmatter `inherit` + `hmw.js` VALID_ROLES + spawn-site) hiện-diện `agents/README.md`; đối-chứng: roster 12 = VALID_ROLES 12 (`hmw.js:22-30`) = danh-sách 12 (`fable-clone.md:19` = `fable-real.md:20` = `engine:345`).
4. §2(5): re-grep enforce-verb quanh model/tier → **giữ 0 mis-nấc** (nay 0).
5. adap-report khai đúng nấc: **executed-file, VERIFIED-pending-restart** (command `.md` no hot-reload) + khai thẳng "**Class A runtime-delta = 0 · Class B = vá lỗi-sống**" — KHÔNG bán H23 thành "phòng-xa thuần" (sai với SE), cũng KHÔNG thổi thành "cứu hệ" (sai với Class A).

## 5. Phụ — 2 stale nhỏ bắt được dọc đường (ngoài scope, không chặn)

`runbook` trỏ `hmw.js:36,38`/`:37-44`/`:32` → thật `resolveModel` = **`:43-51`**, khối H8 = **`:32-42`**. `runbook:186` "§K:334"→thật **355** · `:188` "§K.D:332"→**336** · `:437/:438` "§K.C:329/330"→**331-334**. Class C2/B3 derived-stale (`scripts/governance-detectors.ps1`). Đáng nói vì **chính H23(1) "đọc-được-tại-chỗ"**: line-ref sai làm người soi lần fallback khó hơn — đúng bệnh H23 muốn chữa.