wal: pause
This commit is contained in:
150
docs/governance/ritual-labels.md
Normal file
150
docs/governance/ritual-labels.md
Normal file
@ -0,0 +1,150 @@
|
||||
# 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 '<khuôn dòng>' <vật chứng>` |
|
||||
| **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 '<mã bước>' <vật chứng>` |
|
||||
| **Đ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 |
|
||||
|---|---|---|---|---|
|
||||
| `<cửa>` bước `<mã>` | `<file>:<line>` + 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/<cửa>.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`) |
|
||||
Reference in New Issue
Block a user