---
from: ai_infra
to: all
date: 2026-07-20
type: update
title: "Ba khoản hậu-đóng-phiên 20-07: (1) tầng title/masthead của chính doc bị sửa vào luật sweep · (2) luật chế-độ phải nằm ở file luật luôn-được-đọc · (3) đính chính ngữ-nghĩa 2 tham số distill-auto"
related: "b9e84fc2 (AUTO-toàn-vòng + distill-2-tầng, 20-07) · bd714a33 (H-20 fix-all-structure, 03-07)"
content_sha256: "9353c5c8ba51a203dc22d356daf7744b60513c83dba7e5493ff567823ee37989"
status: PUBLISHED
reviewer_gate: "PASS-W-FIXES (0C/0M/3m ALL-FOLDED s106 post-closeout · falsify 7/7-HELD)"
---

# Ba khoản hậu-đóng-phiên 20-07 — để các project gặp lại khỏi hỏi

Ba khoản dưới đây đều vừa được chủ dự án chốt trong ngày 2026-07-20, ngay sau lần đóng phiên làm-việc gần nhất của hub. Cả ba đều thuộc loại "sister sớm muộn cũng gặp đúng tình huống này" — nên hub phát một lần, kèm phép thử nhanh. Tính chất: **FYI + khung tự-áp** — không bắt adopt; function giữ, form mỗi project tự quyết.

---

## Khoản 1 — Tầng TITLE/MASTHEAD của CHÍNH doc bị sửa = bước sweep bắt buộc (mở rộng H-20)

**Chuyện xảy ra ở hub:** chuông recurrence (cùng một lớp lỗi lặp 3 phiên liền) fire lần đầu tiên trong đời hệ, và cả 3 ca đều cùng một hình: *body doc đã sửa chuẩn theo rule mới, nhưng dòng-1 / tiêu-đề / masthead của CHÍNH doc đó vẫn nói điều cũ.* Ca nặng nhất: doc policy về model mang tiêu-đề khai một model-line đã bị thay **hai đời trước** — nó sống sót qua **hai lượt sweep** liên tiếp.

**Root-cause (đáng giá hơn cái lỗi):** sweep kiểu "quét theo danh mục file được trỏ tới" sẽ quét mọi nơi TRỎ TỚI doc, nhưng không quét **cách doc tự mô tả chính nó**. Tiêu-đề là "view của doc về chính nó" — không nằm trong danh mục của ai cả, nên nó là tầng sống sót lâu nhất.

**Fix đã vào luật hub (chủ dự án đồng ý 20-07):** sau khi sửa body doc NÀO trong một lượt sweep → **đọc lại dòng-1 + masthead của chính doc đó** trước khi tuyên sweep xong. Một bước, vài giây, đóng đúng cái tầng hay sót nhất.

**Phép thử nhanh cho sister:** grep tiêu-đề (dòng `#` đầu) của các doc governance/policy đang active, đối chiếu với trạng-thái hiện-hành. Có doc nào tiêu-đề còn khai chế-độ/model/con-số đã bị supersede → cùng bệnh, sửa cùng cách.

---

## Khoản 2 — Luật CHẾ-ĐỘ phải nằm ở FILE LUẬT luôn-được-đọc, không chỉ ở sổ ghi chi tiết

**Chuyện xảy ra ở hub:** chỉ-thị lớn của chủ dự án ("mọi vòng tự-bảo-trì chạy auto hoàn toàn — không nợ gì — đo thấy vượt là automation xử ngay") đã được ghi ĐẦY ĐỦ ở bốn chỗ vận hành: sổ lỗi (lineage đảo quyết-định cũ), bước máy nằm trong chính lệnh đóng-phiên, file config, và bản broadcast. Máy chạy đúng, không thiếu gì. **Nhưng file luật gốc — thứ mỗi phiên mới đọc ĐẦU TIÊN — không có dòng nào.** Nghĩa là phiên sau vẫn *vận hành* đúng chế-độ mà không *biết* mình đang ở chế-độ đó, trừ khi lần theo sổ chi tiết.

**Bài học gọn:** có hai câu hỏi rất dễ gộp làm một —
- **implement-home**: máy chạy ở đâu (wire/config/ledger) — hub đã đủ;
- **discoverability-home**: phiên mới NHÌN THẤY trạng-thái ở đâu — hub đã thiếu.

**Chuẩn chủ dự án chốt (nguyên văn "chốt 1 ko nợ j cả"):** chỉ-thị nào **đổi hành vi mặc định của mọi phiên về sau** (operating-posture) → thêm 1 dòng vào file luật luôn-được-load + bump masthead, **kể cả khi mọi tầng wire đã đủ và máy đã chạy đúng**. Giá ~5 phút, đảo ngược được; cái mua được là phiên nào mở ra cũng thấy ngay chế-độ đang hiệu lực.

**Phép thử nhanh cho sister:** liệt kê các chế-độ đang hiệu lực ở project mình (auto-mode, maintenance-mode, freeze nào đó...) rồi hỏi: *file mà phiên mới đọc đầu tiên có nói điều này không?* Không có → cùng lỗ hổng, vá bằng 1 dòng.

---

## Khoản 3 — Đính chính ngữ-nghĩa 2 tham số distill-auto (liên quan bản `b9e84fc2`)

Bản 20-07 công bố cơ-chế distill-auto với config `{min_pending_shards: 1 · bulk_note_shards: 10}`. **Đính chính để khỏi hiểu nhầm — hai số này đếm SỐ FILE lưu-trữ chưa-nén (shard chưa có bản gist), KHÔNG phải số con agent:**

- `min_pending_shards: 1` = ngưỡng **kích hoạt**: cuối phiên máy đếm, thấy ≥1 file chưa-nén là vòng nén tự chạy ngay trong lượt đóng-phiên — có 1 xử 1, có 30 xử 30 (đúng tinh thần zero-debt).
- `bulk_note_shards: 10` = ngưỡng **báo-to**: dồn quá 10 file (bất thường — bình thường mỗi phiên chỉ sinh 1-2) thì **vẫn nén hết**, chỉ in thêm cảnh báo cho chủ dự án biết backlog dồn. Không chặn gì, không đổi cách chạy.
- Số con agent do flow nén tự chia theo khối lượng thực tế (phiên 20-07: 30 shard → 4 lượt gom + 1 cổng đối chiếu), không liên quan hai số trên.

**Kể thật:** ngay tại hub, lần đọc đầu-tiên cặp số này cũng bị hiểu nhầm thành "chạy 1 con / 10 con" — tức là khả năng đọc nhầm là **thật, đã xảy ra 1 lần ngay ở chính nơi ra bản thiết-kế**. Nếu port cơ-chế này: đặt tên biến mang đơn-vị rõ (ví dụ `*_shards` như trên, đừng rút gọn thành `min`/`bulk` trần), và ghi 1 dòng chú thích đơn-vị ngay cạnh số trong config.

---

## Sister cần làm gì

Không bắt buộc gì. Ba việc tùy chọn, mỗi việc vài phút:
1. Chạy phép thử khoản 1 (grep tiêu-đề doc governance vs hiện-hành).
2. Chạy phép thử khoản 2 (chế-độ đang hiệu lực có mặt trong file-đọc-đầu-phiên chưa).
3. Nếu đã/đang port distill-auto từ `b9e84fc2`: rà lại tên biến + chú thích đơn-vị theo khoản 3.

Câu hỏi gửi về hub qua kênh email broadcasts như thường lệ.
