# Nhãn lệch nghi thức + vòng hỏi ngược > **Nguồn sàn:** `broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-phu-luc-spec-pitfall.md` §GĐ-3 khoản (i)(ii)(iii)(vii) + câu kết `:208`. > **Áp @S180 wave W3.** Bóc khoản: lane C `sub-n3-lane-c-gd34.md` §E.1 · §E.2 · §F (`C3-01` · `C3-02` · `C3-03` · `C3-09` · `C3-10`). > **Phạm vi văn bản này:** cách **gọi tên** một bước nghi thức bị lệch, và cách **đóng** vòng hỏi ngược. Văn bản này **KHÔNG** định nghĩa cổng chặn hay thang mã thoát — đó là `C3-04` + khoản (v), thuộc wave **W3b**, đang chờ owner (P1). Mọi máy nhắc ở đây **INFORM, exit 0**. --- ## §0 — Vì sao cần nhãn, và vì sao AS-signature không thay được SE đã có taxonomy `AS-signature` trong `docs/governance/error-ledger.md`. Nó là **chữ ký HÀNH ĐỘNG** — *đã làm sai cái gì*. Bốn nhãn dưới đây là **nhãn Ý ĐỊNH** — *vì sao bước đó không đủ*. Hai trục **không thay thế nhau**; ánh xạ chỉ một phần (*quên* ↔ `E-011`/`AS-15` "nghi thức chạy tắt"). ⇒ Đây là **việc mới**, không phải đổi tên cái cũ. Ai định "tái dụng AS cho đủ 4 nhãn" là đang gộp hai trục khác nhau. 🔴 **Ranh của mọi máy nhắc trong văn bản này** (hub `:208`): máy đo **sự hiện diện và khuôn dạng, KHÔNG đo CHẤT**. Một bước có đủ vật mốc mà nội dung rỗng thì máy vẫn im. Nhãn do **người** đặt; máy chỉ **thu thập bốn vị từ** để người không phải đoán. --- ## §1 — Ba khái niệm nền (định nghĩa một lần, dùng suốt) | Tên | Nghĩa | Vị từ đĩa | |---|---|---| | **VẬT MỐC** | thứ hạ cánh xuống đĩa khi bước chạy đủ: một tệp, một thư mục, hoặc **một dòng in có khuôn cố định** trong vật chứng của lượt | `Test-Path <đường dẫn>` · hoặc `grep -c '' ` | | **DÒNG KHAI** | câu trong vật chứng của lượt, nói rõ bước nào bị bỏ / rút gọn **và vì sao** | `grep -n '' ` | | **ĐIỀU KIỆN CHO PHÉP** | mệnh đề **chạy lại được** trong chính tệp lệnh của cửa, cho phép bỏ bước đó | lệnh do tệp lệnh nêu; chạy lại ra `đúng`/`sai` | 🔴 **`C3-09` — guard vắng tệp PHẢI là vị từ máy.** Kiểm tồn tại rồi bỏ qua **và khai**. **CẤM** dùng mệnh đề *"cái đó chưa làm"*: mệnh đề đó sai ngay giây tệp kia hạ cánh. Ba neo đã có sẵn trên đĩa, khai tương đương, không dựng lại: - `scripts/distill-shard-probe.ps1:23` — *"khong thay memory-budget.json -> probe-loi (khong chan)"* - `scripts/mfe-eval.ps1:45` - `scripts/memory-archive-gate.ps1:40-41` --- ## §2 — BỐN NHÃN, mỗi nhãn một vị từ kiểm được trên đĩa Bốn nhãn chỉ áp cho **hàng đã bị nêu là thiếu hoặc lệch**. Bước chạy TRỌN **không sinh hàng nào** — nó không có nhãn, và đó là trạng thái thứ năm nằm ngoài bảng. | Nhãn | Vật mốc | Dòng khai | Điều kiện cho phép, **chạy lại** | Sức nặng | |---|---|---|---|---| | **quên** | **VẮNG** | **0** | *không xét* | Vá, rồi nhắc | | **tự ý bỏ** | **VẮNG** | **có** | chạy lại ra **SAI** — hoặc đặc tả **không nêu** điều kiện chạy lại được | 🔴 **Nặng nhất.** Vá · ghi `error-ledger.md` · **theo dõi tái phạm** | | **suy giảm hợp lệ** | VẮNG hoặc **rút gọn** | **có**, kèm con trỏ `file:line` tới đặc tả | chạy lại ra **ĐÚNG** | **Không tính lỗi** | | **bị chặn** | **VẮNG** | **có**, kèm con trỏ tới **nỗ lực gỡ** (lệnh đã chạy + output nhận được) | *không xét* — điều kiện nằm ngoài kho | Không tính lỗi; nhưng nỗ lực gỡ **phải có vết**, không được là lời kể | ### 2.1 — Vị từ chạy được, từng nhãn Bốn lệnh dưới đây là **bốn vị từ**, chạy trên `bash`. `$M` = đường dẫn vật mốc · `$V` = vật chứng của lượt · `$B` = mã bước. ```bash # (1) vat moc co mat khong -> 0 = VANG test -e "$M" && echo 1 || echo 0 # (2) co dong khai cho buoc $B khong -> 0 = KHONG KHAI grep -c -- "$B" "$V" # (3) dong khai co con tro file:line toi dac ta khong -> 0 = KHONG CON TRO grep -E -c -- "$B.*[A-Za-z0-9_./-]+\.(md|ps1|py|js|json):[0-9]+" "$V" # (4) dieu kien cho phep: chay lai chinh lenh ma dac ta neu -> in dung/sai # KHONG CO lenh chay lai duoc trong dac ta => ket qua = "khong-xac-dinh" ``` **Bảng quyết định** — đọc `(1)(2)(3)(4)` theo đúng thứ tự, dừng ở dòng khớp đầu tiên: | (1) vật mốc | (2) khai | (3) con trỏ | (4) điều kiện | ⇒ Nhãn | |---|---|---|---|---| | 1 | — | — | — | **TRỌN** — không sinh hàng | | 0 | 0 | — | — | **quên** | | 0 | ≥1 | 0 | — | **tự ý bỏ** | | 0 | ≥1 | ≥1 | `sai` **hoặc** `không-xác-định` | **tự ý bỏ** | | 0 | ≥1 | ≥1 | `đúng` | **suy giảm hợp lệ** | | 0 | ≥1 | ≥1 (trỏ **nỗ lực gỡ**, không phải đặc tả) | *không xét* | **bị chặn** | ### 2.2 — 🔴 Hai chỗ luật này CỐ Ý khắt khe hơn "có khai là xong" **(a) Khai không tự miễn trừ.** Hub `phu-luc:189` viết *tự ý bỏ* gồm cả ca *"khai là 'bỏ êm' trong khi điều kiện cho phép bỏ **đánh giá lại trên đĩa là sai**"*. Nghĩa là **viết một dòng khai KHÔNG đủ để sạch** — dòng khai phải **sống sót phép chạy lại**. Nếu luật được đọc thành *"bỏ qua CÓ KHAI thì không phải lỗi"* thì bất kỳ ai cũng tự tha được bằng một câu, và cả bộ nhãn thành đồ trang trí. **(b) Mặc định khi không đo được là nhãn NẶNG, không phải nhãn nhẹ.** Cột (4) ra `không-xác-định` (đặc tả không nêu điều kiện chạy lại được) ⇒ xếp **tự ý bỏ**, **không** xếp *suy giảm hợp lệ*. Lý do: nếu chỗ mù mặc định về nhãn vô tội thì cách rẻ nhất để sạch là **viết đặc tả mơ hồ** — thưởng cho đúng thứ cần phạt. 🔸 **Khai thiếu, không giấu:** vế *"đánh giá lại điều kiện trên đĩa"* của nhãn **tự ý bỏ** hiện **CHƯA CÓ MÁY** làm tự động. Cột (4) hôm nay là **thao tác người**: mở tệp lệnh của cửa, tìm mệnh đề điều kiện, chạy lại. Máy chỉ lo `(1)(2)(3)`. Đây là **giới hạn đã biết**, không phải chỗ chưa nghĩ tới. --- ## §3 — VÒNG HỎI NGƯỢC: khuôn 5 cột + luật đóng Hub `phu-luc:191`: vai kiểm trả về một bảng; người điều phối **định đoạt từng dòng**; **không dòng nào để trống thì mới đóng được**. ### 3.1 — Khuôn (chép nguyên, không đổi tên cột) | Bước thiếu hoặc lệch | Đặc tả nói gì | Bằng chứng trên đĩa | Nhãn | Câu hỏi đích danh | |---|---|---|---|---| | `` bước `` | `:` + trích ≤1 câu | lệnh đã chạy + kết quả `(1)(2)(3)(4)` | một trong 4 nhãn §2 | 1 câu, hỏi **người điều phối**, có thể trả lời bằng *chạy bổ sung* / *khai suy giảm* / *khai không-thể-nữa* | ### 3.2 — Luật đóng (ba điều kiện, thiếu một là **chưa đóng**) 1. **Không ô nào trống.** Kể cả cột *nhãn*: không phân loại được thì ghi `chưa-phân-loại` **kèm lý do**, không để trống — ô trống đọc thành *đã xét và sạch*. 2. **Mỗi hàng có một định đoạt của người điều phối**, thuộc đúng ba giá trị: `chạy-bổ-sung` · `khai-suy-giảm` · `khai-không-thể-nữa`. 3. **Bảng đi kèm MẪU SỐ**: *N hàng / M bước được soi*. `M` phải là số bước **thật sự được duyệt**, không phải số bước tồn tại. ### 3.3 — 🔴 CẤM thay bảng bằng một con số tổng Không được đóng vòng bằng câu *"đã xử N finding"*. Con số tổng **đóng vai đã-phủ-hết** trong khi mẫu số lệch. **Ca thật, trong kho này:** S119 — lead tuyên *"vá 19 finding"* trong khi thật **23**. Bài học đã ghi: `.claude/auto-memory/feedback_meta_count_selfcoverage_blindspot.md` — *"bảng disposition TỪNG DÒNG thay số tổng"*. 🔸 Hai nguồn, một phát hiện: luật đóng của hub (*không dòng nào trống*) và bài học S119 của kho này (*từng dòng, không dùng số tổng*) là **cùng một kết luận tìm ra ở hai nơi độc lập**. Ghi lại để lần sau không ai tưởng đây là luật ngoại nhập. ### 3.4 — 🔴 `C3-02`: vai kiểm CHỈ ĐỐI CHIẾU, KHÔNG PHÁN ĐẶC TẢ - **Nguồn đối chiếu** của cột *Đặc tả nói gì* là **chính tệp lệnh của cửa đó** (`.claude/commands/.md`), không phải trí nhớ, không phải doc phái sinh. - **Đặc tả tự mâu thuẫn** ⇒ ghi nhãn `đặc-tả-xung-đột` vào cột *Nhãn*, nêu **cả hai** con trỏ `file:line`, và **trả về người điều phối quyết**. **CẤM tự phán đặc tả nào đúng.** - Tiền lệ đúng luật này đã có: `.claude/auto-memory/feedback_edit_must_predate_review.md` — *"spec tự-mâu-thuẫn → fix-mới thắng footer-cũ **+ khai trong report**"*. 🔸 `đặc-tả-xung-đột` ở đây là **giá trị của cột Nhãn**, dùng để trả việc về người. Nó **không phải** mã thoát — thang mã thoát 4 trạng thái thuộc W3b, chưa chốt. --- ## §4 — AI ghi ở đâu, KHÔNG đẻ vai mới Bảng §3 do **cặp vai đang chạy sẵn** sinh ra, **không thêm vai nào**: | Vai | Trục | Cửa spawn | |---|---|---| | `lead-gap-auditor` | hàng **thiếu** (bước không có vật mốc) | `session-start` + `session-end`, **vô điều kiện** | | `lead-stale-auditor` | hàng **lệch** (có vật mốc nhưng trỏ trạng thái cũ) | như trên | Cả hai đã spawn ở **cả hai đầu phiên** (`C3-06` — hình B @S149), tức khoản *kẹp hai đầu* của hub đã thoả ở vế vai kiểm. Việc W3 thêm là **khuôn trả về**, không phải cơ chế mới. 🔸 Hai vai này **INFORM-only, propose-only**; lead là single-writer (VERIFY → APPEND). Bảng vòng hỏi ngược **không tự hạ cánh vào sổ** — nó là đề xuất. --- ## §5 — TIỀN KIỂM ĐẦU CỬA (`C3-05`) Hub `phu-luc:194`: *tiền kiểm chi phí bằng không, chạy ở **đầu mọi cửa**, chỉ đọc, soi **cửa đã đóng gần nhất** — chọn cửa bằng **dấu thời gian ghi TRONG tệp, không tin thời gian sửa tệp của hệ điều hành**.* - **Máy:** `scripts/tien-kiem-cua.ps1` — chỉ đọc, **luôn exit 0**, in một dòng `TIEN-KIEM:`. Lỗi bất kỳ ⇒ in `tien-kiem loi (khong chan)` rồi đi tiếp. - **Vì sao không tin `mtime`:** hook `wal:` chạm tệp ở biên mỗi lượt; `git checkout` viết lại `mtime` hàng loạt. `mtime` trả lời *"tệp bị chạm lúc nào"*, không trả lời *"cửa đóng lúc nào"*. Dấu thời gian **trong** tệp thì không bị hai thứ đó làm trôi. - **Nguồn dấu thời gian trong tệp** (đọc, không ghi): `.claude/WAL.md` dòng `updated:` · `.claude/governance/.session-counter.json` khoá `last_ticked_at` + `last_ticked_session` + `last_ticked_head`. - **Độ phủ + trần chi phí:** xem `docs/governance/adap-upgrade-pack-tracking.md` và bản ghi lượt W3. **Số cửa và số phủ KHÔNG chép ở đây** (B1) — đo lại bằng `ls -1 .claude/commands/*.md | wc -l`. 🔴 **`C3-08` — trần chi phí cho cửa hay dùng: `KHÔNG ĐO ĐƯỢC`.** Kho này có doctrine *"đo BYTE, CẤM quy token"* (S158) nên không in được số token cho một cửa. Adopt ở dạng **hướng dẫn + nghĩa vụ khai**: ai thêm bước vào `/pause` · `/tiep` phải **đo wall-clock trước** (luật đã có sẵn: `.claude/commands/check-email.md:41`) và **khai con số đo được**. Đây là **khai báo, không phải thuốc** — đúng chữ hub `:185`: *"Không có dụng cụ đo thì khai KHÔNG ĐO ĐƯỢC, đừng in số bịa."* --- ## §6 — Ngoài phạm vi văn bản này | Khoản | Vì sao ngoài | |---|---| | `C3-04` cổng chặn bằng mã lỗi | wave **W3b**, chờ owner chốt (P1). Mọi máy W3 giữ **exit 0 / INFORM** | | khoản (v) thang mã thoát 4 trạng thái | hình dạng đổi theo phương án P1 ⇒ làm trước là làm lại (lane C §E.3) | | khoản (vi) luật tự trị ba bậc | cần owner gật nội dung (P5); đích **NGUỒN** dự kiến `.claude/governance/ACTIVE-MARKS.md`, các nơi khác **TRỎ** về, cấm chép (chống nguồn-đôi `C3-07` ⟂ `ST-002`) |