wal: flush 20260807T1435

This commit is contained in:
pqhuy1987
2026-08-07 14:35:33 +07:00
parent a57a2f33cc
commit 69f8e74610

View File

@ -303,3 +303,117 @@ N1 (`sub-invest-fitmap-S180.md:120`) liệt nguyên liệu cho sổ: *"việc-đ
1. Cột *lời nguyên văn* **chỉ nhận chữ anh gõ**, và chỉ **từ thời điểm dựng sổ trở đi**.
2. Dữ liệu cũ từ WAL / HANDOFF / auto-memory / migration-todos vào **phụ lục riêng của sổ**, cột riêng, nhãn rõ là *suy ra, không phải nguyên văn*.
3. **Ngoại lệ duy nhất được đề xuất:** bảng `HANDOFF:10-17` — vì cột *Nguyên văn* của nó **đã là nguyên văn thật** (kiểm được bằng đối chiếu bản ghi phiên). Nhập bảng này thì hợp lệ; nhập bất cứ thứ gì khác thì không. 🔴 **Đây là đề xuất, cần anh gật** — vì nó là ngoại lệ đầu tiên và mọi ngoại lệ sau sẽ viện nó.
---
## §D — SỔ-3-KHỐI: hình dạng đề xuất (khối nào · ghi gì · AI ghi · ghi LÚC NÀO)
> Đây là **bản vẽ đề xuất**, không phải bản thi công. Hình dạng cuối phụ thuộc anh chọn PB-1/PB-2/PB-3 ở §B.5 — cột *trạng thái* và cột *con trỏ* đổi theo phương án.
### D.1 — Ba khối, đúng tên hub quy ước (A1 đòi *"ba tiêu đề khối tồn tại"*)
#### Khối 1 — `việc-được-giao`
| Trường | Nội dung | Ai ghi | Lúc nào |
|---|---|---|---|
| mã | `YC-<số tăng dần>`**vĩnh viễn, cấm tái dụng**; đóng thì lật trạng thái, **không xoá dòng** | lead | ngay lượt anh nói |
| lời nguyên văn | đúng chữ anh gõ, cắt theo **trần ký tự cứng** đọc từ tệp cấu hình chung | lead | ngay lượt anh nói |
| thời điểm · phiên | dấu thời gian + `S<N>` | lead | cùng lúc |
| trạng thái | mở / đóng — **hình dạng tuỳ phương án §B.5** | lead | lật lúc đóng |
| số lần đã nhắc | số nguyên, **lần đầu tính là 1** | lead ghi 1; **vai đọc sổ** tăng | tăng khi vai đọc sổ nhận ra trùng nghĩa |
| con trỏ | trỏ tới nơi việc đang nằm (WAL / run-folder / commit) | lead | khi việc được nhận |
| 🔴 **đội hiểu thành gì** *(trường thứ 7 — SE thêm, xem §C.4)* | diễn giải của lead, **tách hẳn khỏi cột nguyên văn** | lead | ngay khi lead diễn giải |
#### Khối 2 — `sở-thích-thường-trực`
| Trường | Nội dung | Ai ghi | Lúc nào |
|---|---|---|---|
| mã | `ST-<số>` vĩnh viễn | lead | khi anh phát biểu một sở thích |
| lời nguyên văn | chữ anh gõ | lead | ngay lượt đó |
| phạm vi được làm thẳng | liệt kê loại việc | lead | cùng lúc |
| **lằn ranh đỏ vẫn phải hỏi** | 🔴 **LIỆT KÊ TỪNG LOẠI, cấm tính từ** (A6) | lead | cùng lúc |
| lý do anh đã lường trước | ghi nếu anh có nói | lead | cùng lúc |
| thời điểm · trạng thái | — | lead | — |
**Hai mục mồi bắt buộc** (hub `thu-chinh:201`; nghiệm thu đòi `grep -c '<tiền-tố>' <sổ>` ≥ 2):
- `ST-001` — cho phép làm thẳng trong phạm vi việc thường ngày. **Lằn ranh đỏ đề xuất, liệt từng loại** — SE có sẵn nguyên liệu, không phải bịa: đổi lược đồ dữ liệu (migration) · xoá dữ liệu · việc hướng ra ngoài (email/broadcast/adap-report) · việc không lùi được (deploy prod, wipe) · việc dính tiền · **đổi cơ chế governance** (SE-đặc-thù, `feedback_derived_flush_execution`) · **đổi con số nhịp/ngân sách** (SE-đặc-thù, quyền anh).
- `ST-002` — cho phép tự trị khi anh vắng. 🔴 **Nội dung phải là luật ba bậc của GĐ-3** — xem §E.3, và xem cảnh báo nguồn-đôi ở §F.2.
#### Khối 3 — `lời-phàn-nàn`
| Trường | Nội dung | Ai ghi | Lúc nào |
|---|---|---|---|
| mã | `PN-<số>` vĩnh viễn | lead | ngay lượt anh phàn nàn |
| lời nguyên văn | chữ anh gõ | lead | ngay lượt đó |
| chủ đề gộp | nhãn gộp để đếm lặp | **vai đọc sổ** | cuối phiên |
| thời điểm · phiên | — | lead | ngay lượt đó |
| số lần lặp | — | **vai đọc sổ** | cuối phiên |
**Đo trạng thái SE hôm nay cho khối 3:** `grep -rln "sở-thích\|phàn nàn" .claude/commands/ docs/governance/*.md` = **0 hit** (N1 đo, N2 tái lập tách vế bằng ripgrep, control-dương *"điểm dừng"* = **5 tệp** — N2 sửa số control của N1 từ 3 lên 5). ⇒ **khối này SE trống tuyệt đối**, không có gì để migrate, dựng mới hoàn toàn.
### D.2 — AI ghi: phân vai đề xuất, và chỗ nó đụng roster
| Việc | Vai | SE đã có vai chưa? |
|---|---|---|
| ghi NGAY lời anh vào khối 1/2/3 | **lead (em-main)** | ✅ có — nhưng **kỷ luật chưa thành văn**, phải cắm vào tệp luôn nạp (§D.3) |
| tăng *số lần nhắc* · gộp chủ đề phàn nàn · đếm độc lập tầng 2 | **vai đọc sổ** — 4 thấu kính | ❌ **CHƯA CÓ** — đẻ vai mới ⇒ **VƯỢT-KHUNG** (đụng roster + `hmw.js` VALID_ROLES + GĐ-6 điều-kiện-vào-danh-sách trọn-gói-1-commit) |
| kiểm PHÉP ĐẾM ở tầng 3, **cấm đề xuất điểm khác** | **vai soi vai** | 🟡 SE có **họ hàng gần**: `ring2-audit` (soi lại vai kiểm) + cặp `lead-stale-auditor`/`lead-gap-auditor`. Gán thêm nhiệm vụ hay đẻ vai mới = **quyền anh** |
| quyết điểm cuối (tầng 4) | **anh** | — |
🔴 **Khoản "thu hẹp vai cũ cùng lượt"** (hub `thu-chinh:206`): phải đo xem vai nào của SE đang soi phần *yêu cầu của anh*. **CHƯA ĐO** — cần: `grep -rln "yêu cầu của anh\|owner-request\|lời anh" .claude/agents/*.md` kèm control-dương. Nếu có chồng lấn thì phải chuyển giao **trong cùng một lượt** và ghi rõ phần đã chuyển.
### D.3 — Ghi LÚC NÀO: hai kỷ luật, và chỗ cắm phải đúng
Hub `phụ lục:252` cấm rất rõ: *"**Cấm cắm vào tệp lệnh của một cửa**: tệp lệnh chỉ được đọc khi tới cửa, nên cắm ở đó là chấp nhận mất mọi câu nói giữa hai cửa."*
**Chỗ cắm hợp lệ của SE — đo được, có hai ứng viên:**
| Ứng viên | Có luôn được nạp mỗi lượt không? | Bằng chứng |
|---|---|---|
| `CLAUDE.md` (gốc repo) | ✅ | tự khai *"project instructions, checked into the codebase"*, nạp mọi lượt |
| `.claude/auto-memory/MEMORY.md` | ✅ | tự khai *"user's auto-memory, persists across conversations"*, nạp mọi lượt |
| `.claude/commands/*.md` | ❌ **CẤM** | đúng thứ hub cấm — chỉ đọc khi tới cửa |
⇒ Hai kỷ luật (**ghi NGAY** · **tra sổ TRƯỚC khi hỏi**) phải cắm vào một trong hai tệp trên. A3 còn đòi tìm được luật *tra-sổ***tối thiểu hai chỗ**: tệp luôn nạp **và** tài liệu hướng dẫn nội bộ của đội (SE: `docs/rules.md`).
**Định nghĩa A5 phải viết kèm, không được ghi chung chung** (hub `Phần C:300`): *hỏi lại mà **không viện dẫn được thông tin mới nào** là vi phạm; hỏi lại **kèm thông tin mới và trích được nguồn** là kỷ luật đúng.* SE có họ hàng nhưng **chưa thành văn** — N1 khai `grep "viện dẫn"` auto-memory = **0 hit**, N2 tái lập bằng ripgrep, control-dương `How to apply` = **48/61 tệp** ⇒ 0-hit này **đứng**.
---
## §E — GĐ-3: ba món N1 nêu thiếu — bóc từng món, và SE dựng thế nào cho khớp nghi thức hai đầu đang chạy
### E.1 — Món 1: **bốn nhãn**, mỗi nhãn một vị từ kiểm được trên đĩa
Chữ hub (`phụ lục:189-192`), bóc thành bốn dòng:
| Nhãn | Định nghĩa hub | Vị từ đĩa đề xuất cho SE | SE đã có mảnh nào? |
|---|---|---|---|
| **quên** | không có dấu vết ý định nào | tệp mốc của bước **vắng** **và** không có dòng khai nào trỏ tới bước đó | 🟡 `closeout-sentinel` M5 bắt *"audit đo rồi như chưa đo"* |
| **tự ý bỏ** | bỏ mà không khai, **hoặc** khai "bỏ êm" trong khi điều kiện cho phép bỏ **đánh giá lại trên đĩa là sai** | tệp mốc vắng **và** có dòng khai bỏ, **và** phép kiểm điều kiện chạy lại ra `sai` | ❌ vế thứ hai (đánh giá lại điều kiện) **chưa có máy nào làm** |
| **suy giảm hợp lệ** | đặc tả cho phép **và** đã khai đủ bằng chứng | có dòng khai + con trỏ tới đặc tả cho phép | ✅ **CÓ VĂN HOÁ MẠNH**`nhip-no` in `probe-loi (khong chan)` · khối `ERRATA` trong WAL (3 ERRATA lead tự khai @S180) · `HANDOFF:17` (§C.3) |
| **bị chặn** | điều kiện bên ngoài, **có bằng chứng đã tìm cách gỡ** | có dòng khai + con trỏ tới nỗ lực gỡ | 🟡 có văn hoá, chưa có khuôn |
🔴 **Chỗ SE giàu hơn nhưng KHÁC TRỤC — phải khai, không được nhận vơ:** SE có taxonomy **AS-signature 20 mã** trong error-ledger. Nhưng đó là **chữ ký hành động** (làm gì sai), còn bốn nhãn của hub là **nhãn ý định** (vì sao lệch). Hai trục **không thay thế nhau**. Ánh xạ được một phần: *quên*`E-011`/`AS-15` (*nghi thức chạy tắt*). ⇒ **dựng bốn nhãn là việc mới**, không phải đổi tên cái cũ.
**Cách dựng khớp nghi thức hai đầu đang chạy:** bốn nhãn là **giá trị của một cột** trong bảng vòng-hỏi-ngược (§E.2), và cặp `lead-stale-auditor` + `lead-gap-auditor` — vốn **đã spawn vô điều kiện ở cả hai đầu** (`session-start.md:269` + `session-end.md:119`) — là chỗ tự nhiên để sinh ra bảng đó. **Không cần đẻ vai mới cho món này.**
### E.2 — Món 2: **vòng hỏi ngược**, đóng khi không còn dòng trống
Chữ hub (`phụ lục:196`): bảng năm cột — *bước thiếu hoặc lệch · đặc tả nói gì · bằng chứng trên đĩa · nhãn nào · câu hỏi đích danh*; 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**.
- **SE đã có gần nhất:** *bảng disposition từng dòng* (memory `feedback_meta_count_selfcoverage_blindspot` — bài học S119: *"'vá 19 finding' khi thật 23 = con số đóng vai đã-phủ-hết ⇒ bảng disposition TỪNG DÒNG thay số tổng"*). 🔴 **Đây là hội tụ độc lập rất mạnh**: luật đóng của hub (*không dòng nào trống*) và bài học S119 của SE (*từng dòng, không dùng số tổng*) là **cùng một phát hiện**, tìm ra ở hai nơi khác nhau.
- **SE thiếu:** khuôn năm cột cố định + **luật đóng cơ khí hoá**. Hiện là nghi thức, chưa có máy.
- **Cách dựng khớp:** cột *đặc tả nói gì* phải trỏ **chính tệp lệnh của cửa đó** (hub `:194` ràng: nguồn đối chiếu là đặc tả trong tệp lệnh, và **đặc tả tự mâu thuẫn thì gắn cờ xung đột trả người điều phối, cấm tự phán**). SE có tiền lệ đúng luật này: memory `feedback_edit_must_predate_review` ghi *"spec tự-mâu-thuẫn → fix-mới thắng footer-cũ **+ khai trong report**"* — tức SE đã từng gặp và đã xử đúng hướng.
### E.3 — Món 3: **thang mã thoát bốn trạng thái**
Chữ hub (`phụ lục:200`): *trọn · thiếu-có-tên · không-xác-định · đặc-tả-xung-đột*; *"Gộp chúng thành một mã là mất thông tin ngay tại chỗ cần nhất."*
- **SE đo được:** thang này **không tồn tại ở bất kỳ máy nào**. Nhưng §A.2 cho thấy SE **đã có sẵn mã thoát phân biệt** ở nhóm fail-loud: `h24-signal-write` dùng **2 và 3** cho hai loại lỗi khác nhau; `session-scaffold` dùng **3/4/5** cho ba nguyên nhân khác nhau; `session-counter-tick` dùng **42**. ⇒ **văn hoá mã-thoát-có-nghĩa đã có**, chỉ chưa chuẩn hoá thành một thang chung.
- **Cách dựng khớp:** thang bốn trạng thái này là thứ **phụ thuộc trực tiếp vào phương án anh chọn ở §A.6**. Với PA-3 thì thang nằm ở **dòng in**; với PA-1/PA-2/PA-4 thì nằm ở **mã thoát**. 🔴 **Không thi công món này trước khi anh chốt §A.6** — làm trước là làm lại.
### E.4 — Ba món khác của GĐ-3 mà N1 **không** liệt vào nhóm thiếu, lane C bổ sung
- **PL3-(vii) guard vắng tệp phải là vị từ máy** — N2 F-07a đã bắt N1 bỏ sót. Lane C xác nhận và bổ sung: SE **giàu vị từ đĩa**, đây là khoản dễ khai tương đương (`Test-Path` rải khắp; `distill-shard-probe.ps1:23` là mẫu chuẩn: *"khong thay memory-budget.json -> probe-loi (khong chan)"*).
- **TC3-L8 trần chi phí cho cửa hay dùng** — SE **KHÔNG ĐO ĐƯỢC** (khớp TC-10 của chính hub). Doctrine SE: *"đo BYTE, CẤM quy token"* (S158). Nếu adopt thì trần = **hướng dẫn + nghĩa vụ khai khi vượt**, đúng chữ hub `:185` (*"Không có dụng cụ đo thì khai KHÔNG ĐO ĐƯỢC, đừng in số bịa"*).
- **TC3-L5 tiền kiểm ở đầu MỌI cửa** — hub đòi **liệt kê từng cửa**, cấm ghi gộp. N1 mới chắc ở `/tiep` + `/session-start`. **CHƯA ĐO** cho `/check-email`, `/adap-apply`, `/adap-report`, `/pause`, `/session-end` — cần: `grep -n "probe\|Sàn-3\|san-3\|nhip-no" .claude/commands/check-email.md .claude/commands/adap-apply.md .claude/commands/adap-report.md`.