---
id: 2026-07-17-Governance-checklist-nam-vong-va-kiem-audit-xuyen-session
from: ai_infra
to: all-fit
targets: all-fit
category: Governance
type: new
date: 2026-07-17
re: "Owner-chốt 2026-07-17 — checklist adopt năm vòng tự-bảo-trì + bộ phép tự-kiểm 'audit có thật sự chạy khi phiên nối qua nhiều điểm dừng'. Đứng trên khung nhịp `3daf5ee4…`: khung trả lời 'chạy ở đâu', bản này trả lời 'đã đủ vòng chưa + chứng minh đang chạy'. Gồm bảng năm vòng bảy cột · phần kiểm audit xuyên session tám phép chạy chi-phí-không · completeness-gate (đạt = năm vòng chức-năng + bốn phép sàn) · ghi-chú trung-thực sáu khoản. Roster-agnostic — các vòng gọi bằng tên chức-năng của khung."
status: "🟢 PUBLISHED s102 (2026-07-17) — lead stamp post-gate"
content_sha256: "f71c5b653185404342906a8bb8404d1b103802cdd2dfd1bfb87ae4f5c660a179"
reviewer_gate: "PASS 0C/0M/1m-optional→folded (gate-wave wf_382b20e5-0af: falsify-12 ALL-HELD · 10/10 mục checklist · 7-sha verified) + B4b micro-verify annex-only PASS (11/11 khớp-vết hồ-sơ dogfood, TRƯỚC stamp) + em-main gate-outward FINAL"
---

# Owner-chốt 2026-07-17: checklist năm vòng tự-bảo-trì + cách kiểm audit chạy xuyên session

Chào các dự án. Bản này đi liền sau **khung nhịp cho các vòng tự-bảo-trì** (`3daf5ee4…`, đã công bố cùng ngày). Khung đó trả lời câu hỏi *các vòng chạy ở đâu*; bản checklist này trả lời hai câu tiếp theo — *đã đủ vòng chưa* và *làm sao chứng minh chúng đang thật sự chạy khi một phiên kéo dài qua nhiều điểm dừng*.

Owner hub chốt ngày 2026-07-17: đây là **cách làm việc hiện hành mới nhất** của cả nhóm. Các bản đã phát trước là nền — chỉ trỏ tới, không lặp lại nội dung: bốn vòng hạt nhân (`c1b138fd…`), sàn-sự-thật cho nhãn "đã-đo" (`190c11ba…`), vòng nén tầng lưu trữ (`89e4d818…`), tách phiên-logic khỏi phiên vật lý (`9234a7aa…`), và đính chính nghi thức hai đầu phiên (`85bf89ca…`). 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ữ).

## A — Bảng checklist năm vòng tự-bảo-trì

Mỗi vòng kèm nhịp chạy (theo khung), action tối thiểu để coi là đã adopt, và một phép tự-verify chi-phí-không, chạy-lại-được:

| 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 |
|---|---|---|---|---|---|---|
| 1. Cặp kiểm tooling + harvest | lỗi THIẾU: có thay đổi vật lý mà không ai báo + harvest bị quên | hai đầu phiên (mở = báo diff · đóng = chốt + gom) | cả cặp chức-năng kiểm chạy ở hai đầu, báo về lead | commit đóng phiên gần nhất CÓ vết sổ của cả cặp (mtime + commit-log) | runtime | gắn spawn vào lệnh hai đầu = cơ-chế; lead tự nhớ = quy-ước |
| 2. Cặp soi-lead (lệch nguồn + rớt việc) | lỗi THIẾU của lead — không phát tín hiệu | 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) | cả cặp chức-năng tồn tại + chạy vô-điều-kiện | ba lần đóng phiên gần nhất đều có vết chạy | runtime | quy-ước; có "detector closeout thiếu nghi-thức" thì thành cơ-chế |
| 3. Bộ ba đo → đề-xuất → kiểm trí nhớ (tuần tự) | rot/drift tích lũy + verdict sai ghi vào sổ | 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ũ) | 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ữ | 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 | runtime | ba-stage-artifact = cơ-chế; tuần tự = quy-ước |
| 4. Vòng nén tầng lưu trữ (distill) | mật độ trí nhớ tích lũy | probe rẻ hai đầu; NÉN theo ngưỡng tích lũy, KHÔNG theo phiên | mốc nén tồn tại + nén ADDITIVE (gist MỚI đặt cạnh verbatim, không đè) | 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…`) | executed-file + runtime (≥1 lần nén) | gate đối chiếu = cơ-chế; trigger = quy-ước |
| 5. Sàn-sự-thật cho nhãn "đã-đo" | nhãn đo giả ("nhãn thay cho việc đo") | sống TRONG artifact mọi lần test/ship; máy quét presence lúc đóng phiên | mọi hằng số thuộc lớp "đã-đo" có falsifier chạy được (assert-bao / negative-control) | đổi hằng số → test ĐỎ; máy kiểm presence, người kiểm validity | runtime | hai lớp máy = cơ-chế; validity-gate = quy-ước |

(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.)

Thang ở cột "Nấc" gộp hai tiền lệ đã phát của nhóm — thang {executed-file · runtime} của bản checklist ngân-sách bộ-nhớ và thang {gửi → đồng-thuận → thực-thi → kiểm-chứng} của chuỗi rà-soát adoption — nên đọc là cách hiểu hợp nhất, không phải một nguồn duy nhất.

## B — Kiểm audit chạy xuyên session (tám phép tự-kiểm chi-phí-không)

Tám phép dưới đây chia làm hai nhóm theo cách chạy:
- **Nhóm chỉ-đọc** (phép 1, 3, 4, 5, 8): tất định — chạy hai lần cho cùng kết quả, không làm đổi trạng thái nào (0-mutation).
- **Nhóm quan-sát / diễn-tập** (phép 2, 6, 7): phép 2 chỉ quan-sát tại cửa; phép 6 và 7 là diễn-tập có giới hạn, cố ý làm đổi rồi hoàn-tác (mutation-có-revert).

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. Nếu áp "0-mutation" cho cả tám phép thì chính bản này tự vi phạm chuẩn mình tuyên.

1. **Chuỗi tick so với cửa (đọc trên đĩa).** — Cách chạy ($0): đếm số cửa (cửa vào phiên + mỗi lần dừng–nối, lấy từ commit-log/marker) rồi so với delta của bộ đếm cùng kỳ. PASS: không còn cửa nào "câm" (có xảy ra mà bộ đếm không nhích) sau khi đã adopt tick đa-điểm. Ví-dụ đo của hai dự án cùng báo kẽ, giữ đúng đơn-vị nguồn của mỗi bên: một nơi 6 mã-phiên gộp thành 4 tick, nơi kia 8 nhãn-phiên gộp thành 5 tick — con số phụ-thuộc-cửa-sổ-đo, dùng làm VÍ DỤ CÁCH ĐO chứ không phải hằng số để chép.
2. **Dòng-nợ đọc được ở mọi cửa và mọi điểm dừng.** — Cách chạy ($0): mở cửa/điểm-dừng gần nhất, kiểm có đúng một dòng chỉ-đọc. 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. Form bốn-field mà hub đang dùng {nhịp-kiểm gần nhất · lớp kiểm nóng · cờ trần bộ nhớ · run chưa gom} chỉ là VÍ DỤ cách trình bày của hub, KHÔNG phải floor — dự án tự chọn form, miễn đủ ba vế. PASS: dòng tồn tại tại cửa/điểm-dừng gần nhất. Suy biến: cửa sổ đo không có điểm dừng nào → ghi n/a-hợp-lệ kèm ghi chú, KHÔNG tính FAIL oan.
3. **Closeout thiếu nghi-thức.** — Cách chạy ($0): lấy ba lần đóng phiên gần nhất; mỗi lần phải kèm vết delta của các sổ nghi-thức bắt buộc. PASS: cả ba đều có — thiếu bất kỳ cái nào là FAIL. (Đây chính là chỗ bịt lỗ "ba closeout chạy tắt mà máy im".)
4. **Vai đã chạy thì phải có sổ — soi theo VAI (per-ROLE).** — Cách chạy ($0): đếm từ run-artifact những vai đã chạy ít nhất một lần; mỗi vai như vậy phải có sổ riêng tồn tại. PASS: mọi vai đã-chạy đều có sổ. Lưới soi theo RUN (per-RUN) không thay được phép này.
5. **Probe hai đầu chạy-lại-được.** — Cách chạy ($0): chạy lệnh probe hai lần liền nhau. PASS: output y hệt, không làm đổi trạng thái nào (0-mutation).
6. **Giết probe thì điểm dừng vẫn sống.** — Cách chạy ($0): cố ý làm hỏng lệnh probe (mutation có hoàn-tác) rồi thực hiện một điểm dừng. PASS: điểm dừng vẫn hoàn tất và in "probe-lỗi (không chặn)". Dòng-nợ KHÔNG BAO GIỜ được phép chặn điểm dừng.
7. **Dừng–nối một lần thì bộ đếm +1.** — Cách chạy ($0): thực hiện đúng một lần dừng rồi nối lại. PASS: bộ đếm tăng đúng 1 — xác nhận tick đa-điểm đang hoạt động.
8. **Đối chiếu đóng-sổ với khối-lượng-việc.** — Cách chạy ($0): trong một cửa sổ đo, đếm việc thật (commit đích danh / lượt ship) giữa hai lần kiểm; nếu một closeout gộp sổ từ hai phiên-dừng trở lên thì lượt force-fire bù phải chạy ngay tại closeout đó — bản thân phép chỉ ĐỐI-CHIẾU lịch sử, KHÔNG tự chạy force-fire. PASS: mọi closeout gộp ≥2 phiên-dừng đều có lượt bù chạy kèm. ⚠️ KHAI THẲNG: phép này mới kết tinh từ nguyên liệu của hai dự án cùng báo kẽ — hub CHƯA dogfood as-is (xem annex).

**Ghi chú về đơn-vị (hai trục tách biệt):**
- *Trục đơn-vị "phiên":* dự án nào đã adopt hướng tách phiên-logic khỏi phiên vật lý thì đọc mọi chữ "phiên" ở trên là **phiên-LOGIC**; dự án chưa adopt thì đọc là phiên thường.
- *Trục suy-biến:* phép 1 và 7 chỉ suy-biến-vô-hại với dự án **ít hoặc không dùng điểm dừng** — KHÔNG được suy ra từ việc "chưa adopt session-model". Hai dự án báo kẽ tuy chưa adopt session-model nhưng lại dùng dừng–nối rất dày, nên với họ phép 1 và 7 là phép SỐNG (chính họ sinh ra phép 1).

## C — Completeness-gate

**ĐẠ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.

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.

## D — PROJECT-FIT + ghi-chú trung-thực (sáu khoản)

- Dự án ít dùng điểm dừng: bảng vẫn áp bình thường; phép 1 và 7 suy-biến-vô-hại (một cửa duy nhất = mở phiên), các phép còn lại giữ nguyên giá trị.
- Dự án chưa adopt cadence/lead-audit: SKIP hợp lệ toàn bản, ghi n/a.
- Con số trong mọi ví-dụ là số đo của dự án báo cáo — bạn tự đo trên đĩa của mình trước khi kết luận.

**Ghi-chú trung-thực:**
(i) Nền mới là hai dự án chị em cộng một-hai phiên-logic đầu tiên phía hub — mẫu còn nhỏ.
(ii) Van "kiểm giữa phiên khi phiên-logic quá dài" vẫn TREO, hub chưa đặt được ngưỡng-số.
(iii) Dòng nhịp-nợ phía hub mới wired hôm nay; trạng thái fire-live ghi ở annex-dogfood bên dưới (điền ở bước sau).
(iv) Số trong ví-dụ = số của dự án báo cáo; hãy tự đo trước khi kết luận mình có cùng kẽ.
(v) Phép 3 (closeout thiếu nghi-thức) dùng proxy hai-nguồn (mtime + commit-log) — không phân biệt được "không chạy" với "có chạy mà không ghi sổ"; nhưng cả hai đều là lỗi nên vẫn bắt đúng.
(vi) "Đắt/rẻ" là tương đối theo đo của từng dự án, không phải con số chuẩn.

## ANNEX — dogfood (hub tự chạy, điền kết quả THẬT ở bước sau)

> Ba mục dưới đây là kết quả chạy THẬT của hub (2026-07-17, chạy trước khi bản này được đóng dấu công bố). Phép 8 chưa chạy — khai thẳng, không suy đoán kết quả.

- **Phép 5 — probe hai đầu chạy-lại-được: ✅ PASS.** Bộ probe của dòng nhịp-nợ (ba thành phần: trạng thái nhịp kiểm · cờ trần bộ nhớ · run chưa gom) chạy hai lần liền nhau → output y hệt cả ba thành phần; trạng-thái worktree (hash danh sách file thay đổi) trước và sau trùng nhau = 0-mutation. Khai thêm cho đủ: một thành phần dùng exit-code làm cờ báo vượt trần (không phải crash) — exit-code đó cũng lặp y hệt giữa hai lần chạy.
- **Phép 2 — dòng nhịp-nợ fire live: ✅ PASS, ghi đúng mức.** Dòng nợ đã in thật ba lần tại ba điểm dừng/nối liên tiếp trong phiên-logic hôm nay (một checkpoint giữa phiên · một lần dừng · một lần nối). Output console không persist trên đĩa — bằng-chứng persist đầu tiên là chính hồ-sơ chạy kèm bản này; hai lần chạy probe ở phép 5 tái-tạo đúng các giá trị của dòng nợ.
- **Phép 6 — giết probe, điểm dừng vẫn sống: ✅ PASS.** Cố ý gọi probe với tham-số không tồn tại → lệnh lỗi thật (exit khác không) → flow in đúng chuỗi "probe-lỗi (không chặn)" và lệnh kế tiếp vẫn chạy — điểm dừng hoàn tất bình thường. Diễn-tập có giới hạn: lệnh sai không ghi gì, trạng-thái worktree giữ nguyên (đo cùng lượt với phép 5).
- **Phép 8 — đối chiếu đóng-sổ vs khối-lượng-việc:** CHƯA dogfood as-is; caveat "mới kết tinh, hub chưa chạy" giữ nguyên cho tới khi có lượt chạy thật.

— ai_infra (hub), 2026-07-17
