# Run — S180 adap gói nâng cấp quy trình 7 giai-đoạn

- session: **S180** · phiên-LOGIC **L12** · HEAD @open `55894a0`
- lệnh anh: `/check-email AI_INFRA` + `/adap-apply` → `/fable-real` invest+review → `/fable-clone` review bóc-tách → `/fable-real` tổng-hợp chia **wave** → **HMW fan-out Opus 5 MAX** từng wave
- spec (lead verify + ghi, H21): `spec-adap-upgrade-pack-phased-07-08-2026.md`

## Nguồn — 4 thư, 120.044 B, phát 2026-08-04, `to: all-fit`
| thư | byte | vai trò |
|---|---|---|
| `thu-chinh` | 33.156 | phát hành · SUPERSEDE · khai trạng-thái · **12 TC** · luật chung 7 GĐ · ranh-giới |
| `phu-luc-spec-pitfall` | 46.416 | **9 lớp lỗi xuyên suốt** + spec GĐ-0..GĐ-6 + bẫy đã giẫm |
| `khuon-fit-map-report-checklist` | 30.502 | Phần A bản-đồ · Phần B khuôn báo-cáo 10 mục · Phần C kiểm chống adapt-thiếu |
| `luat-cham-diem` | 9.970 | luật chấm điểm phiên — **đã ký, áp thẳng** |

## check-email STAGE 1 — đo theo id, không theo cảm giác
- **kênh `outbox/se` (directed) = 0 mới** — 22/22 thư đã có trong inbox.
- **kênh `outbox/all` (fan-out) = 4 CHƯA ÁP** (watermark > 2026-07-15).
- 🔸 **1 DƯƠNG-GIẢ đã loại:** thước slug kêu thêm `2026-08-05-…-phan-2-ca-rieng-cua-hub`, nhưng adap-report `…phan-1-va-2.md` **có 3 hit "Phần 2"** + khai rõ *"đọc tham-khảo, không nhận làm sàn"* ⇒ **đã áp**. Thước khớp-theo-slug fail vì report gộp 2 thư vào 1 tên.

## Stages
- [x] N0 check-email + dò 2 kênh + loại dương-giả
- [!] **N1** `/fable-real investigator-codebase` — bản-đồ áp-dụng (7 GĐ × 12 TC × 9 lớp lỗi) — **#53 lượt-1 → resume "đổ ruột trước"**

### 🔴 Datum #53 — vai thứ **7** phiên S180, và là ca `skeleton-nấc-2` đẹp nhất từng ghi
- Lượt-1: đốt **202K tok / 27 tool-use / 545s** (đọc trọn 120 KB thư) → return = *"File khởi tạo xong. Giờ đo đợt 1…"* = mô-tả-ý-định-rồi-tắt.
- Đĩa cứu **7.049 B**, nhưng **RUỘT chỉ có §0 + GĐ-0 thật**; §1(GĐ-1..6) · §2 (12 TC) · §3 (9 lỗi) · §4 · §5 · §6 đều `[ĐANG ĐO]` ⇒ **~15% giá trị trên đĩa, ~85% còn trong context**.
- 🔴 **Guard "verify BYTE tăng" MÙ HOÀN TOÀN với ca này** — byte>0 và đang tăng. Phải đọc **NGỮ-NGHĨA ruột** (`grep -vE '^#{1,4} |^\s*$' | wc -l` = 27 dòng thật / 10 heading) mới thấy 6/9 mục là placeholder.
- 🔴 **Đây CHÍNH LÀ `LỚP-7` của thư** (*"tuyên gấp đầy đủ mà thân là mục lục"*) — xảy ra **ngay trong lượt đi đọc thư về lớp đó**. Tức cũng là `LỚP-2` (*thợ rèn không có dao*). **Ca hội tụ 2 lớp cùng lúc.**
- Đối sách: resume bằng lệnh **"ĐỔ RUỘT TRƯỚC, ĐO TIẾP SAU"** — tiền lệ S152 **2/2 lần cứu trọn**.

### 🔴 Điều chỉnh thiết kế cho N3 (rút từ 7/7 ca #53 phiên này)
Counter-datum ổn định qua S151 · S152 · S180: **return-only + khuôn cứng định sẵn sống sót tốt hơn return tự-do sau khi làm việc dài.** Bằng chứng mạnh nhất phiên này: **3 spawn-probe vai STYLE trả đúng 1 dòng cố định → 3/3 CLEAN** trong khi 7/7 vai làm việc dài đều garble.
⇒ **N3 ensemble mỗi lane PHẢI có:** (a) ép ghi đĩa từng phần · (b) **khuôn return CỨNG, ngắn** (verdict dòng-1 + ≤N mục cố định) · (c) lane độc lập nhau để 1 lane chết không giết cả run (`parallel()` chứ không `await` chuỗi).
- [x] **N1 XONG** — `INVEST-N1: PHỦ ĐỦ — 7GĐ/7 · 12TC/12 · 9LỖI/9`, artifact **48.433 B** (§0-§7 + END-line). Recover #53 bằng lệnh "đổ ruột trước" ⇒ **7.049 B → 48.433 B**.
- [x] **N2 XONG** — `REVIEW-N2: PASS_WITH_FIXES — 0C/5M/6m`, 11 finding F-01..F-11. 🟢 **SẠCH #53** — vai làm-việc-dài ĐẦU TIÊN sống sót phiên này.
- [!] **N3** `/fable-clone reviewer` **6 LANE** (OD-1 lai) — ĐANG CHẠY

### N2 — kết quả
🔴 **T2 `CLAIM-KHÔNG-ĐỨNG` = KHÔNG CÓ.** ~60 phép đo trên ~45 claim, **mọi `file:line` giải được**, ruột đúng việc N1 tả — gồm toàn bộ claim chống lưng GĐ-5 "gần xong nhất" · GĐ-2 "~70%" · GĐ-3 "nửa". ⇒ **bản đồ N1 ĐỨNG VỮNG về dữ kiện**; 5 MAJOR đều nằm ở **suy luận / phủ**, không ở đo.

**5 MAJOR:**
- **F-01** N1 đề xuất *"W5 có thể ghép W2"* — **vi phạm điều-kiện-vào GĐ-5 của hub** (đòi GĐ-2 *đã thi công*) **LẪN OD-2 owner**, mà không kèm cờ cảnh báo cho N4.
- **F-03** fit-map **3/7 ô trộn nhiều giá trị** ("áp dụng MỘT PHẦN — HOÃN") trong khi khuôn Phần A bắt chọn **ĐÚNG MỘT trong ba**; đường thoát chính thức (nấc *đã đồng ý* = "nói rõ adopt tới đâu") bị bỏ không dùng.
- **F-04** bỏ sót **bẫy A1/GĐ-4-bẫy-5**: *"cấm đổ nhãn-của-đội vào cột lời-nguyên-văn — **đã xảy ra thật ở hub**"* — đúng chỗ N1 đang gợi WAL/HANDOFF/auto-memory làm nguyên liệu sổ 3 khối.
- **F-06** bỏ sót trọn khoản sàn in đậm **GĐ-2(v) "Khai luôn điểm mù"**.
- **F-10** 🔴 **"chỉ có 1 xung đột" là SAI — có XUNG ĐỘT THỨ HAI**, và nó nằm ngay trong §4.4(c) của chính N1 rồi bị câu §4.3 (*"các mục còn lại là THIẾU chứ không NGƯỢC"*) phủ nhận.

### 🔴 XUNG ĐỘT 2 — lead đã verify đĩa
| bên | nguyên văn |
|---|---|
| **hub** `luat-cham-diem:63` (thuộc phạm vi **ĐÃ KÝ** `:140`) | *"**Cuốn sổ là đường ghi chính**, vì nó được ghi ngay trong lượt trao đổi."* |
| **SE** `tiep.md:181` (luật ratify) + `pause.md:115` | *"Checklist = VIEW derive tươi — **CẤM tạo file checklist nguồn-đôi (sàn-3)**."* |
⇒ xây-theo-hub **phạm luật SE**; xây-theo-SE **mất "đường ghi chính" đã ký** ⇒ **PHẢI CHỌN — quyền anh.** Cùng cấu trúc với cặp exit-0 ⟂ cổng-chặn.
🔴 **Hệ quả nếu giữ câu "chỉ 1 xung đột":** N4 sẽ xếp W4-sổ là "việc máy" chạy thẳng, **bỏ mất bước anh-duyệt-ranh**.

### 🔴 LEAD BÁC cách phát biểu của N2 ở 1 điểm — bẫy ĐƠN-VỊ, không phải đúng-sai
N2 kết *"N1 đúng, số lead lệch (90/61 vs 87/60)"*. Lead đo lại **theo từng đơn vị**:
| đại lượng | đơn vị | số |
|---|---|---|
| `runs/` | **dir** (thực thể run) | **88** — 2 cái do lead tạo phiên này ⇒ trước S180 = **86** |
| | **entry** (gồm `README`+`_ledger`) | **90** ← số N1 |
| | dir **có `run.md`** | **85** |
| `auto-memory` | **file** `*.md` | **61** ← số N1 |
| | **memory THẬT** (trừ `MEMORY.md` index) | **60** ← số lead, **= số canonical STATUS tự khai phương pháp** |
⇒ **không ai sai** — hai bên đếm hai thứ. Đây **đúng bẫy LỚP-5**, cùng lớp ca `harvest-curator` F-05 sáng nay (22 dòng ⟂ 24 lần).
🔴 **Và N2 giẫm đúng lỗi nó đi phản biện** — xử vụ lệch-số bằng cách **tuyên một bên thắng** thay vì hỏi *"hai bên đang đếm CÁI GÌ"*. **LỚP-2 *thợ rèn không có dao*, ca thứ 4 trong phiên.**
🔸 Bài đã bơm vào cả 6 lane N3: *"thấy 2 số lệch, hỏi **đếm cái gì** TRƯỚC khi hỏi **ai sai**."*

### N3 — thiết kế 6 lane (OD-1 owner: LAI 4 dọc + 2 ngang)
| lane | lăng kính | vì sao |
|---|---|---|
| **A** | GĐ-0 + GĐ-1 | cụm **CHỐT MỞ KHOÁ** — GĐ-1 chặn điều-kiện-vào mọi GĐ sau |
| **B** | GĐ-2 | trục **cơ-khí-hoá ⟂ nghi-thức**; đối chiếu ca N1 hạ cánh 7.049 B/6-placeholder mà 0 máy bắt |
| **C** | GĐ-3 + GĐ-4 | **lane nóng nhất — chứa CẢ HAI xung đột**; dựng ≥2 phương án hoà giải mỗi cái, **KHÔNG tự chọn** |
| **D** | GĐ-5 + GĐ-6 | kiểm câu *"GĐ-5 gần xong nhất"* — **N2 kiểm claim ĐỨNG, D kiểm PHỦ ĐỦ** (bắt buộc có mẫu số) |
| **E** | ↔ 9 lớp lỗi × 12 TC | bảo vệ **hợp đồng nghiệm thu**: GĐ nào không trỏ về TC nào ⇒ **đồ chơi, LOẠI** |
| **F** | ↔ máy⟂tay · vượt-khung · rủi ro | soi thứ 5 lane kia mù: **cái gì sẽ VỠ khi thi công**, cái gì **tuyên có mà không răng** |

**Áp điều chỉnh thiết kế chống #53 cho cả 6:** ép ghi đĩa từng phần · **khuôn return CỨNG** (verdict dòng-1 + đúng 4-5 khối ≤8 dòng) · 6 lane **độc lập** ⇒ 1 lane chết không giết run.
🔸 Bằng chứng khuôn cứng có tác dụng: **N2 là vai làm-việc-dài đầu tiên trong phiên trả SẠCH**, và nó được giao đúng khuôn 5-khối cứng.

### N1 — kết quả cốt lõi (lead đã verify 2 claim load-bearing)
**Bậc trưởng thành SE theo GĐ:**
| GĐ | trạng thái SE | thiếu gì |
|---|---|---|
| **GĐ-5** | 🟢 **gần xong nhất** — H21 per-invocation + worker-tier-pin + `spawn-model-audit` đo S126 0-mismatch + vật chứng chung-gốc `runs/` + ctx-pack chống-nạp-giả | sổ-khung-nhìn lượt đắt · luật truyền-nguyên-văn |
| **GĐ-2** | 🟡 **~70%** — run-folder FLAT + `nhip-no` orphan-count + archive-gate A7 + trần-ở-config | vị-từ CỤT/NÉN (AS-17/19 mới là **nghi-thức**, chưa cơ-khí-hoá) · mục-lục-sống `runs/` · điểm-danh-2-nguồn |
| **GĐ-3** | 🟡 **nửa** — bookend 2-đầu + đèn-nợ-4-cửa + carrier-commit **ĐÚNG NGUYÊN VĂN hub** | 4-nhãn · vòng-hỏi-ngược · thang-exit |
| **GĐ-1** | 🔴 **chốt MỞ KHOÁ** — có máy rời (C3/C11/alias-map) nhưng **không có chuẩn-duy-nhất** ⇒ **KHÔNG khai miễn được** ⇒ chặn điều-kiện-vào mọi GĐ sau | chuẩn đặt tên duy nhất (TC-11) |
| **GĐ-4** | 🔴 **hổng nhất** — `grep "sở-thích\|phàn nàn"` = **0** (control 3 file) · chấm điểm `grep` = **0** (control 3 file) | sổ 3-khối · cơ chế chấm điểm. **TC-12 SE NẶNG HƠN hub**: điểm **chưa từng được sinh** |
| **GĐ-0** | 🟡 gần đóng | dòng sổ "đã nhận" (A0-3 hụt) · fit-map · tệp theo dõi · report |
| **GĐ-6** | ⚪ chưa động — **đúng thiết kế** (điều-kiện-vào chưa thoả) |

**Xung đột triết lý — N1 tìm được ĐÚNG 1:** hub GĐ-3 đòi **cổng-CHẶN-mã-lỗi 4 trạng thái** ⟂ SE doctrine **exit-0-advisory** (`governance-detectors.ps1:1963` *"Exit 0 always"*) + probe-không-chặn 4 cửa. SE chỉ có **2 máy fail-loud** (`session-counter-tick`, `h24-signal-write`) + `hmw` checkpoint throw.
*(N2 được giao nhiệm vụ tìm xung đột **thứ hai** — "chỉ 1" là loại kết luận dễ sai theo hướng lạc quan.)*

**4 khoản VƯỢT-KHUNG → cần anh + AI_INFRA:** (1) đổi exit-0 → gate ở lớp detector/sentinel · (2) wire chấm điểm vào 2 cửa phiên + vai tầng-2/3 + thu-hẹp-vai-cũ · (3) sổ-3-khối = **artifact lane quản trị MỚI cạnh WAL** (🔴 nguy cơ **nguồn-đôi**, phải vẽ ranh trước) · (4) đẻ vai mới (giữ-chuẩn-tên / đọc-sổ) — đụng roster + điều-kiện-vào GĐ-6.

**TC-04 — lưới SE đang TRẢ LÃI, đo được:** 7/7 vai dính #53 phiên này (N1 là vai thứ 7), **recover mất 0 byte** nhờ ghi-đĩa-trong-lúc-làm.

**🔴 F-1 gửi ngược hub (không chặn GĐ-0):** cả 4 thư frontmatter `status: DRAFT` + `reviewer_gate: "PENDING"`, trong khi `thu-chinh:66` 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ó**"*. **Lead verify: 4/4 đúng.** Hash **4/4 khớp canonical** qua `scripts/stamp_verify.py` ⇒ **không phải tamper**, là **dấu trạng thái lệch nội dung**. 🔸 Phép hash **tự chế của N1 ra MISMATCH cả 4** → suýt phán tamper sai; đúng bẫy `false-tamper` @S141, **máy mesh cứu**.

**A0-3 hụt:** 4 thư nằm inbox 2 ngày mà `grep "upgrade-pack-phased" broadcasts/_index.md` = **0 hit** (control `harness-22` = 3) ⇒ chưa có dòng "đã nhận".
- [ ] N3 `/fable-clone reviewer` — ensemble bóc tách không bỏ sót
- [ ] N4 `/fable-real reviewer` — tổng hợp → **plan wave**
- [ ] N5 HMW fan-out Opus 5 MAX — thi công từng wave

## 🔴 LEAD tự đọc TRƯỚC khi invest trả — thước riêng để kiểm, không gật theo

**9 lớp lỗi xuyên suốt vs SE — hội tụ độc lập, 4 lớp giẫm NGAY HÔM NAY:**

| lớp hub | SE có ca? | bằng chứng SE (S180 nếu không ghi khác) |
|---|---|---|
| **1** quên ghi vật chứng lúc mở lượt chạy | ✅ | sub-class `ngược-#53` + `skeleton-ruột-rỗng` (AS-17, error-ledger) |
| **2** *thợ rèn không có dao* — GĐ chống lỗi X lại mắc X bên trong | ✅ **×3 HÔM NAY** | `harvest-curator` F-05 mắc bẫy đơn-vị mà bài học chống nó nằm trong file **chính nó chưa harvest** · `lead-stale-auditor.md:45` (vai bắt `view-stale-count`) **chính nó stale-count** · `ring2-audit.md:4` ghi "5 class" khi enum **6**, và class thứ 6 **load-bearing đúng phiên này** |
| **3** chấm chéo lần đầu KHÔNG ĐẠT là mặc định | ✅ | `ring1` 32Đ/**6T** · H2 `GATE-FAIL` · reviewer thường `PASS_WITH_FLAGS` |
| **4** exit 0 ≠ không có cờ | ✅ | `governance-detectors.ps1` khai *"Exit 0 always (never fails build)"* — 49 cờ vẫn exit 0 |
| **5** số chép tay trong văn xuôi trôi | ✅ | `STATUS:8` mega-line **4 số stale** cùng lúc; SE đã có luật B1 nhưng vẫn trôi |
| **6** neo trích dẫn bằng số dòng chết ngay khi sinh | ✅ **HÔM NAY** | `STATUS:8` trỏ `:479` mà row bundle ở **`:481`** · `lead-stale-auditor.md:45` neo `STATUS:19` (dòng không liên quan) · memory `feedback_absence_looks_like_clean` đã ghi lớp này |
| **7** tuyên "gấp đầy đủ" mà thân là mục lục | ✅ | `skeleton-ruột-rỗng` **nấc-2** — 1.661 B **toàn heading** sau 202K tok; guard "byte tăng" MÙ với ca này |
| **8** nhãn "đã đóng" hẹp hơn phạm vi thi hành | ✅ **HÔM NAY** | slot **(70)** `~~ĐÓNG @S179~~` mà **rider lỗi máy H24-2 còn sống** (`lead-gap` FLAG-1) |
| **9** cưỡng chế được tuyên mà chưa có máy | ✅ (2 món, **không phải 3**) | class **ghost-wire** của SE (H18): `tools-whitelist-no-teeth` · `session_ctx_kb` 0-reader @S146. ⚠️ **`pull_warn_days` ĐÃ BỊ N1 BÁC — lead sai:** `check-email.md:48` ghi rõ *"🔒 CỐ Ý để TRỐNG — anh không đặt số @S148, script cấm tự chế mặc-định"* ⇒ đây là **cố-ý-chưa-đặt-CÓ-KHAI**, KHÁC HẲN *defined-but-unread*. Lead verify: xác nhận N1 đúng. 🔸 N1 khai thẳng nó **chưa đo lại 2 món kia** ⇒ 2 món đó vẫn đứng nhưng chưa được kiểm chéo lượt này. |

🔴 **Kết luận sơ bộ của lead: 9/9 lớp SE đều có ca THẬT.** Đây là **hội tụ ĐỘC LẬP** — 4 thư kéo về **SAU KHI** bookend @open đã chạy xong và các ca trên đã được ghi. SE không đọc thư rồi diễn lại. ⇒ tín hiệu **PROJECT-FIT cao**.
🔸 Khai mặt kia: lead mới soi **9 lớp lỗi**, **chưa** soi 7 GĐ và 12 TC — đó là việc của N1. Bảng này là **thước để kiểm N1**, không phải kết quả thay N1.

## Danh mục artifact (NGUỒN-2 cho V-3 — liệt TÊN, không liệt số tổng)

- `adap-upgrade-pack-synthesis.md`
- `lane-memory-proposals/MEMORY.md`
- `lane-memory-proposals/feedback_doctrine_line_undercounts.md`
- `lane-memory-proposals/feedback_measure_with_detectors_own_regex.md`
- `lane-memory-proposals/feedback_refuse_coordinator_suggested_verdict.md`
- `lane-memory-proposals/feedback_stale_anchor_born_dead.md`
- `lane-memory-proposals/feedback_unit_mismatch_keep_both.md`
- `lane-memory-proposals/proxy_predicate_blind_measure.md`
- `lane-memory-proposals/ranking_claim_needs_two_denominators.md`
- `lead-errata-S180.md`
- `lead-triage-expect-baseline.md`
- `lead-verify-D-LANE-01-S180.md`
- `run.md`
- `spec-adap-upgrade-pack-phased-07-08-2026.md`
- `sub-invest-fitmap-S180.md`
- `sub-n3-lane-a-gd01.md`
- `sub-n3-lane-b-gd2.md`
- `sub-n3-lane-c-gd34.md`
- `sub-n3-lane-d-gd56.md`
- `sub-n3-lane-e-benh.md`
- `sub-n3-lane-f-maytay.md`
- `sub-review-n2-S180.md`
- `sub-w0a-fitmap-tracking.md`
- `sub-w0b-index-hash.md`
- `sub-w1a-mayd-octen.md`
- `sub-w1b-chuan-ten.md`
- `sub-w2-luoi-ghi-dia.md`
- `sub-w3-nghi-thuc.md`
- `wave-plan-S180.md`

> 🔴 Bổ sung @S180 sau khi `artifact-integrity.ps1` (W2) gắn cờ **V-3: NGUỒN-2 rỗng** — *"run.md KHÔNG nêu tên tệp artifact nào… Đây KHÔNG phải 'chênh 0'"*.
> Máy từ chối đọc **nguồn rỗng** thành **đồng thuận**. Cùng nguyên tắc chiều A2: **số 0 chỉ có nghĩa khi mẫu số ≠ 0**.
