# sub-invest-fitmap-S180 — BẢN-ĐỒ ÁP-DỤNG gói nâng cấp 7 GĐ cho SOLUTION_ERP

> **Vai:** investigator-codebase (N1, `/fable-real`, Fable 5) · **Phiên:** S180 (2026-08-07)
> **Đầu vào đã ghim:** spec `spec-adap-upgrade-pack-phased-07-08-2026.md` + 4 thư `broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-*` (33.156 + 46.416 + 30.502 + 9.970 = 120.044 B — ĐÃ ĐỌC TRỌN cả 4, không đọc qua tóm tắt).
> **Trạng thái file:** GHI DẦN TRONG LÚC LÀM (chống #53). Mục nào chưa xong sẽ có nhãn `[ĐANG ĐO]`.
> **Ràng buộc thi hành:** `KHÔNG ĐO ĐƯỢC` là verdict hợp lệ · 0-hit kèm control-dương · 4 ô hub để chữ (TC-02/03/07/10) GIỮ NGUYÊN CHỮ · khoản vượt-khung đánh dấu `VƯỢT-KHUNG`.

---

## §0 — Hub đòi gì (tóm trung thực từ 4 thư gốc)

**Thư chính (33.156 B, sha khai `43db2cf0`):** 7 GĐ tuần tự có luật điều-kiện-vào (GĐ trước *đã thi công* HOẶC `không áp dụng` có khai) + luật nấc 5 bậc `đã gửi → đã nhận → đã đồng ý → đã thi công → đã được kiểm chứng` (nấc cuối CHỈ hub cấp) + luật bằng chứng (lệnh chạy được; không dịch được ⇒ `KHÔNG ĐO ĐƯỢC`). Bảng bệnh 12 TC là **hợp đồng nghiệm thu**: GĐ nào không trỏ về ≥1 TC là đồ chơi. 4 ô cố ý để chữ: TC-02 *chưa có dụng cụ* · TC-03 *chưa đủ mẫu* · TC-07 *chưa có dụng cụ* · TC-10 *KHÔNG ĐO ĐƯỢC*. GĐ-4 kéo sớm được (độc lập GĐ-2/3/5); GĐ-5 phụ thuộc môi trường (`không áp dụng` nếu không có hạn mức ≠ tụt lại). Sàn chức năng bắt buộc nếu adopt = đoạn in đậm món 2 + 6 luật rút ra; hình thức tự do, CẤM chép hình thức hub. Track table 6 kho; se thuộc nhóm hub hỏi tiến độ mỗi phiên.

**Phụ lục spec-pitfall (46.416 B, sha khai `49287ce7`):** 9 lớp lỗi xuyên suốt (LỚP-1..9) + per-GĐ {sàn chức năng · bẫy đã giẫm · nghiệm thu}. Điểm đáng chú ý: hub tự khai KHÔNG neo commit-hash vì toàn bộ hash trích dẫn xuyên đợt đã rời nhánh sau history-rewrite → neo bằng tên vật chứng + lệnh tái lập.

**Khuôn (30.502 B, sha khai `98e31fad`):** Phần A fit-map 7 dòng (điền GĐ-0, mỗi dòng `áp dụng`/`không áp dụng`+lý-do/`hoãn`+điều-kiện-gỡ; lệnh tự kiểm `grep -c '^| GĐ-[0-6]'` = 7 — chạy trên tệp bản đồ, KHÔNG chạy trên tệp khuôn vì khuôn chứa bảng 7 dòng thứ hai → ra 14). Phần B khuôn báo cáo 10 mục (tối thiểu bắt buộc: bằng-chứng-đã-ghi-đĩa + kết-luận-mọi-khoản + bằng-chứng-chạy-được + nấc-tự-khai-đúng-luật ≤ *đã thi công*, khai theo TỪNG GĐ). Phần C danh mục kiểm v1: A0-1..A0-4 (ghi đĩa ngay) + A1..A10 (sàn chức năng, chủ yếu GĐ-4) + A11..A16 (chống adapt-thiếu; A16 MỚI: khai máy-hay-tay).

**Luật chấm điểm (9.970 B, sha khai `c24699f0`):** ĐÃ KÝ 04-08-2026, mã dấu `RC-pqhuy1987-04-08-2026-15-05-00` (xuất hiện đúng 1 lần trong bộ). Công thức `điểm = max(0, 10 − số MỤC bị lặp từ lần ≥2)` — trừ theo MỤC không theo lần, lần đầu không trừ. 4 tầng (điều phối tự chấm → vai đọc sổ đếm độc lập → vai 3 kiểm PHÉP ĐẾM cấm chấm lại → chủ dự án quyết cuối). Niêm phong im-lặng cần 3 mốc `emit_ts`/`redisplay_ts`/`first_owner_msg_ts`; thiếu mốc 3 = *chờ niêm phong*. Nguồn đếm = SỔ là chính, transcript là gương; **chưa có số phủ sóng thì in "KHÔNG ĐO ĐƯỢC", CẤM in điểm**. Đo TRẢI NGHIỆM chủ dự án, cấm trộn với phép đo kỹ thuật. Kho adopt GĐ-4 áp thẳng không cần hub ký lại; hình thức đổi được, công thức + 3 mốc + ranh giới tầng thì KHÔNG.

**Nguồn-thật đối chiếu:** bản đang nằm ở `broadcasts/inbox/ai_infra/` có frontmatter `status: DRAFT` + `reviewer_gate: PENDING` + `nac: draft` — xem phát hiện F-1 bên dưới (§4).

---

## §1 — TRỤC 1: 7 GĐ × trạng-thái SE thật

### GĐ-0 — Tiếp nhận và bản đồ áp dụng

**Hub đòi:** 4 món trên đĩa + hash khớp · tệp theo dõi tiến độ per-khoản · dòng "đã nhận" trong sổ liên lạc · fit-map 7 dòng không dòng trống · gửi báo cáo tiếp nhận (ghi kho mình).

**SE đã có:**
- 4 món ĐÃ trên đĩa: `broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-*.md` (ls xác nhận 33.156/46.416/30.502/9.970 B — khớp byte hub khai).
- Hash verify 4/4 **OK canonical** bằng máy có sẵn `scripts/stamp_verify.py` (exit=0; canonical = strip `\r` → split 2nd `---` → strip 1 leading `\n` → sha256 utf-8). Lệnh tái lập: `python scripts/stamp_verify.py broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-*.md`.
  - ⚠️ Ghi nghề: phép tự chế (split `'---\n'` naive) cho MISMATCH cả 4 — nếu tin phép tự chế đã kết luận sai "tamper". Máy canonical mesh ĐÃ có thì dùng máy (đúng bài feedback_h18 hash-verify-trước-khi-áp).
- Sổ liên lạc TỒN TẠI: `broadcasts/_index.md` (append-only, cột `sha256(12)` + `verify` ✓/✗, INBOUND/OUTBOUND) — hạ tầng A0-3 có sẵn.
- Kênh báo cáo TỒN TẠI: `broadcasts/outbox/ai_infra/` (15+ báo cáo se→hub, gần nhất 2026-07-26) + khuôn `/adap-report` (`.claude/commands/adap-report.md`) + kho `docs/governance/adap-reports/`.
- Run-folder S180 này + spec-pin = phôi "tệp theo dõi tiến độ".

**SE thiếu (đo được):**
- 🔴 Dòng "đã nhận" cho bộ 4 món: `grep -n "upgrade-pack-phased" broadcasts/_index.md` = **0 hit** (control-dương: `grep -c "harness-22"` = 3 → thước sống). ⇒ A0-3 CHƯA LÀM dù thư đã nằm inbox 2 ngày (mtime 08-05).
- Fit-map 7 dòng: chưa tồn tại (file này = nguyên liệu để lead dựng; §5 dưới có bản đề xuất).
- Tệp theo dõi tiến độ liệt từng khoản A0-1..A16: chưa có.
- Adap-report tiếp nhận: chưa gửi (spec xác nhận "CHƯA ÁP — 0 adap-report").

**Xung đột:** không.
**Điều kiện vào:** thoả (bộ đã nằm hộp thư chung). **Nấc hiện tại: giữa "đã nhận" (vật lý trên đĩa) và "đã nhận" (đúng luật — thiếu dòng sổ)**. Việc còn lại của GĐ-0 ước < 1 giờ máy: 1 dòng sổ + fit-map + tệp theo dõi + report.

---

### GĐ-1 — Nền chuẩn đặt tên, áp về phía trước

**Hub đòi:** 1 văn bản chuẩn duy nhất phủ 6 nhóm tên + luật lane đơn trị · 1 vai giữ chuẩn quyền hẹp 2 lớp · sổ đổi tên chỉ-thêm-không-xoá có cột "đã quét những đâu" (lệnh + số hit thật) · máy soi tên ở cổng, báo-cáo-thôi trước, in mẫu số · đối chứng 2 chiều + phản chứng · luật giữ-nguyên-tên-cũ + di trú 6 bước.

**SE đã có (mảnh, đo được):**
- Máy quét governance-MD: `scripts/governance-detectors.ps1` (1.964 dòng, 17 lưới: C1..C12 + H24-1..5 + H25×2 — liệt kê bằng `grep -n "Write-Section" scripts/governance-detectors.ps1` = 20 hit gồm helper). Trong đó **C3 vocab-fork** = soi 1-khái-niệm-nhiều-tên.
- **Tách "con số lái mã thoát" vs "con số báo-cáo-thôi"** — đúng nguyên văn GĐ-1(v) hub: `Write-InformFlag` counted SEPARATELY, "NEVER folded into $script:FlagCount" (`governance-detectors.ps1:65-72`, anti-Goodhart owner-set); output 2 dòng `TOTAL FLAGS` ⟂ `INFORM-ONLY` (`:1941+`).
- Sổ họ-hàng-gần: `docs/governance/vocab-alias-map.md` — **append-only, single-writer em-main, có cột lý-do-đổi, khai frozen-set** (sessions/ archive/ runs/ broadcasts/ không viết lại — "giữ nguyên tên cũ" chính là luật này áp cho THUẬT NGỮ).
- Quy ước tên đang SỐNG rải rác: run-folder `YYYY-MM-DD-S<N>-<topic>` (90 folder tuân thủ — `ls .claude/workflows/runs/ | wc -l` = 90) · sub-file regex máy đọc `^(sub-.+|.+-return)\.md$` (`governance-detectors.ps1` C11 body — regex này là BẢN VÁ S159 sau ca tên lọt lưới S153) · roster INFORM-only đọc SỐNG từ agent frontmatter, không hardcode (C11 body — "a NEW monitor auto-joins").
- Bài học chống-hardcode-số đã thành văn trong máy: `hmw.js:9` + comment `:57` *"KHÔNG chép số — lesson S108, tái @S151: '17/17' viết cứng đã stale khi roster lên 20"*.
- Form-check vai: `scripts/agent-frontmatter-eol-check.ps1` (tồn tại, `ls scripts/`).

**SE thiếu:** (1) **VĂN BẢN CHUẨN DUY NHẤT** phủ 6 nhóm (tên vai · nhãn lớp kiểm · thư mục run · tệp mốc phiên · nhãn tác vụ · tên sổ) — hiện tán xạ trong personas/commands/engine-doc; (2) **vai giữ chuẩn** — không tồn tại; (3) **sổ đổi tên cho TÊN-MÁY-ĐỌC** (vocab-alias-map chỉ cho thuật ngữ, KHÔNG có cột "đã quét những đâu" dạng lệnh+hit); (4) **máy soi TÊN chuyên trách** — C3/C11 soi vocab + khuôn FLAG, không soi 6 nhóm tên; (5) di trú 6 bước thành văn.
**Ca bệnh TC-11 thật của SE:** tên `sub-ctx-audit-*` lọt lưới C11(b) vì filter cũ `^sub-<role>[-.]` (S153, đã vá S159 — vết trong chính detector body: *"mirror of the C11(b) filter fix — ctx-audit FLAG-6"*); marker `_tiep-1.md` ghi sha 7-ký-tự khi 7 marker khác ghi 40 (S158, form-drift cùng loại marker).
**Xung đột:** không — chỉ thiếu.
**Điều kiện vào:** GĐ-0 thi công — CHƯA (đang làm). **SE KHÔNG khai `không áp dụng` GĐ-1 được một cách thật thà** (chưa có chuẩn-duy-nhất tương đương kiểm được) ⇒ GĐ-1 là chốt mở khoá các GĐ sau.

---

### GĐ-2 — Lưới ghi đĩa và sổ mục lục vật chứng

**Hub đòi:** lane ghi nguyên văn mọi cửa phản biện · vai điểm danh cấm-sửa · máy điểm danh 4 vị từ (vắng/rỗng/cụt/nén-quá-tay) + vị từ bộ-tệp-nội-bộ-thư-mục · 3 nhịp (đầu phiên/sau-lượt-đắt/cuối phiên) · sổ mục lục 2 tầng trần-đo-bằng-lệnh trỏ-không-chép · điểm danh 2 nguồn ghi chênh lệch.

**SE đã có:**
- **Lane ghi nguyên văn:** run-folder TRACKED FLAT `run.md + sub-<role>-<i>.md + <stage>-synthesis.md` (`hmw.js:9` mode B, Harness-10) — 90 folder; spec-pin trước spawn (H21); chính file này là instance sống.
- **Máy đếm mồ-côi:** `scripts/nhip-no-probe.ps1` vế `run-chua-gom` — orphan run-folder theo DUAL-ACCEPT port nguyên văn `tiep.md:40-53` (header script tự khai). Vị từ "vắng synthesis" = có.
- **Gate con trỏ mục lục:** `scripts/memory-archive-gate.ps1` A7 L1-GATE — mọi substring-pointer trong `<sub>/archive/_INDEX.md` phải resolve (SimpleMatch) + file exists + **size>0** → PASS/FAIL. = vị từ VẮNG + RỖNG + MỤC-NÁT cho tầng agent-memory.
- **Sổ mục lục 2 tầng cho agent-memory:** MEMORY.md (L1 HOT) + `archive/_INDEX.md` (sha-keyed substring) per-role; **trần sống ở config**: `memory-budget.json` key `archive_gate.autoinject_cap_bytes` — script ĐỌC khoá, thiếu key in `CONFIG-THIEU(...)` KHÔNG default (`nhip-no-probe.ps1` header contract (4)); `session_ctx.py` `_require_budget_kb` cùng triết lý. = đúng "trần ở tệp cấu hình chung, tài liệu trỏ khoá".
- **3 nhịp:** đầu phiên (bookend @open + Sàn-3) · cuối phiên (khối instruments `session-end.md:164`: measure-agent-memory + memory-archive-gate + crystallized-backfill + nhip-no-probe + mfe-eval AUTO mỗi closeout) · **sau-lượt-đắt: một phần** — harvest per-turn primary (`hmw.js:9` C4) nhưng không có máy điểm danh BẮT BUỘC ngay-sau-mỗi-lượt-đắt.
- **Vai quan sát cấm-sửa:** cặp obs `{harvest-curator, tooling-auditor}` chạy VÔ-ĐIỀU-KIỆN @session-end (`closeout-sentinel.ps1` header default -Roles); INFORM-only; ràng "cấm sửa" cưỡng chế bằng **git-diff commit-gate backstop** (error-ledger AS-10/G-015 — propose-only sub vẫn Bash-write được, backstop THẬT là diff-gate).
- **Secrets-sweep phủ trọn session-dir:** `session_ctx.py::secrets_sweep` rglob (S153: `_mind` tự vào lưới) — "đích ghi nằm trong vùng có quét bí mật" ✓ cho sessions/.
- **Bằng chứng lưới hoạt động thật @S180:** WAL verify-block — "#53: 6/6 vai nặng dính, recover 6/6 **mất 0 byte**" nhờ artifact-đổ-ruột.

**SE thiếu:** (1) máy điểm danh **4-vị-từ hợp nhất trên run-folder** — vị từ CỤT (thiếu đầu/thân) và NÉN-QUÁ-TAY (so ký tự cùng đơn vị) chưa có máy; AS-17 skeleton-ruột-rỗng + AS-19 nén-rơi-ý đều đang là **nghi-thức, error-ledger tự khai "chưa cơ-khí-hoá"**; (2) **mục lục SỐNG cho runs/** — `ls .claude/workflows/runs/ | grep -i index` = 0 hit (control-dương: cùng lệnh ls đếm được 90 folder) — tầng-A "gói theo loại" có trong hmw.js/tiep.md prose, tầng-B mục-lục-sống KHÔNG có (nhip-no đếm tổng, không liệt kê); (3) **điểm danh 2 nguồn** (đĩa ⟂ mục lục, ghi chênh) — chưa có vì chưa có mục lục; (4) khuôn-tối-thiểu tệp nguyên văn (tiêu đề + model tự khai + input ghim + kết luận) chưa thành văn bắt buộc — mới có END-line (AS-20 guard `END <slug> — VERDICT=`).
**Điều kiện vào:** GĐ-1 thi công hoặc miễn — CHƯA THOẢ (GĐ-1 chưa).

---

### GĐ-3 — Nghi thức hai đầu phiên và cổng chặn bằng mã lỗi

**Hub đòi:** 4 nhãn lệch nghi thức (quên/tự-ý-bỏ/suy-giảm-hợp-lệ/bị-chặn) kèm vị từ đĩa · vai kiểm chỉ-đối-chiếu · vòng hỏi ngược đóng-khi-0-dòng-trống · cổng mã lỗi thang 4 trạng thái · tiền kiểm chi-phí-0 đầu MỌI cửa chọn cửa bằng ts-TRONG-tệp · vai kiểm 2 đầu phiên · luật tự trị 3 bậc · trần chi phí cửa hay dùng.

**SE đã có:**
- **Vai kiểm 2 đầu phiên — ĐÚNG NGUYÊN VĂN:** cặp `lead-stale-auditor` + `lead-gap-auditor` spawn **VÔ-ĐIỀU-KIỆN mỗi đầu phiên** (`session-start.md:269`) **và MỌI closeout** (`session-end.md:119`), HÌNH B @S149. `ring2-audit` AUTO sau cặp, PIN đích-danh run-folder tươi (cấm glob-latest).
- **Đèn nợ 4 cửa dừng:** `nhip-no-probe.ps1` gọi tại `session-start.md:269` · `session-end.md:118` · `tiep.md:154` · `pause.md:113` — cả 4 chỗ in "probe KHÔNG chặn"; vế-set canonical = chính script (`session-end.md:207`, gate đo nguyên văn dòng in — chống stale).
- **Tiền kiểm chi-phí-0 khi nối mạch:** Sàn-3 probe @/tiep (WAL S180 dòng đầu: "Sàn-3 SẠCH 5/5") + `mind-check` ~140-300ms không chặn (`tiep.md:169`) + **anchor bằng carrier-commit `git log --diff-filter=A -1 -- <marker>`** (S158 — chính là "ts ghi TRONG tệp/lịch sử, KHÔNG tin mtime OS"; 8/8 resolve, sống-sau-squash by construction).
- **Máy FAIL-LOUD exit≠0 (có răng thật, chọn lọc):** `session-counter-tick.ps1` — regression/missing-head ⇒ exit≠0 no-write, fault-inject 5/5 @S149 (`session-start.md:246`); `h24-signal-write.ps1` — class ngoài enum-đóng ⇒ exit≠0 (header (1)).
- **Cửa-sau cho cửa-chết-sớm (lưới lùi):** `closeout-sentinel.ps1` M5 — FLAG "audit đo rồi như chưa đo" nếu closeout thiếu delta role-dir; positive-control 5/5 lịch sử (`session-end.md:125`).
- **Theo dõi tái phạm:** error-ledger **2-strike promote** (header) — AS-17 đã dùng thật (S150+S151 = 2-strike).
- **Luật tự trị (dạng SE):** hạ tầng ACTIVE-MARKS — `.claude/governance/ACTIVE-MARKS.md` + 4 lệnh `/user-mark-{active,active-high,medium,disable}` (`ls .claude/commands/`) = posture tự-trị owner-gán có mã dấu RC. **CHƯA ĐO** nội dung có đủ "3 bậc" (rõ→tự vá · mơ hồ→nhánh an toàn · hỏi khi mơ-hồ+phá-huỷ) — cần `grep -n "bậc\|tự vá\|an toàn" .claude/governance/ACTIVE-MARKS.md`.
- Nhãn "suy-giảm-hợp-lệ" đã có VĂN HOÁ dùng: nhip-no "probe-loi (khong chan)" · C12 note "MEASURED NOTHING... a 0 outside the window is not a green" · WAL ERRATA-block @S180 (3 ERRATA lead tự khai).

**SE thiếu / XUNG ĐỘT:**
- 🔴 **XUNG ĐỘT TRIẾT LÝ (lớn nhất cả gói):** hub GĐ-3 = "cổng CHẶN bằng mã lỗi, thang 4 trạng thái (trọn/thiếu-có-tên/không-xác-định/xung-đột)" — thuốc căn cơ cho TỰ-Ý. SE doctrine ngược: `governance-detectors.ps1` "**Exit 0 always (never fails build). FLAGs are advisory**" (`:1963`) + `closeout-sentinel` "exit ALWAYS 0, READ verdict-line" + probe-không-chặn 4 cửa. SE chặn-trước chỉ ở 2 máy (tick, signal-write) + hmw checkpoint throw (`hmw.js:131-132`); còn nghi-thức = lưới-sau + người. Hub tự nói sàn chức năng chỉ nâng không hạ ⇒ chuyển detectors/sentinel sang lái-mã-thoát = **ĐỔI CƠ CHẾ → VƯỢT-KHUNG, cần anh + AI_INFRA**. Ghi cả 2 bên: hub có lý ("cửa có cổng trả mã lỗi thì không bỏ qua được"); SE có lý (đèn không chặn điểm dừng — người vắng vẫn thoát được phiên an toàn, đúng TC-07 của chính hub).
- 4 nhãn CHƯA thành văn như enum (SE có AS-signature taxonomy 20 mã — GIÀU HƠN nhưng KHÁC TRỤC: action-signature ≠ nhãn-ý-định; map được quên/tự-ý qua E-011/AS-15).
- Vòng hỏi ngược 5-cột đóng-khi-0-trống: chưa có khuôn; gần nhất = bảng disposition từng-dòng (feedback S119) + FLAG-khuôn C11.
- Thang exit 4 trạng thái: không tồn tại ở bất kỳ máy nào.
- Tiền kiểm "đầu MỌI cửa": mới chắc ở /tiep + session-start; `/check-email`, `/adap-*`: **CHƯA ĐO** — cần `grep -n "probe\|Sàn-3\|san-3" .claude/commands/check-email.md .claude/commands/adap-apply.md`.
- Trần chi phí cửa-hay-dùng: KHÔNG CÓ dụng cụ đo per-cửa (khớp TC-10 hub) — SE doctrine "đo BYTE, CẤM quy token" (S158). Khai `KHÔNG ĐO ĐƯỢC` + nếu adopt thì trần = hướng-dẫn + nghĩa-vụ-khai (đúng chữ hub).
**Điều kiện vào:** GĐ-1 thi công/miễn — CHƯA.

---

### GĐ-4 — Sổ yêu cầu chủ dự án và cơ chế chấm điểm (kéo sớm được)

**Hub đòi:** sổ 3 khối (việc-giao/sở-thích/phàn-nàn) lời NGUYÊN VĂN + mã vĩnh viễn cấm tái dụng · 2 mục mồi (làm-thẳng + lằn-ranh-đỏ liệt kê; tự-trị-khi-vắng) · ghi-NGAY cắm vào tệp-luôn-nạp · tra-sổ-trước-khi-hỏi 2 chỗ · máy dò 0-phí phân biệt "chưa-có-dữ-liệu"⟂"đo-và-bằng-0" · đèn nợ mọi cửa dừng số-dán-nguyên-văn · vai đọc sổ 4 thấu kính + vai soi vai · thu hẹp vai cũ cùng lượt · luật chấm điểm đã ký (công thức max(0,10−mục-lặp≥2) · 4 tầng · 3 mốc niêm phong · thiếu phủ-sóng ⇒ in KHÔNG ĐO ĐƯỢC cấm in điểm).

**SE đã có (mảnh — nhưng đây là GĐ SE HỔNG NHIỀU NHẤT):**
- Khung "đèn nợ + máy dò 0-phí" ĐÃ CÓ SẴN và đúng chuẩn hub từng chi tiết: nhip-no-probe = read-only, exit-0, luôn-in, lỗi in "dò lỗi không chặn", đọc config không default — **chỉ THIẾU 2 vế dữ liệu** (đang-treo, nhắc-lần-≥2) vì **không có sổ nguồn**.
- Ý thức "chưa-có-dữ-liệu ≠ 0": đã cài ở 2 máy (`nhip-no` CONFIG-THIEU in-line; C12 "MEASURED NOTHING" note). Khuôn để mở rộng có sẵn.
- Tệp-luôn-nạp tồn tại đúng nghĩa: CLAUDE.md + auto-memory MEMORY.md (auto-inject mỗi lượt) — chỗ cắm kỷ-luật-ghi-NGAY hợp lệ; kỷ luật ghi-ngay hiện có cho MEMORY ("user explicitly asks... save immediately") nhưng KHÔNG có sổ-yêu-cầu làm đích.
- Mảnh dữ liệu rải: việc-được-giao → WAL chain + HANDOFF + `docs/changelog/migration-todos.md`; sở-thích → 61 file auto-memory (`ls .claude/auto-memory/*.md | wc -l` = 61; **đề bài lead ghi 60 — số thật 61**, lệnh kèm) có Why/How-to-apply nhưng KHÔNG nguyên-văn, KHÔNG mã-vĩnh-viễn, KHÔNG đếm-lần-nhắc; **lời-phàn-nàn: 0 chỗ chứa** — `grep -rln "sở-thích\|phàn nàn" .claude/commands/ docs/governance/*.md` = **0 hit** (control-dương: "điểm dừng" cùng fileset = 3 file).
- 2 mục mồi: nguyên liệu CÓ SẴN — ACTIVE-MARKS (tự-trị-khi-vắng, RC-mark owner-ký) + các lằn-ranh-đỏ ĐÃ RẢI trong feedback memories (đổi cơ chế=anh · số nhịp=quyền anh · prod inspect-before-change · wipe owner-gated · outward report-before-stamp · "máy rộng UI hẹp" 409-rào) — **chưa LIỆT KÊ 1 chỗ** đúng A6 (hub: cấm mô tả bằng tính từ).
- Bảo vệ tập-tín-hiệu-đóng (A10): **CÓ MÁY THẬT** — `h24-signal-write.ps1` từ chối class ngoài enum (exit≠0, "a monitor may NOT invent a class") + dải `_frozen_until_owner` máy không được reset (nợ của owner). Phép thử A10 "đẩy nhãn lạ máy phải từ chối" = CHẠY ĐƯỢC HÔM NAY.
- Trần ký tự cột nguyên văn: khuôn có sẵn (memory-budget.json pattern + "Keep entry ≤1.5K chars" gotcha #53).
- **Chấm điểm: 0 tồn tại** — `grep -rn "chấm điểm" .claude/commands/*.md` = 0 hit thật (1 hit `rerank_score` khác nghĩa; control-dương cùng fileset "điểm dừng" = 3 file). Không tầng, không niêm phong, không khối in 2 cửa. SE thậm chí không có nghi thức cũ "hỏi anh chấm điểm" ⇒ TC-12 ở SE = **vắng cơ chế hoàn toàn** (nặng hơn hub: hub treo, SE chưa từng sinh điểm).

**SE thiếu:** trọn sổ 3 khối + mã vĩnh viễn + máy dò 2 số + 2 vế đèn mở rộng + vai đọc sổ + định nghĩa A5 hỏi-lại-không-thông-tin-mới (hiện chỉ có họ hàng: luật-4 hub ↔ SE "hỏi lại phải trả phí viện dẫn" CHƯA thành văn — CHƯA ĐO: cần grep "viện dẫn" auto-memory) + toàn bộ luật chấm điểm.
**Xung đột/VƯỢT-KHUNG:** (a) luật chấm điểm hub bảo "áp thẳng không cần ký lại" — NHƯNG thi hành = sửa `session-start.md`+`session-end.md` (in khối 2 cửa) + đẻ/gán 2 vai tầng-2/3 + "thu hẹp vai cũ cùng lượt" (lead-gap-auditor đang soi phần yêu-cầu-chủ? — chồng lấn phải chuyển giao có khai) ⇒ theo nguyên tắc SE (đổi nghi-thức 2 cửa + roster = quyền anh) đây là **VƯỢT-KHUNG cục bộ: cần anh gật trước khi wire**, dù nội dung luật không cần hub ký lại. (b) Sổ 3 khối đặt ở "lane quản trị" = artifact mới cạnh WAL/HANDOFF — nguy cơ nguồn-đôi với WAL chain (SE luật "checklist = VIEW derive, CẤM file nguồn-đôi" `tiep.md:181`) ⇒ thiết kế phải chọn: sổ = NGUỒN cho yêu-cầu-anh, WAL = mạch việc; ranh giới cần vẽ rõ kẻo giẫm sàn-3.
**Điều kiện vào:** chỉ cần GĐ-1 (độc lập GĐ-2/3/5, hub cho kéo sớm) — TC-01/TC-12 của SE đau thật ⇒ ưu tiên cao.

---

### GĐ-5 — Cửa gọi mô hình đắt tiền

**Hub đòi:** mọi cửa đắt do chủ gõ + tham số model tường minh · điều phối chỉ đóng-gói cấm diễn-giải-lại · cửa biên dịch ý định chỉ-ra-bản-nháp · gói ngữ cảnh 5 mảnh khai-chưa-có · sổ lượt-đắt khung-nhìn ghi-ngay-lúc-dựng-thư-mục · vai mới vào danh sách hợp lệ trước · vật chứng CHUNG GỐC.

**SE đã có (GĐ GẦN XONG NHẤT — phần lớn tương đương hoặc mạnh hơn):**
- **Cửa chỉ-anh-gõ:** H21 per-invocation — `/fable-real`·`/fable-clone` chỉ sống trong lượt anh gõ, không persist (`.claude/commands/fable-{real,clone}.md` tồn tại; `fable-real-runbook.md` §2.1-bis INVOCATION; CLAUDE.md khối operating-posture: "per-invocation, KHÔNG persist (H21)").
- **Tham số model tường minh + audit:** worker-tier-pin 14/14 opus+max (S124, frontmatter) · `TIER2_EXPECTED_FULL_ID` single-source (`hmw.js:73`) · `scripts/spawn-model-audit.ps1` PA-2b resolved-vs-expected (INFORMATIONAL, header tự khai) · **đo thật S126: 0-mismatch, control no-tier→opus dù lead=Fable** (`session-start.md:51`).
- **Spec-file 3-mục** (engine propose → lead verify+ghi → worker theo spec, H21) = họ hàng "cửa biên dịch ý định"; spec S180 này là instance (4 khối: đề-bài/cách-làm/checklist/bất-biến — đủ mục-tiêu/phạm-vi/acceptance/điều-cấm).
- **Vật chứng CHUNG GỐC — ĐÚNG NGUYÊN VĂN:** fable-run và HMW-run cùng đổ `.claude/workflows/runs/` (run-folder này = fable-real, nằm cạnh 89 folder khác); sổ riêng không tồn tại nên không có "đường dẫn thứ hai".
- **Gói ngữ cảnh chuẩn hoá:** `tiep_reload` nạp NỀN theo khoá `memory-budget.json` (B1 cấm chép danh sách tệp — `tiep.md:183`) + lớp mềm `_mind` + WAL-reconciled + `ctx-verifier` trả BẢN NẠP-LẠI ≤15 dòng + **LEAD-PHAI-NHAC-LAI chi-tiết-chỉ-biết-nếu-đã-đọc** ("đã nạp suông KHÔNG tính, metadata ts/hash KHÔNG tính") — mạnh hơn khai-chưa-có của hub ở vế chống-nạp-giả.
- **Ghi-ngay-lúc-dựng:** mode-B em-main scaffold run-folder @P1 TRƯỚC fan-out (`hmw.js:9`); spec-pin trước spawn.
- Recovery lượt-chết: R5 3-nấc + dòng-sống-kể-cả-chết-giữa-chừng đã chứng minh @S180 (7 vai #53, 0 byte mất).

**SE thiếu / làm KHÁC (khai mục-6 khuôn báo cáo, không phải xin lỗi):**
- **Sổ lượt-chạy-đắt dạng KHUNG NHÌN: KHÔNG CÓ** — dữ liệu phân tán (WAL chain ghi verdict + engine-stamp `[engine: …]` trong diary từng vai + run-folders). 1 view {thời điểm · loại · đề bài · con trỏ · kết luận} chưa tồn tại. Chi phí dựng thấp (grep-derive từ runs/ + stamps).
- **Cửa duyệt chủ-dự-án giữa spec-nháp và thi công:** SE KHÁC HÌNH — anh duyệt Ở ĐẦU (gõ lệnh + vai + đề bài), spec do LEAD verify rồi worker chạy luôn trong CÙNG invocation; hub muốn spec-nháp quay lại chủ duyệt rồi mới thi công. Với văn hoá SE (anh gõ = đã trao), giữ cách SE là hợp lệ theo "sàn chỉ nâng"; ghi làm-khác + lý do.
- "Điều phối cấm diễn-giải-lại lời chủ": SE chưa có luật thành văn + chưa có rào-nguyên-văn; 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.
- Bẫy-3 hub (đăng ký vai TRƯỚC khi dùng): SE có bài học cùng họ (E-009 custom-workflow không kế thừa guard; "17/17" stale) — **CHƯA ĐO** có ca "vai mới thiếu đăng ký nuốt ký ức" đúng nghĩa: cần grep error-ledger "roster\|đăng ký".
**Điều kiện vào:** GĐ-1+GĐ-2 thi công/miễn + CÓ hạn mức — hạn mức CÓ THẬT (phiên này chạy Fable). Không rơi vào nhánh `không áp dụng`.

---

### GĐ-6 — Niêm phong đồng bộ và bảng gốc

**Hub đòi:** cổng đồng bộ 4 tầng dán kết quả · trace ngược phạm-vi-tự-phình · cổng điểm danh số-kỳ-vọng-suy-từ-danh-sách + mutation-test · điều-kiện-vào-danh-sách trọn-gói-1-commit · đối chứng tên 2 chiều lần cuối · bảng gốc 12-TC mỗi-ô-số-kèm-lệnh · bản nháp dấu chờ-ký mã-dấu-trống · quét đồng bộ tài liệu tick-từng-cái · báo cáo cuối.

**SE đã có:**
- Họ hàng cổng-4-tầng: drift-audit tháng (CLAUDE.md:121 — vừa chạy S179, verdict `tooling-auditor = PASS_WITH_FLAGS — 8`) + C2/B3 derived-staleness vs STATUS canonical + ring1/ring2 đối kháng (WAL S180: ring1 32Đ/6T · ring2 21Đ/0T) — nhưng đó là DOC-drift + lead-claim audit, **chưa phải trace ý-tưởng→spec→việc-thật 4 tầng**.
- Số-kỳ-vọng-suy-từ-danh-sách: pattern ĐÃ CÓ ở C11 (informRoles live-read) + hmw.js roster (không chép số); **mutation-test cho cổng roster: KHÔNG CÓ**.
- Bản-nháp-dấu chờ ký: **cơ chế RC-mark ĐÃ CÓ VÀ ĐANG DÙNG** — `ACTIVE-MARKS.md` chứa mã dấu dạng `RC-pqhuy1987-<ts>` do anh cấp (fable-real-runbook.md trích RC-mark thật; luật hub món-4 cũng dùng đúng format RC này ⇒ cùng chuẩn mesh).
- Quét đồng bộ tài liệu: khuôn tick-list có trong nghi thức drift-audit (rules.md §6.4/§9.4 — dẫn theo CLAUDE.md:121).
- Khai máy-hay-tay (A16): VĂN HOÁ có (AS-19 tự khai "nghi-thức, chưa cơ-khí-hoá"; drift-audit khai "em-main chạy thủ-công"; LỚP-9-fix S100 gỡ cron-claim ghost) — **BẢNG A16 hợp nhất chưa có**.
**SE thiếu:** cổng đồng bộ 4 tầng + trace ngược tự-phình + mutation-test + bảng gốc 12-TC (chưa tồn tại — §2 file này là phôi) + báo cáo cuối.
**Điều kiện vào:** MỌI GĐ trong phạm-vi-áp-dụng đã thi công — XA NHẤT, đúng thiết kế. Không làm gì ở đây trước khi các GĐ trước xong.

---

## §2 — TRỤC 2: 12 TC × bệnh SE

> 4 ô hub để CHỮ (TC-02·03·07·10) — GIỮ NGUYÊN CHỮ, chỉ thêm bằng chứng định tính phía SE, KHÔNG điền số.

| TC | SE có bệnh? | Bằng chứng đo được trên kho SE (lệnh/đường dẫn) |
|---|---|---|
| **TC-01** nhắc nhiều lần mới làm | **CÓ (định tính; SỐ: KHÔNG ĐO ĐƯỢC — chưa có sổ đếm lần-nhắc, đúng cái GĐ-4 dựng)** | Ca thật: mất-uỷ-quyền-owner phải hỏi lại 3 lượt (`auto-memory/feedback_absence_looks_like_clean.md` — "slot-index tái-dụng xoá IM-LẶNG... hỏi lại 3 lượt"); owner S165 phải ra luật `/pause` liệt từng đầu việc vì việc rơi (`feedback_pause_track_plan_progress.md`) |
| **TC-02** cho làm thẳng vẫn hỏi | **GIỮ CHỮ HUB: *chưa có dụng cụ*.** SE cũng 0 phép đếm. Định tính: SE ĐÃ có cơ chế mark-làm-thẳng (ACTIVE-MARKS + `/user-mark-active*` 4 lệnh, `ls .claude/commands/`) + luật derived-flush-không-gate (`feedback_derived_flush_execution.md`) ⇒ thuốc-phân-biệt-2-loại có mầm, phép đếm hỏi-lại chưa có |
| **TC-03** model mạnh hiểu đúng hơn | **GIỮ CHỮ HUB: *chưa đủ mẫu*.** Định tính SE cùng chiều: `feedback_high_to_max_multiagent_quality.md` (Max ↑ cross-stack); S171 "đầy-đủ ≠ đúng" (invest 44KB bị 3 lane reviewer lật — MEMORY.md S171); no-tier→opus mặc định đo S126 |
| **TC-04** vật chứng lượt đắt sót | **CÓ — NẶNG NHẤT, và lưới đã dựng đang trả lãi** | Phiên S180: **7/7 vai #53** (WAL verify block ghi 6/6; coordinator xác nhận tôi = vai 7) nhưng "recover 6/6 mất 0 byte" nhờ ghi-đĩa-trong-lúc-làm; tally 72-cận-dưới qua S162 (`feedback_agent_return_garble_recover.md`); ca ngược-#53 S149-L1 (return OK đĩa KHÔNG) |
| **TC-05** vai soi ghi-đĩa cấm-sửa | **CÓ nhu cầu, ĐÃ CÓ 70%:** cặp obs {harvest-curator, tooling-auditor} vô-điều-kiện @close (`closeout-sentinel.ps1` header) + sentinel M5 + INFORM-only; ràng cấm-sửa = G-015/AS-10 git-diff backstop (error-ledger). Thiếu: máy 4-vị-từ (xem GĐ-2) |
| **TC-06** nghi thức tự-ý-bỏ | **CÓ — đo được:** drift-audit trễ 6 ngày tự khai (`CLAUDE.md:121` "trễ 6 ngày so hạn 08-01"); cả một mã lỗi sinh ra từ bệnh này: E-011/AS-15 "nghi-thức chạy tắt, máy mù lớp nghi-thức-có-chạy-không" (error-ledger); thuốc-tái-phạm ĐÃ có (2-strike promote) |
| **TC-07** chủ vắng máy đứng chờ | **GIỮ CHỮ HUB: *chưa có dụng cụ*.** SE 0 bộ đếm đứng-chờ. Cơ chế chống có sẵn: /pause·/tiep 1-đường (H22) + WAL + ACTIVE-MARKS autonomy + probe-không-chặn-điểm-dừng (thoát phiên an toàn không cần anh). WAL S180 "next: chờ anh chọn (a)(b)(c)" = đứng-chờ CÓ KHAI tại lằn ranh — hợp lệ, không đếm được |
| **TC-08** audit trong dòng chỉ bắt cái sống lâu hơn nó | **CÓ — ca chuẩn + thuốc đã uống:** H2-F3 S149 coverage-miss (10 lượt invest → 0 delta sổ, ngoài lưới C11(b) by-design — MEMORY.md S149); thuốc = closeout-sentinel (cửa-sau, positive-control 5/5) + bookend @open bắt lọt phiên trước |
| **TC-09** chỗ ngồi lệch model không ai biết | **CÓ bệnh-gốc (nỗi sợ), MÁY ĐÃ DỰNG VÀ ĐO 0-mismatch:** `scripts/spawn-model-audit.ps1` (PA-2b) + `TIER2_EXPECTED_FULL_ID` (`hmw.js:73`) + đo S126 control-âm/dương đủ (`session-start.md:51`). Lệnh tái lập: `powershell -ExecutionPolicy Bypass -File scripts/spawn-model-audit.ps1` |
| **TC-10** đo tiêu thụ per-cửa | **GIỮ NGUYÊN CHỮ HUB: KHÔNG ĐO ĐƯỢC.** SE cũng không tồn tại dụng cụ; doctrine S158 "đo BYTE, CẤM quy token" (`MEMORY.md` S158). Nếu adopt trần: trần = hướng dẫn + nghĩa vụ khai khi vượt, đúng chữ hub |
| **TC-11** tên duy nhất, không rớt máy đọc | **CÓ — ≥3 ca:** `sub-ctx-audit-*` lọt C11(b) filter (S153→vá S159, vết trong detector body); `_tiep-1.md` sha 7-char vs 40 (S158); "17/17" hardcode stale (`hmw.js:57` comment). Máy soi tên tổng: chưa có (GĐ-1) |
| **TC-12** chấm điểm treo | **CÓ — dạng nặng hơn hub: VẮNG CƠ CHẾ HOÀN TOÀN.** `grep -rn "chấm điểm" .claude/commands/*.md` = 0 hit thật (control "điểm dừng" = 3 file). Hub: điểm treo vì chờ chủ; SE: điểm chưa từng được sinh ra |

---

## §3 — TRỤC 3: 9 lớp lỗi × ca SE (đồng thuận nền lead 9/9 — bổ sung ca + file:line của invest)

| LỚP | SE giẫm? | Ca (của lead ✚ bổ sung invest) |
|---|---|---|
| **LỚP-1** quên ghi lúc mở | **RỒI, nhiều lần** | #53-family (7 vai @S180); S175 spawn TASK-RỖNG sống nhờ run.md dựng trước (MEMORY.md S175 META); ngược-#53 S149-L1 return-OK-đĩa-KHÔNG. Thuốc SE = scaffold @P1 + spec-pin trước spawn |
| **LỚP-2** thợ rèn không dao | **RỒI — gốc S149 + 3 ca lead đo HÔM NAY** | Gốc: "SE = rules-đủ máy-thiếu, 0 script GHI counter" (S149); lead @S180: harvest-curator mắc bẫy đơn-vị bài-học-nằm-trong-file-chính-nó · `lead-stale-auditor:45` chính nó stale-count · `ring2-audit:4` ghi "5 class" khi enum 6 (nguồn: run.md cùng thư mục — tôi KHÔNG đo lại, tin có điều kiện, đánh dấu lead-measured) |
| **LỚP-3** chấm chéo lần-1 KHÔNG ĐẠT là mặc định | **RỒI — và SE đã lập kế hoạch có vòng vá** | S171 miễn-trừ 6→3 + 6 acceptance gãy khi chạy thật (MEMORY.md S171); S179 C7 bắt 2 MAJOR trong chính bản vá (commit `57e672f`); S180 ring1 32Đ/**6T** (WAL). Cấu trúc N1→N5 của spec này TỰ CHỨA vòng phản biện = đúng thuốc |
| **LỚP-4** exit-0 ≠ không cờ | **RỒI — ca tươi HÔM NAY** | ERRATA lead 1 @S180: BƯỚC 0.9 tuyên "all=0" SAI khi 4 thư chưa áp (WAL verify block; control-dương loi-do-luong=1). SE đồng thời ĐÃ có thuốc cấu trúc: tách TOTAL ⟂ INFORM-ONLY 2 dòng (detectors `:1941+`) — đọc thiếu dòng 2 là tái phạm |
| **LỚP-5** số chép tay trôi | **RỒI, kinh niên — đã lên LUẬT B1** | Persona neo "40" stale tới 71 (S169); "17/17" (`hmw.js:57`); STATUS:467 công-thức-chữ tự-huỷ "trừ Designer+Snapshot cho 71 không phải 72" (WAL S180 — NẶNG NHẤT ring1 tự tìm); thuốc = B1 trỏ-canonical-không-chép-số (CLAUDE.md nhiều chỗ) + C2/B3 detector |
| **LỚP-6** neo số dòng chết ngay sinh | **RỒI** | Lead @S180: `STATUS:8` trỏ `:479` mà row thật `:481`; bẫy "con-trỏ-số-dòng-vào-sổ-tái-sinh" (`feedback_resume_premise_reverify.md`); thuốc ĐÃ chuẩn: archive `_INDEX.md` substring-anchor + máy resolve `memory-archive-gate.ps1` A7 |
| **LỚP-7** tuyên gấp-đầy-đủ thân mục lục | **RỒI — kể cả CHÍNH FILE NÀY hôm nay** | AS-17 skeleton-ruột-rỗng 2-strike S150/S151 (error-ledger); S157 coordinator chặn skeleton @202K; **@S180: tôi bị coordinator bắt đúng lớp này** — 7.049B khung đầy đủ, ruột 15%, sau 202K token đọc (datum §4) |
| **LỚP-8** nhãn đã-đóng hẹp hơn phạm vi | **RỒI** | Lead @S180: slot (70) `~~ĐÓNG~~` mà rider H24-2 còn sống; citation-trap gen-2 lây-qua-trích-dẫn 3 đời/1 wave (`feedback_citation_trap_selfreference.md`); permission-matrix vá header quên vá CÂY S122→S164 (SKILL.md tự khai "dư-lượng bất-đối-xứng") |
| **LỚP-9** cưỡng chế tuyên mà chưa có máy | **RỒI, ≥5 ca — và có văn hoá tự khai tốt** | Lead @S180: `tools-whitelist-no-teeth` · `session_ctx_kb` 0-reader · `pull_warn_days` khoá trống; +H18 S100 cron-claim CronList=0 (`feedback_h18_ghostwire_stamp_integrity.md`); +per-L keys tự khai GHOST-WIRE ngay trong doc (`session-start.md:119-121` "Có số ≠ có hành-vi"); +S168 command-sống-trong-comment (`feedback_dryrun_finds_promised_but_unlanded.md`). A16 (khai máy/tay) = đúng thuốc, SE nên adopt nguyên khoản |

---

## §4 — Phát hiện ngoài đề bài · xung đột · VƯỢT-KHUNG · datum

1. **F-1 — 4 thư đang ở nấc DRAFT phía hub:** frontmatter cả 4 = `status: DRAFT` + `reviewer_gate: PENDING` + `nac: draft`, TRONG KHI thư chính tuyên "khi phát, mỗi món đi kèm dấu xác thực nội dung và trạng thái đã duyệt; bản nháp thì không có" và hash canonical LẠI KHỚP 4/4. ⇒ hoặc hub phát bản chưa flip nhãn, hoặc nhãn nấc không nằm trong vùng hash. **Không tự phán — nêu ở mục phản-biện-gửi-hub (khuôn B mục 8) khi adap-report.** KHÔNG chặn GĐ-0 phía SE (hash khớp = nội dung toàn vẹn).
2. **Datum LỚP-7 tự thân @S180 (ghi theo lệnh coordinator):** invest này đọc 202K token/27 tool-use nhưng chỉ đổ 7.049B (~15%) ra đĩa trước khi bị nhắc — bản-đồ-về-lớp-lỗi tự giẫm đúng LỚP-7/LỚP-2 nó đang lập bản đồ. Vá trong-phiên: nhát Edit này. Bài: **tỉ-lệ-đổ-ruột (byte-trên-đĩa / token-đã-đọc) là tín hiệu giám sát được** — đề xuất thêm vào khuôn C11(b)/AS-17 dưới dạng ngưỡng mềm.
3. **Xung đột lớn duy nhất: exit-0-advisory ⟂ cổng-chặn-mã-lỗi** (chi tiết GĐ-3). VƯỢT-KHUNG → anh + AI_INFRA. Các mục còn lại là THIẾU chứ không NGƯỢC.
4. **VƯỢT-KHUNG cần anh (4 khoản):** (a) đổi chế độ exit của lớp detector/sentinel; (b) wire luật chấm điểm vào 2 cửa phiên + vai tầng-2/3 + thu-hẹp-vai-cũ; (c) sổ-3-khối = artifact lane quản trị mới cạnh WAL (nguy cơ nguồn-đôi — cần vẽ ranh); (d) đẻ vai mới (giữ-chuẩn-tên / đọc-sổ) — đụng điều-kiện-vào-danh-sách trọn-gói (GĐ-6 (iii)) + roster.
5. **SUPERSEDE = 0 việc un-do phía SE** (bộ 5-phần 03-08 chưa từng phát; inbox chỉ có 4 file 08-04 — `ls broadcasts/inbox/ai_infra/ | grep 2026-08-0` khớp; đồng thuận nền lead).
6. **Số kho lệch nhỏ so đề bài giao (dùng số ĐO, kèm lệnh):** runs = **90** folder (đề bài: 87) — `ls .claude/workflows/runs/ | wc -l`; auto-memory = **61** (đề bài: 60) — `ls .claude/auto-memory/*.md | wc -l`; gotchas "87 mục": **CHƯA XÁC NHẬN** — `grep -c "^## " docs/gotchas.md` = 19 là ĐẾM SAI THƯỚC (header cấp-2 ≠ mục #n); cần `grep -cE "^#{2,4} #[0-9]+" docs/gotchas.md` hoặc đọc header file để lấy pattern thật. KHÔNG dùng 87 khi chưa tự đếm.
7. **Nhịp hub-hỏi-tiến-độ:** se thuộc nhóm bị hỏi MỖI PHIÊN (thư chính, bảng track) ⇒ GĐ-0 đóng sớm có giá trị quan hệ mesh, không chỉ nội bộ.

---

## §5 — Fit-map 7 dòng (Phần A khuôn — BẢN ĐỀ XUẤT, lead + anh quyết)

| Giai đoạn | Tên | Quyết định (đề xuất) | Lý do / điều kiện | Người làm | Mốc dự kiến |
|---|---|---|---|---|---|
| GĐ-0 | Tiếp nhận và bản đồ áp dụng | **áp dụng** | đang làm dở phiên này; còn: dòng đã-nhận `_index`, fit-map file rời, tệp theo dõi A0..A16, adap-report | em-main | S180-S181 |
| GĐ-1 | Nền chuẩn đặt tên | **áp dụng** (tailored) | KHÔNG khai không-áp-dụng được (chưa có chuẩn-duy-nhất); viết 1 văn bản HỢP NHẤT trỏ máy sẵn (C3/C11/alias-map) + sổ đổi tên máy-đọc; vai-giữ-chuẩn = chờ anh (VƯỢT-KHUNG (d)) | em-main + investigator | wave 1 |
| GĐ-2 | Lưới ghi đĩa + mục lục vật chứng | **áp dụng** (nâng từ ~70%) | thêm vị-từ CỤT + NÉN-QUÁ-TAY (cơ-khí-hoá AS-17/AS-19) + mục-lục-sống runs/ + điểm danh 2 nguồn | em-main | wave 2 |
| GĐ-3 | Nghi thức 2 đầu + cổng mã lỗi | **áp dụng MỘT PHẦN — phần cổng-mã-lỗi HOÃN** | 4 nhãn + vòng-hỏi-ngược + liệt-kê-cửa-có-tiền-kiểm = áp; đổi exit-0→gate = điều-kiện-gỡ-hoãn: anh + AI_INFRA quyết xung đột triết lý | em-main (phần áp) | wave 3 |
| GĐ-4 | Sổ yêu cầu chủ + chấm điểm | **áp dụng — sổ TRƯỚC, chấm điểm CHỜ ANH GẬT wire** | TC-01/TC-12 SE đau thật; sổ 3 khối + máy dò + 2 vế đèn = việc máy; khối chấm điểm đụng 2 cửa phiên = VƯỢT-KHUNG (b) | em-main + anh | wave 4 (sổ) · wave 4b (điểm, gated) |
| GĐ-5 | Cửa gọi model đắt | **áp dụng phần THIẾU nhỏ; phần lõi khai "đã có tương đương/mạnh hơn"** | đã có: per-invocation + tier-pin + spawn-audit + chung-gốc + ctx-pack chống-nạp-giả; thiếu: sổ-khung-nhìn lượt đắt + luật truyền-nguyên-văn thành văn; cửa-duyệt-spec = làm-KHÁC có khai (mục 6 khuôn B) | em-main | wave 5 (nhẹ) |
| GĐ-6 | Niêm phong + bảng gốc | **hoãn** | điều kiện gỡ: mọi GĐ áp-dụng đạt *đã thi công*; khi gỡ: cổng 4 tầng + trace-ngược + mutation-test + bảng gốc 12-TC + bản-nháp-dấu (RC-mark sẵn) | em-main + anh ký | sau wave 5 |

Tự kiểm khi lead chép sang file bản đồ thật: `grep -c '^| GĐ-' <tệp-bản-đồ>` = 7 (chạy trên tệp bản đồ, KHÔNG trên khuôn/không trên file này — file này bảng trên cũng 7 dòng, nhầm mẫu số là ra 14, đúng bẫy hub cảnh báo).

---

## §6 — Thứ tự wave sơ bộ (cho N4 tham khảo — N4 mới là người chốt)

> Bất biến gói: mỗi wave trỏ ≥1 TC; điều-kiện-vào = wave trước thi-công hoặc miễn-có-khai.

- **W0 (đóng GĐ-0)** — dòng "đã nhận" vào `broadcasts/_index.md` + tệp bản-đồ 7 dòng + tệp theo dõi A0-1..A16 + adap-report tiếp nhận. **TC chữa: điều kiện tồn tại của mọi TC.** Phụ thuộc: không. Chi phí: <1 giờ. Làm S180/S181.
- **W1 (GĐ-1)** — chuẩn-tên hợp nhất + sổ-đổi-tên máy-đọc + (tùy anh) vai giữ chuẩn. **TC-11.** Phụ thuộc: W0. Lý do đứng sớm: luật điều-kiện-vào — GĐ-2..5 đều neo GĐ-1, và SE không khai miễn được.
- **W2 (GĐ-2 nâng)** — vị từ CỤT/NÉN (cơ-khí AS-17/19) + mục-lục-sống runs/ + điểm-danh-2-nguồn. **TC-04, TC-05.** Phụ thuộc: W1 (tên artifact chuẩn trước khi viết máy soi). Đây là wave trả lãi nhanh nhất — #53 7-vai/phiên là bệnh đắt nhất đang chảy máu.
- **W3 (GĐ-3 phần áp)** — 4 nhãn thành văn + vòng-hỏi-ngược khuôn + liệt kê từng-cửa-có-tiền-kiểm + luật tự-trị-3-bậc đối chiếu ACTIVE-MARKS. **TC-06, TC-07, TC-08.** Phần cổng-mã-lỗi: treo chờ anh+hub (không chặn wave sau — hub cho GĐ-4 độc lập GĐ-3).
- **W4 (GĐ-4 sổ)** — sổ 3 khối + mã vĩnh viễn + máy dò 2-số + nối 2 vế vào nhip-no + 2 mục mồi từ ACTIVE-MARKS + A5/A6 thành văn. **TC-01, TC-02(dụng cụ), TC-12(nền).** Phụ thuộc: W1. **W4b (chấm điểm)**: sau khi anh duyệt wire 2 cửa — công thức + 3 mốc + 4 tầng giữ nguyên ruột theo luật đã ký.
- **W5 (GĐ-5 phần thiếu)** — sổ-khung-nhìn lượt đắt (derive từ runs/ + engine-stamp) + luật truyền-nguyên-văn. **TC-03(nền mẫu), TC-09(duy trì), TC-04.** Nhẹ, có thể ghép W2.
- **W6 (GĐ-6)** — chỉ mở khi W1-W5 thi công: cổng 4 tầng + bảng gốc 12-TC + mutation-test + bản-nháp-dấu + báo cáo cuối cho hub. **TC-12 (tô xanh có bằng chứng) + toàn bảng.**

## §7 — Vét ô CHƯA ĐO (đợt 2, sau lệnh đổ-ruột của coordinator)

1. **Luật tự-trị 3-bậc (GĐ-3):** `grep -n "bậc|tự vá|mơ hồ" .claude/governance/ACTIVE-MARKS.md` → 1 hit duy nhất là "bậc-MẠNH" (tín hiệu Sàn-3, KHÁC nghĩa). ⇒ **thang 3-bậc dạng hub (rõ→tự-vá · mơ-hồ→nhánh-an-toàn · hỏi-khi-phá-huỷ) CHƯA thành văn**; SE có posture-mark owner-ký (Active-High/Active/Medium/Disable) = trục KHÁC (ai-được-tự-trị-đến-đâu per-cơ-chế, không phải cây-quyết-định-khi-vắng). Khoản GĐ-3(vii): CHƯA LÀM, nguyên liệu = 2 mục mồi GĐ-4 + ACTIVE-MARKS.
2. **Tiền kiểm ở cửa phụ (GĐ-3):** `check-email.md:45` có FAIL-SOFT "check-email loi (khong chan)" cùng khuôn nhip-no — nhưng đó là **fail-soft, KHÔNG phải tiền-kiểm-soi-cửa-đã-đóng**. Cửa `/check-email`, `/adap-*`: **không có tiền kiểm** → khi làm GĐ-3, liệt kê từng-cửa phải khai 2 cửa này "không sinh tệp mốc / chưa có tiền kiểm".
3. 🔄 **BÁC MỘT PHẦN nền lead (lead mời bác):** lead xếp `pull_warn_days` khoá trống vào LỚP-9 ghost-wire. Đo lại: `check-email.md:48` khai **"🔒 `pull_warn_days` CỐ Ý để TRỐNG — anh không đặt số @S148, và script cấm tự chế mặc-định"** + vế-4 đã ĐỔI VAI thành chỉ-báo-sức-khoẻ-nghi-thức. ⇒ đây là **owner-gated-empty CÓ KHAI**, không phải "cưỡng chế tuyên mà chưa có máy" — máy có, số là quyền anh, và sự trống ĐƯỢC khai đúng chỗ. 2 món ghost-wire còn lại của lead (tools-whitelist-no-teeth · session_ctx_kb 0-reader) tôi KHÔNG bác — chưa đo lại, giữ nhãn lead-measured.
4. **Đếm gotchas:** 2 thước đã thử đều hỏng (`^## ` = 19 header-cấp-2 ≠ mục; max token `#N` = `#482` — dính "Run #482" CI, không phải gotcha). ⇒ **tổng gotcha = KHÔNG ĐO ĐƯỢC bằng thước đã thử; canonical = row trong `docs/STATUS.md` (đúng B1)** — người sau muốn đếm phải mở file xem format đánh số inline rồi mới viết regex, đừng dùng số 87 của đề bài khi chưa tự đếm.
5. **A5 họ-hàng ("hỏi lại phải trả phí viện dẫn"):** `grep -rln "viện dẫn" .claude/auto-memory/*.md` = **0 hit** (control-dương: cùng thư mục ls được 61 file; cụm này nằm trong THƯ HUB luật-4, không phải memory SE). ⇒ A5 chưa có thành văn phía SE — xác nhận kết luận GĐ-4.
6. **GĐ-5 bẫy-3 (vai mới thiếu đăng ký):** `grep -n "roster|đăng ký" docs/governance/error-ledger.md` = **0 hit** (control-dương: cùng file đọc được AS-13..AS-20 đầu phiên này). ⇒ SE **chưa có hồ-sơ ca giẫm** bẫy này; họ hàng gần nhất = "17/17 stale" (hardcode-count) và E-009 (custom-workflow không kế thừa guard). Khi GĐ-6 làm điều-kiện-vào-danh-sách, đây là bẫy PHÒNG chứ không phải bẫy ĐÃ chảy máu.

**END sub-invest-fitmap-S180 — VERDICT=PHỦ-ĐỦ-7GĐ-12TC-9LỖI; 1 xung đột triết lý (exit-0 ⟂ cổng-chặn); 4 khoản VƯỢT-KHUNG; 1 bác-một-phần nền lead (pull_warn_days = owner-gated-empty có khai); GĐ-5 gần xong nhất, GĐ-4 hổng nhất; W0 đóng được ngay hôm nay.**
