# sub-invest-1-vong-def — Lane 1: ĐỊNH NGHĨA 5 vòng (verbatim từ 3 broadcast hub)

> Run `2026-07-24-S149-dong-du-5-vong` · role investigator-codebase · lane 1
> 🔴 **LEAD SCRIBE ON-BEHALF @S149.** Lane này TRẢ ĐƯỢC return đầy đủ nhưng **KHÔNG ghi file đĩa** —
> ngược với #53 kinh điển (thường là ghi được mà return hỏng). Nội dung dưới lấy nguyên văn từ
> `journal.jsonl` của workflow, KHÔNG biên tập. Lead verify: khớp 3 sha broadcast lane tự trích.

---

## ĐỊNH NGHĨA CHÍNH XÁC 5 VÒNG TỰ-BẢO-TRÌ — trích VERBATIM

**Nguồn (3 file, đọc ĐÚNG 3, 0 file thừa):**
- **F1** = `D:/Dropbox/CONG_VIEC/AI_INFRA/broadcasts/outbox/all/2026-07-15-Governance-bon-vong-tu-bao-tri-hat-nhan-harness.md` (100 dòng · sha `c1b138fd…` F1:10)
- **F2** = `D:/Dropbox/CONG_VIEC/AI_INFRA/broadcasts/outbox/all/2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do.md` (54 dòng · sha `190c11ba…` F2:11)
- **F3** = `D:/Dropbox/CONG_VIEC/AI_INFRA/broadcasts/outbox/all/2026-07-17-Governance-checklist-nam-vong-va-kiem-audit-xuyen-session.md` (87 dòng · sha `f71c5b65…` F3:11)

**Tên CANONICAL = tên F3** (roster-agnostic). F3:19 verbatim: *"Toàn bản **roster-agnostic**: năm vòng được gọi bằng tên chức-năng của khung, không dùng tên vai hay số hiệu nội bộ của bất kỳ dự án nào (chống phân-mảnh thuật ngữ)."* Tên F1 (2026-07-15) là tên CŨ/hình-hub → dùng làm alias, KHÔNG làm tên spec.

**Header 7 cột F3:25 verbatim:** `| Vòng (chức-năng) | Lỗi bắt | Nhịp (theo khung) | Action adopt tối thiểu | Tự-verify ($0, chạy-lại-được) | Nấc | Cơ-chế-hóa vs quy-ước |`
⇒ **SÀN bắt buộc (function-floor) = cột 4 "Action adopt tối thiểu"**. **Artifact/hành vi chứng minh SỐNG = cột 5 "Tự-verify"**.

---

### VÒNG 1 — `1. Cặp kiểm tooling + harvest` (F3:27 c1)
- **Alias cũ** F1:28 c2: `**Công-cụ & thu-hoạch trí-nhớ**`
- **ĐO cái gì** — F1:28 c3: `tooling/tài-liệu có tươi không · phiên nào cũng gặt đủ ghi-chép của các con sub không` · F3:27 c2 (lỗi bắt): `lỗi THIẾU: có thay đổi vật lý mà không ai báo + harvest bị quên`
- **Nhịp** F3:27 c3: `hai đầu phiên (mở = báo diff · đóng = chốt + gom)`
- **🔴 SÀN** F3:27 c4: `cả cặp chức-năng kiểm chạy ở hai đầu, báo về lead`
- **SỐNG khi** F3:27 c5: `commit đóng phiên gần nhất CÓ vết sổ của cả cặp (mtime + commit-log)`
- **Nấc** F3:27 c6: `runtime` · **Cơ-chế/quy-ước** c7: `gắn spawn vào lệnh hai đầu = cơ-chế; lead tự nhớ = quy-ước`
- **Vai KIỂM độc-lập:** F1:28 c4 `🔴 **chưa có**` · Vòng đã đóng: F1:28 c5 `🟢 đóng`

### VÒNG 2 — `2. Cặp soi-lead (lệch nguồn + rớt việc)` (F3:28 c1)
- **Alias cũ** F1:29 c2: `**Lỗ-hổng & lệch-pha của chính con điều-phối**`
- **ĐO cái gì** — F1:29 c3: `con lead có quên việc không · cái nó "trình" ra có còn khớp nguồn không` · F3:28 c2: `lỗi THIẾU của lead — không phát tín hiệu`
- **Nhịp** F3:28 c3: `hai đầu, vô-điều-kiện (event-gate chỉ được phép khi đủ hai điều kiện ở mục event-gate của khung)`
- **🔴 SÀN** F3:28 c4: `cả cặp chức-năng tồn tại + chạy vô-điều-kiện`
- **SỐNG khi** F3:28 c5: `ba lần đóng phiên gần nhất đều có vết chạy`
- **Nấc** c6: `runtime` · c7: `quy-ước; có "detector closeout thiếu nghi-thức" thì thành cơ-chế`
- **Vai KIỂM:** F1:29 c4 `🔴 **chưa có**` · đóng: `🟢 đóng`

### VÒNG 3 — `3. Bộ ba đo → đề-xuất → kiểm trí nhớ (tuần tự)` (F3:29 c1)
- **Alias cũ** F1:30 c2: `**Trí-nhớ: đo → đề-xuất chỉnh → kiểm**`
- **ĐO cái gì** — F1:30 c3: `trí-nhớ nạp vào có thực-sự được giữ/dùng không` · F3:29 c2: `rot/drift tích lũy + verdict sai ghi vào sổ`
- **Nhịp** F3:29 c3: `hai đầu, vô-điều-kiện; tuần tự bắt buộc (chạy song song = vai kiểm chấm bản cũ)`
- **🔴 SÀN** F3:29 c4: `bộ ba chức-năng chỉ-đề-xuất + lead là người ghi duy nhất + vai KIỂM độc lập bắt buộc giữ`
- **SỐNG khi** F3:29 c5: `run-record lượt gần nhất đủ ba stage tuần tự (mtime tăng dần) + có mặt stage kiểm độc lập`
- **Nấc** c6: `runtime` · c7: `ba-stage-artifact = cơ-chế; tuần tự = quy-ước`
- **Vai KIỂM:** F1:30 c4 `🟢 **có**` (VÒNG DUY NHẤT) · đóng: F1:30 c5 `🟢 đóng (mới chạy lượt đầu 2026-07-15)`
- **Số n=1 làm nền** F1:41-43: `Ba vai chạy **tuần-tự**, không song song: **đo** → **đề-xuất chỉnh** → **kiểm**.` / `Vai thứ hai **bác vai thứ nhất ở 3 trên 5 kết-luận**.` / `Vai thứ ba **kiểm độc-lập** → xác-nhận **vai thứ hai đúng cả ba**.`

### VÒNG 4 — `4. Vòng nén tầng lưu trữ (distill)` (F3:30 c1)
- **Alias cũ** F1:31 c2: `**Nén-ngủ (chưng-cất trí-nhớ)**`
- **ĐO cái gì** — F1:31 c3: `trí-nhớ có được nén lại theo thời-gian không, hay chỉ phình` · F3:30 c2: `mật độ trí nhớ tích lũy`
- **Nhịp** F3:30 c3: `probe rẻ hai đầu; NÉN theo ngưỡng tích lũy, KHÔNG theo phiên`
- **🔴 SÀN** F3:30 c4: `mốc nén tồn tại + nén ADDITIVE (gist MỚI đặt cạnh verbatim, không đè)`
- **SỐNG khi** F3:30 c5 (VERBATIM đầy đủ): `mốc nén đọc được + verbatim nguyên vẹn TỪNG tệp (byte/hash per-file — nén additive làm tổng tăng nên tổng-byte KHÔNG đủ; chuẩn hai-assert "bảo-toàn ≠ niêm-phong", `291550ff…`)`
- **Nấc** c6: `executed-file + runtime (≥1 lần nén)` ← **DUY NHẤT có nấc executed-file** · c7: `gate đối chiếu = cơ-chế; trigger = quy-ước`
- **Vai KIỂM:** F1:31 c4 `🔴 **chưa có**` · đóng (tại 07-15): F1:31 c5 `🔴 **chưa đóng**`; F1:33: `vòng 4 **chưa đóng** — lần nén gần nhất cách đây **27 ngày**, và chỉ **2/14** con sub có bản nén.`

### VÒNG 5 — `5. Sàn-sự-thật cho nhãn "đã-đo"` (F3:31 c1) — 🔴 **KHÁC LOẠI**
- **Tên đầy đủ** F2:15: `# Vòng tự-bảo-trì thứ năm: sàn-sự-thật cho nhãn "đã-đo" (type: new)`
- **ĐO cái gì** F3:31 c2: `nhãn đo giả ("nhãn thay cho việc đo")` · con bệnh F2:19: `**cái nhãn "đã-đo" đã THAY THẾ cho việc đo**, và không một bài kiểm nào đổi màu khi con số bị đổi.`
- **Nhịp** F3:31 c3: `sống TRONG artifact mọi lần test/ship; máy quét presence lúc đóng phiên` ← **KHÔNG phải "hai đầu phiên"**
- **🔴 SÀN** F3:31 c4: `mọi hằng số thuộc lớp "đã-đo" có falsifier chạy được (assert-bao / negative-control)`
- **SỐNG khi** F3:31 c5: `đổi hằng số → test ĐỎ; máy kiểm presence, người kiểm validity` ← mutation-test, KHÔNG phải run-record/mtime
- **Nấc** c6: `runtime` · c7: `hai lớp máy = cơ-chế; validity-gate = quy-ước`
- **LUẬT gốc (định-nghĩa 2 nhánh falsifier)** F2:23: `Hub vừa ký luật nội bộ: **mọi hằng-số hiệu-chuẩn hoặc con số mang nhãn đo-lường** (những chữ như *measured / empirical / calibrated / grounded / đã-đo* trong tên hoặc chú thích) **phải đi kèm một BỘ PHẢN-CHỨNG CHẠY ĐƯỢC** — nghĩa là ít nhất một trong hai thứ:` → F2:25 `- **điểm-dữ-liệu gốc lưu ngay trong mã + một khẳng-định bao quanh** (assert), nổ ngay lúc nạp module hoặc lúc chạy bài kiểm nếu ai đổi con số mà không đo lại;` → F2:26 `- **một phép kiểm phủ-định (negative-control)** — bài kiểm được thiết kế sao cho *nếu con số là bịa thì nó TRƯỢT*.`
- **Metadata KHÔNG đủ** F2:28: `Siêu-dữ-liệu là điều kiện CẦN; thứ duy nhất phá được một con số sai là **một phép kiểm có thể làm nó trượt**.`

---

## 🔴 PHÂN BIỆT "vòng-ĐO" ⟂ "floor chính-sách áp TẠI CHỖ" (chỗ hub dặn kỹ)

**(a) Câu duy nhất trong 3 file tuyên thẳng cái gì là THƯỚC-ĐO chứ không phải vòng** — F3:33 VERBATIM:
`(Hàng "bộ đếm nhịp + dòng-nợ" của khung là THƯỚC ĐO, không phải một vòng — nó nằm ở phần B bên dưới.)`
⇒ **bộ đếm nhịp + dòng-nợ KHÔNG phải vòng thứ 6.** Nó sống ở phần B (phép 1, 2).

**(b) Vòng 5 LÀ một vòng (đủ 7 cột F3:31), nhưng BẢN CHẤT = floor chính-sách áp tại chỗ, không phải vòng chạy-theo-nhịp.** 4 vết:
1. F3:31 c3 — nhịp = `sống TRONG artifact mọi lần test/ship`, không phải "hai đầu phiên" như vòng 1/2/3 (F3:27/28/29 c3) và không phải "probe hai đầu + ngưỡng tích lũy" như vòng 4 (F3:30 c3).
2. F3:31 c5 — bằng chứng sống = `đổi hằng số → test ĐỎ` (phép đột-biến trên artifact), KHÔNG phải `vết sổ`/`vết chạy`/`run-record`/`mốc nén` như 4 vòng kia.
3. F2:45 — `Máy quét là phần tuỳ chọn — luật + câu hỏi cửa-duyệt mới là phần chuyển được sang mọi dự-án.` ⇒ phần chạy-theo-nhịp (máy quét cuối phiên) là TUỲ CHỌN; phần bắt buộc là LUẬT + câu hỏi cửa-duyệt.
4. F2:43 — câu hỏi cửa-duyệt VERBATIM: `người duyệt thay đổi chỉ cần hỏi một câu — *"phép kiểm nào khiến con số này trượt?"* — với mọi diff có con số mang nhãn đo-lường.`
- Giới hạn máy F2:49: `**Máy chỉ đo SỰ CÓ MẶT, không đo SỰ ĐÚNG.**` … `lưới đúng-sai là **người duyệt + bộ kiểm mẫu-dương**` — khớp c5 `máy kiểm presence, người kiểm validity`.

**(c) ⚠️ BẪY TỪ-VỰNG: chữ "sàn/floor" mang 4 NGHĨA KHÁC NHAU trong cùng bộ 3 file** — lấy sai = spec sai:
| # | Nghĩa "sàn" | Vết |
|---|---|---|
| S1 | **function-floor per vòng** = cột `Action adopt tối thiểu` | F3:25 header + F3:27-31 c4 |
| S2 | **"bốn phép sàn (phép 1 đến 4)"** = self-check #1-#4 của phần B — **KHÔNG phải vòng 1-4** | F3:60 |
| S3 | **tên riêng của vòng 5** ("Sàn-sự-thật") | F3:31 c1 · F2:15 |
| S4 | **floor 3-vế của dòng-nợ** (bên trong phép 2) | F3:46 `Floor bắt buộc là ba vế theo phần dòng-nợ của khung: trạng thái nhịp kiểm · cờ vượt trần bộ nhớ · số run chưa gom.` |

**(d) Completeness-gate VERBATIM** F3:60: `**ĐẠT** = có mặt đủ **năm vòng ở mức chức-năng** VÀ vượt **bốn phép sàn (phép 1 đến 4)**. Phép 5 đến 8 là khuyến nghị mạnh, chưa vào sàn.`
Phạm vi gate F3:62: `Gate này chỉ áp cho dự án ĐÃ adopt cadence hai-đầu-phiên và lớp soi-lead. Dự án chưa adopt: SKIP hợp lệ toàn bản, ghi n/a — không tính là CHƯA-ĐẠT.`
⇒ **"vòng 1-4" ⟂ "phép sàn 1-4" là HAI TẬP KHÁC NHAU** (phép 1 = `Chuỗi tick so với cửa` F3:45 · phép 2 = `Dòng-nợ đọc được ở mọi cửa và mọi điểm dừng` F3:46 · phép 3 = `Closeout thiếu nghi-thức` F3:47 · phép 4 = `Vai đã chạy thì phải có sổ — soi theo VAI (per-ROLE)` F3:48).

---

## SURPRISES (ngoài câu hỏi chính)
1. **F3:33 loại-trừ "bộ đếm nhịp + dòng-nợ" khỏi tập vòng** — nếu spec SE đếm nó thành vòng-6 sẽ lệch khung ngay.
2. **Vòng 4 là vòng DUY NHẤT có nấc `executed-file`** (F3:30 c6) — 4 vòng kia đều `runtime` thuần ⇒ tiêu chí chứng-minh-sống của vòng 4 KHÔNG cùng dạng.
3. **Cấm chép con số 5/4**: F1:96 `Số vòng **không phải hằng-số vũ-trụ**. Đừng chép con số 4.` · F2:51 `**Con số "thứ năm" không phải hằng-số vũ-trụ.**` … `Cái chuyển được là NGUYÊN-TẮC … không phải số đếm.`
4. **Vòng 1/2/4 thiếu vai KIỂM, và hub CỐ Ý hoãn**: F1:37 `**vòng 1, 2 và 4 đều thiếu một vai KIỂM**` · F1:97 `Việc thêm vai KIỂM cho vòng 1/2/4 **chủ-sở-hữu hub đã hoãn lại**: đóng đủ vòng trước, thêm vai sau. Hub **không** khuyên bạn mint thêm sub ngay.`
5. **Vòng 3 CẤM chạy song song** — F1:89 `**Với chuỗi nhiều vai kiểm-tra lẫn nhau: chạy TUẦN-TỰ, đừng song song.**` + lý-lẽ đứng bằng cơ-chế chứ không bằng cỡ mẫu (F1:99 `Lý-lẽ *"chạy tuần-tự"* đứng được **bằng cơ-chế** … **không phải bằng cỡ mẫu**.`). ⚠️ Trực tiếp đụng cách SE hay fan-out song song.
6. **Nấc của vòng 5 = `runtime`** (F3:31 c6) DÙ nó "sống TRONG artifact" — đừng suy ra `executed-file`.
7. **Phép 8 CHƯA dogfood** F3:52 `⚠️ KHAI THẲNG: phép này mới kết tinh … hub CHƯA dogfood as-is` + F3:85 — nhưng phép 8 ngoài sàn nên không chặn gate.
8. **Chuẩn 0-mutation chỉ áp nhóm chỉ-đọc** F3:43 `Chuẩn "0-mutation" CHỈ áp cho nhóm chỉ-đọc — xin khai thẳng: phép 6 cố ý phá lệnh probe, phép 7 cố ý làm bộ đếm +1.`
9. **Trục đơn-vị "phiên"** F3:55: dự án đã adopt tách phiên-logic ⇒ đọc mọi chữ "phiên" là **phiên-LOGIC**. SE đang ở trạng thái draft VC-1/2/3 chờ hub (theo memory S140) ⇒ đơn-vị đo của SE chưa chốt.

---

## KHÔNG CHẮC
1. **Vòng 4 đã đóng chưa (tại 2026-07-17)?** F1:31 ghi `🔴 chưa đóng` (mốc 07-15); F3:19 trỏ tới bản `vòng nén tầng lưu trữ (89e4d818…)` như bản NỀN đã phát ⇒ suy đoán vòng 4 đã đóng sau 07-15, nhưng **KHÔNG có câu nào trong 3 file tuyên "vòng 4 đã đóng"**. Chưa đọc `89e4d818…` (ngoài scope 3 file).
2. **`291550ff…`** (chuẩn hai-assert "bảo-toàn ≠ niêm-phong", F3:30 c5) và **`3daf5ee4…`** (khung nhịp, F3:17/19) — CHƯA đọc; định-nghĩa "hai đầu phiên", "event-gate hai điều kiện", "probe rẻ" đều nằm ở khung `3daf5ee4…` chứ không ở 3 file này ⇒ **cột "Nhịp" của cả 5 vòng là POINTER, không self-contained**.
3. **"cặp" trong vòng 1 và vòng 2 gồm 2 vai NÀO** — F3 cố ý roster-agnostic (F3:19), không nêu tên vai ⇒ ánh xạ sang roster SE (tooling-auditor/harvest-curator, lead-view-auditor/lead-omission-auditor) là **suy luận của em main**, KHÔNG có trong 3 file.
4. **Vòng 5 có "vai KIỂM độc-lập" không** — bảng F1 (4 cột trạng thái) có trước vòng 5, F3 bỏ hẳn cột "Có vai KIỂM" ⇒ **không đo được từ 3 file**.
5. **Trạng-thái SE hiện tại với 5 vòng** — task cấm đọc file thứ 4 nên KHÔNG chạm repo SE; mọi kết luận PASS/FAIL cho SE là ngoài phạm vi lượt này.
6. **Sub-MD**: tao KHÔNG có Write tool (read-only tier) và luật RUN-TRACE cấm Bash-write MD ⇒ **KHÔNG tạo được khung rỗng lượt 1-2 như brief yêu cầu**; đây là mâu-thuẫn giữa brief (`sub-invest-1-vong-def.md`) và luật RUN-TRACE (read-only sub ⇒ để full-detail trong findings, em main scribe). Tao chọn theo luật RUN-TRACE. Em main scribe nội dung này vào **`D:/Dropbox/CONG_VIEC/SOLUTION/SOLUTION_ERP/.claude/workflows/runs/2026-07-24-S149-dong-du-5-vong/sub-invest-1-vong-def.md`** (tên brief muốn) hoặc `sub-investigator-codebase-0.md` (tên luật RUN-TRACE) — chọn 1, đừng ghi cả 2.
