wal: flush 20260807T1523
This commit is contained in:
@ -50,6 +50,21 @@ Anh chọn phương án **đắt nhất nhưng khó sót nhất** — đúng ch
|
||||
🔸 **Khai đánh đổi anh đã chấp nhận:** GĐ-0/GĐ-1 là phần nhẹ ⇒ **giá trị thấy được sẽ chậm hơn** so với việc chạy thẳng wave chữa bệnh đang mắc nặng (LỚP-2/6/8/9 đo được hôm nay). Đổi lại: **0 nhảy cóc ⇒ 0 nợ điều-kiện-vào**, và bản báo cáo gửi ngược hub sẽ sạch nấc.
|
||||
⇒ N4 vẫn phải chia **đủ 7 wave**, nhưng xếp **tuần tự**; wave nào chạy hết phiên thì **dừng đúng ranh nấc**, không ăn lẹm sang wave sau.
|
||||
|
||||
### 🔴 4 QUYẾT ĐỊNH OWNER ĐỢT 2 @S180 (AskUserQuestion sau N4 — ràng buộc W0/W3b/W4/W4b)
|
||||
|
||||
🔴 **Anh chọn phương án THAM VỌNG HƠN ở 3/4 câu**, ngược khuyến nghị của lead. Hướng chung: **nhận ĐỦ hình dạng hub, không nhận bản rút gọn.** Lead ghi hệ quả một lần rồi thi hành đủ, **không bàn lại** (nguyên-tắc: anh tái khẳng định = quyết định của anh).
|
||||
|
||||
| # | anh chốt | lead đề | hệ quả ràng buộc |
|
||||
|---|---|---|---|
|
||||
| **P6** | **Mở INBOUND cho cả fan-out** (rẻ, additive) | cùng | ✅ **W0 mở khoá**. `_index.md` nhận CẢ 2 kênh; **KHÔNG dựng sổ 2, KHÔNG gỡ 22 dòng** (tránh lằn-ranh xoá-dữ-liệu) |
|
||||
| **P1** | **PA-2 — hai mã thoát trong MỘT máy** | PA-1 | W3b phải **phân loại ~70 cờ** thành chặn/cảnh-báo **từng cờ một**. Đắt hơn PA-1 nhưng **sát ý hub nhất**. 🔴 Ranh có sẵn `memory-archive-gate.ps1:323-325` vẫn dùng làm **tiêu chí phân loại**, không vứt |
|
||||
| **P2** | **PB-2 — tách REQUEST ⟂ TASK hai tầng** | PB-1 | 🔴 **PHẢI SỬA LUẬT ĐÃ RATIFY `tiep.md:181`** (+`pause.md:115`). Anh tự sửa luật của chính mình ⇒ lead làm **tường minh, có vết lineage**, không sửa lén. Đây là điều-kiện-vào của W4 |
|
||||
| **P4** | **Đẻ vai mới VÀ nâng cap ≥ roster** | hoãn | `hmw_width.cap` **20→30** ⇒ **ĐÓNG slot (75)** treo từ S172. 🔴 Nợ kèm: vai mới **phải seed `measured{}` NGAY** (lane F: *"thêm 2 vai không seed = 10 vai mù baseline"*); và cap mirror **2 nơi**, C9 chỉ INFORM ⇒ sửa đủ 2 |
|
||||
|
||||
🔸 **Lineage đáng ghi cho P4:** slot (75) `hmw_width.cap 20 < roster 26` mở từ S172. @S179 anh trả **"OK"** và lead **tự thu-hẹp** thành *"ghi-nhận, CHƯA phải lệnh đổi số"* ⇒ giữ 20. Đó chính là ca `lead-gap-auditor` FLAG-4 bắt (*"Diễn-giải của lead, không phải chữ của anh"*). **@S180 anh nói dứt khoát "nâng cap" ⇒ lead thi hành THẬT.** Ghi lại để lần sau không tự thu-hẹp nữa.
|
||||
|
||||
🔴 **4 P còn lại CHƯA hỏi** (P3 tập-tín-hiệu ĐÓNG⟂MỞ · P5 luật tự-trị 3 bậc · P7 vị trí sổ-lượt-đắt · P8 wire khối chấm vào 2 cửa) — hỏi **1 LẦN** khi chạm W3b/W4b/W5b, đúng khuyến nghị N4 (*"hỏi ≠ thi công"*).
|
||||
|
||||
**Ràng buộc xuyên nấc:**
|
||||
- 🔴 **Ghi đĩa TRONG LÚC LÀM** — mọi vai ghi `sub-<role>-<i>.md` trong run-folder này từng phần. Phiên S180 đã có **6/6 vai dính #53**; chống-#53 = **thiết-kế ARTIFACT**, không phải prompt.
|
||||
- 🔴 **Return = KẾT QUẢ CUỐI**, cấm mô-tả-ý-định-rồi-tắt (`return CHẤM DỨT agent`).
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
# W0 lane b/2 — `broadcasts/_index.md`: mở phạm vi (P6) + bù dòng đã-nhận + ghi mã băm
|
||||
|
||||
- **Phiên:** S180 · **Vai:** reviewer (`/fable-clone reviewer`) · **Ngày:** 2026-08-07
|
||||
- **Phạm vi ghi:** CHỈ `broadcasts/_index.md` + tệp nhật ký này. Không chạm `…-fitmap.md` / `…-tracking.md` (lane a) / `docs/STATUS.md` / `docs/HANDOFF.md` / `CLAUDE.md`.
|
||||
- **Ghi đĩa liên tục** (chống #53): đo xong khoản nào append ngay khoản đó.
|
||||
- **Quyết định owner ràng buộc:** P6 = **(a) mở INBOUND cho cả hai kênh** (`outbox/se` directed + `outbox/all` fan-out). Additive: **không dựng sổ thứ hai, không gỡ 22 dòng đang có.**
|
||||
|
||||
---
|
||||
|
||||
## §0 — Trình tự CỨNG (theo `wave-plan-S180.md:35` rủi ro)
|
||||
|
||||
Sửa luật lane `:7` **TRƯỚC**, bù dòng **SAU**. Lý do: bù dòng trước khi mở phạm vi = thêm vi phạm vào chính điều luật đang có hiệu lực.
|
||||
|
||||
Trạng thái: `[ ]` B1 đo mẫu số · `[ ]` B2 sửa dòng khai · `[ ]` B3 hash 4 thư · `[ ]` B4 bù dòng · `[ ]` B5 kiểm lại.
|
||||
|
||||
---
|
||||
|
||||
## §1 — ĐO MẪU SỐ (đang chạy)
|
||||
|
||||
*(đổ ruột ngay khi có số — chưa có số thì để trống, không viết trước)*
|
||||
@ -0,0 +1,231 @@
|
||||
# wave-plan-S180 — N4 TỔNG HỢP → PLAN 7 WAVE (gói nâng cấp 7 GĐ, AI_INFRA)
|
||||
|
||||
> **Vai:** reviewer (N4, `/fable-real`, Fable 5) · **Phiên:** S180 (2026-08-07)
|
||||
> **Đầu vào:** spec + run.md + N1 fit-map (48 KB) + N2 (11 finding) + lead-verify D-LANE-01 + 6 lane N3 (A/B/C/D/E/F) — cùng thư mục.
|
||||
> **Chế độ ghi:** GHI DẦN TRONG LÚC LÀM — mỗi wave append ngay khi chốt. File này KHÔNG có heading chờ-điền; wave nào chưa xuất hiện = chưa chốt.
|
||||
> **Ràng buộc cứng:** OD-2 (đúng thứ tự GĐ-0→6, cấm nhảy cóc, cấm ăn lẹm) · mỗi wave trỏ ≥1 mã TC (không thì LOẠI — ngoại lệ duy nhất W0, khai bên dưới) · 4 ô hub để CHỮ (TC-02·03·07·10) GIỮ CHỮ · khoản VƯỢT-KHUNG tách sub-wave gated-anh · ước lượng khối lượng PHẢI kèm mẫu số · `KHÔNG ĐO ĐƯỢC` hợp lệ, bịa thì không · 2-3 xung đột triết lý: TRÌNH phương án, KHÔNG tự chọn.
|
||||
|
||||
---
|
||||
|
||||
## §Q — Quy ước dùng chung cho MỌI wave (chốt trước, wave chỉ trỏ về)
|
||||
|
||||
- **Q1 · Khuôn 7 trường mỗi wave:** `GĐ` · `điều-kiện-vào` · `TC chữa (mã)` · `deliverable (tệp cụ thể)` · `acceptance (lệnh chạy được | KHÔNG ĐO ĐƯỢC + vị-từ thay thế)` · `lớp restart A/B/C` · `rủi ro + rollback`. Kèm `khối lượng (tử/mẫu, khai mẫu số đếm CÁI GÌ)`.
|
||||
- **Q2 · Nấc & scope (đường F-03):** mỗi wave mở bằng 1 dòng **nấc "đã đồng ý"** trong tệp theo dõi: *"adopt tới đâu"* — liệt khoản VÀO scope + khoản NGOÀI scope (đi mục 8/10 báo cáo khuôn B). Thi công TRỌN scope đã khai ⇒ wave đạt nấc **đã thi công** hợp lệ; ô Quyết định fit-map giữ ĐÚNG 1 trong 3 giá trị (`áp dụng`/`không áp dụng`/`hoãn`), KHÔNG trộn. Nấc tự khai tối đa = **đã thi công** — nấc *đã được kiểm chứng* CHỈ hub cấp, CẤM tự viết (áp cả TC-03/TC-09).
|
||||
- **Q3 · Điều-kiện-vào theo OD-2:** wave k vào được ⟺ wave k−1 **đã thi công** (theo scope Q2) HOẶC phần treo của k−1 là **miễn/hoãn CÓ KHAI** (1 dòng trong tệp theo dõi + mục 10 báo cáo). Hub cho GĐ-4 kéo sớm — **KHÔNG DÙNG** quyền này (OD-2). Wave chạy hết phiên ⇒ dừng đúng ranh nấc, ghi WAL, KHÔNG ăn lẹm.
|
||||
- **Q4 · Lớp restart (lane F):** **A** = script/config ăn ngay · **B** = persona, ăn từ restart · **C** = `settings.json`/`CLAUDE.md`/`commands/*.md`, restart BẮT BUỘC. Trình tự trong 1 wave chạm nhiều lớp: A → B → RESTART → verify B → C → RESTART → verify C. Wave chạm B/C **phải có ≥1 phép đo chỉ xanh SAU restart** (ghi rõ lệnh).
|
||||
- **Q5 · Đụng máy đang sống:** sửa `governance-detectors.ps1` / `nhip-no-probe.ps1` / `session_ctx.py` = sửa máy các cửa phiên đang dùng ⇒ **fault-inject `-RepoRoot` cây tạm TRƯỚC khi land** (lỗi cấy vào → FLAG, trả lại → sạch); mọi phép 0-hit kèm control-dương.
|
||||
- **Q6 · Sự thật đã chốt (dùng, không đo lại):** GĐ-2 ≥ GĐ-5 cùng thước 8-bước (xếp hạng N1 đổ, claim thành phần đứng) · GĐ-2 mẫu số 3 cách lệch ~3× (13 khoản→42% · 8 bước→69-75% · **6 ô nghiệm thu→25%, mẫu số cấp-nấc**) · `spawn-model-audit.ps1` mù đường Task (17 lane phẳng, 168 bản ghi fable trong vùng mù, vẫn in TOTAL FLAGS: 0; H23 @S126 vẫn đứng) · `jump_on_class_repeat` fed-but-unread 0 reader (control-dương `light_every` có read `:865`) · `session_ctx_kb` + `pull_warn_days` KHÔNG phải ghost-wire · ranh fail-loud⟂advisory ĐÃ CÓ trên đĩa (`memory-archive-gate.ps1:323-325`; phạm vi thật 5 máy fail-loud + `hmw.js` 4 throw + 9 advisory + 3 biên) · `tiep.md:181` chủ ngữ là **checklist**; sổ-3-khối đo 7 hàng × 4 kho: 4 hàng TRỐNG THẬT, đụng đúng 1 cột *trạng thái* · tiền-kiểm phủ **4/19 cửa**, `/adap-apply` = 0 · GĐ-6 "chưa ĐÁNH GIÁ ĐƯỢC — thiếu vật tham chiếu" ⇒ W0 phải đẻ bản-đồ-áp-dụng · GĐ-0 không TC nào trỏ về · TC-10 = lỗ CHỮA duy nhất · TC-03/TC-09 SE không mắc (26/26 pin sạch) ⇒ `không áp dụng CÓ KHAI` · 3 lớp restart · vá jump phải chạy INFORM ≥1 phiên trước khi cho kêu to (8-12 class nợ tồn sẽ bật cùng lúc).
|
||||
|
||||
*(Các wave append từ đây xuống — W0 trước.)*
|
||||
|
||||
---
|
||||
|
||||
## W0 — GĐ-0: Tiếp nhận + bản đồ áp dụng (đóng cho ĐỦ, không đóng cho có)
|
||||
|
||||
- **GĐ:** 0. **Điều-kiện-vào:** thoả sẵn (4 món trên đĩa, hash 4/4 khớp canonical qua `scripts/stamp_verify.py`).
|
||||
- **TC chữa:** **TC-06** — 🔴 **NGOẠI LỆ CÓ KHAI.** Hub không gán TC nào cho GĐ-0 (lane E §4.3: theo chữ hub là "đồ chơi"). Lane E đưa 2 đường; N4 **chọn đường 2 — tạm gán TC-06** vì SE có ca TC-06 SỐNG ngay trong GĐ-0 (nghi thức "ghi dòng đã-nhận" bị bỏ: `grep "upgrade-pack-phased" broadcasts/_index.md` = 0, control `harness-22`=3), đồng thời **nêu cả 2 đường cho hub phán** ở mục 8 adap-report (đường 1 = hub thêm ngoại-lệ *enabling* vào luật). CẤM chép câu N1 *"điều kiện tồn tại của mọi TC"* vào ô TC (chữ-vào-ô-đòi-mã — lane E §4.3 cảnh báo đích danh).
|
||||
- **Deliverable (5, đường dẫn cụ thể):**
|
||||
1. Sửa luật lane 1 dòng `broadcasts/_index.md:7` theo **đường (a) lane A §2.5** (mở phạm vi INBOUND nhận thư đại-trà — hợp thức hoá 22 dòng đang sống; đường (b) sổ-mới+gỡ-22-dòng đắt và dễ đẻ 2-chỗ-ghi). **Cần anh gật 1 dòng (P6)** vì là sửa luật lane; hỏi NGAY đầu wave.
|
||||
2. Bù **24 dòng "đã nhận"** vào `broadcasts/_index.md` (không phải 4 — lỗ thật lane A đo 24/69, thư cũ nhất 25 ngày; 3 thư không-`to:` + 1 thư `all` xử riêng từng dòng, không gộp). Riêng 4 món gói này: kèm sha12 từ frontmatter (`43db2cf0`·`49287ce7`·`98e31fad`·`c24699f0`) + dấu ✓ từ `stamp_verify.py` ⇒ đóng luôn vế ghi-băm `G0-B2`.
|
||||
3. **Bản đồ áp dụng 7 dòng** → `docs/governance/adap-reports/upgrade-pack-phased-fitmap.md` — ô Quyết định ĐÚNG 1-trong-3 (Q2): GĐ-0 `áp dụng` · GĐ-1 `áp dụng` · GĐ-2 `áp dụng` (kết luận per-khoản hiện trạng: **chưa làm — 2/6 ô nghiệm thu**, khai mẫu số cấp-nấc) · GĐ-3 `áp dụng` (scope đã-đồng-ý: 8/10 khoản; C3-04 cổng-mã-lỗi → mục 8/10) · GĐ-4 `áp dụng` (scope: sổ 3 khối; chấm-điểm-wire → W4b gated) · GĐ-5 `áp dụng` (scope: phần thiếu; TC-03/TC-09 = `không áp dụng CÓ KHAI` per-khoản, control-âm 26/26 pin) · GĐ-6 `hoãn` (điều kiện gỡ: mọi GĐ `áp dụng` đạt *đã thi công*). Vật này chính là **vật tham chiếu** mà điều-kiện-vào GĐ-6 đang thiếu (lane D §6.1).
|
||||
4. **Tệp theo dõi 20 khoản** A0-1..A16 (liệt TỪNG khoản, cấm viết `A0..A16` dạng khoảng — A12) → `docs/governance/adap-reports/upgrade-pack-phased-tracking.md`, mỗi khoản 1 dòng {trạng thái · nấc · con trỏ} — sống lâu hơn phiên, KHÔNG nằm trong run-folder.
|
||||
5. **Adap-report tiếp nhận** (khuôn B 10 mục) — DRAFT trong phiên; mục 8 phản-biện gửi hub gồm: F-1 (4 thư `status: DRAFT`/`reviewer_gate: PENDING` ⟂ tuyên "bản nháp không phát") · GĐ-0-không-TC 2 đường · TC-10 = lỗ CHỮA duy nhất (lane E §4.4) · trường thứ 7 "đội hiểu thành gì" (lane C §C.4) · thang-mã-thoát cần điều-kiện-nơi-đọc (`hmw.js:288` dừng-câm) · xung-đột-3 A10 (tập-tín-hiệu đóng ⟂ SE mở có tiền-lệ owner S143). Chạy **7 dòng Tự-chấm-nhanh** trước khi trình. **GỬI = chờ anh duyệt** (outward).
|
||||
- **Acceptance (lệnh):** `grep -c "upgrade-pack-phased" broadcasts/_index.md` ≥ 4 · phép đối-chiếu-ngược inbox↔sổ (lane A §2.1 phép-2) in danh-sách-vắng = **0** (hôm nay 24) · `grep -c '^| GĐ-' docs/governance/adap-reports/upgrade-pack-phased-fitmap.md` = **7** (chạy trên tệp bản-đồ, KHÔNG trên khuôn — bẫy 14) · `grep -c '^| A' …tracking.md` = **20** · `python scripts/stamp_verify.py broadcasts/inbox/ai_infra/2026-08-04-*.md` exit 0.
|
||||
- **Lớp restart:** **A** (toàn docs/sổ — 0 restart).
|
||||
- **Rủi ro + rollback:** bù dòng TRƯỚC khi sửa luật `:7` = thêm 4 vi phạm vào 22 ⇒ thứ tự CỨNG 1→2. Fit-map trộn giá trị = tái phạm F-03 ⇒ khuôn Q2. Docs-only ⇒ rollback = `git revert` 1 commit.
|
||||
- **Khối lượng:** GĐ-0 = 18 khoản (mẫu số lane A: 7 bước + 3 lệnh kiểm + 4 Phần-C + 4 ô nghiệm thu), hiện thiếu 9 + 3 sai khuôn; +1 rider SE (backfill 20 thư ngoài gói — đếm RIÊNG, không cộng vào mẫu hub). Ước < 1 phiên.
|
||||
|
||||
---
|
||||
|
||||
## W1 — GĐ-1: Nền chuẩn đặt tên (chốt mở khoá — không khai miễn được)
|
||||
|
||||
- **GĐ:** 1. **Điều-kiện-vào:** W0 *đã thi công* (fit-map + tracking tồn tại). Đường `không áp dụng` ĐÃ ĐÓNG bằng đo: `vocab-alias-map.md` là **bảng dịch**, trượt cả 3 phép thử tiên-đoán/phủ-sóng/hướng (lane A §3.3); `docs/rules.md` chỉ phủ tầng mã nguồn, 4/4 hit là naming code (lane A §8.1).
|
||||
- **TC chữa:** **TC-11** (≥3 ca thật: `sub-ctx-audit-*` lọt C11(b) S153 · `_tiep-1.md` sha 7-ký-tự · "17/17" hardcode stale).
|
||||
- **Deliverable:**
|
||||
1. 🔴 **Kiểm kê máy-đọc-tên TRƯỚC, ký chuẩn SAU** (đảo bước 2 giao-thức di-trú hub — làm-KHÁC CÓ KHAI mục 6; lane A §6: ≥11 đoạn máy đọc tên, 3 đoạn suy vai bằng regex tham lam; đo nốt 5 kịch bản còn nợ lane A §7.1).
|
||||
2. **Văn bản chuẩn DUY NHẤT** → `docs/governance/naming-standard.md`: phủ **6 nhóm tên** (vai · nhãn lớp kiểm · thư mục run · tệp mốc phiên · nhãn tác vụ · tên sổ) + luật lane đơn-trị + luật giữ-nguyên-tên-cũ (frozen-set 5 vùng kế thừa alias-map) + di trú 6 bước; dòng đầu khai "bổ sung tầng bộ-máy, KHÔNG thay `docs/rules.md`" (chống 2-chỗ-tìm).
|
||||
3. **Sổ đổi tên máy-đọc** (append-only, cột **"đã quét những đâu" = lệnh + số hit thật**) → `docs/governance/rename-ledger.md`.
|
||||
4. **Máy soi tên** báo-cáo-thôi, in **mẫu số** (N nhóm / M họ đang sống) — script mới `scripts/naming-scan.ps1`, chạy tay + gọi từ bookend (wiring 1 dòng vào `session-end.md` **DỜI sang gói-C W3** để gom restart).
|
||||
5. Vá con số trôi `hmw.js` vùng `:36-40` *"11 class"* → câu trỏ khoá `lead_self_audit.flag_classes` (B1, lane A §8.2 — thật 12 = 6 view + 6 gap).
|
||||
- **Acceptance:** `grep -c '^## ' docs/governance/naming-standard.md` ≥ 6 (6 nhóm, mỗi nhóm 1 mục) · `scripts/naming-scan.ps1` in dòng `mẫu số: … nhóm / … họ` + **fault-inject**: cấy 1 tên lệch chuẩn vào cây tạm `-RepoRoot` → FLAG; gỡ → sạch · `grep -n "11 class" .claude/workflows/hmw.js` = **0** (control trước-vá = 1) · rename-ledger có cột "đã quét" với ≥1 dòng lệnh+hit thật.
|
||||
- **Lớp restart:** **A** (docs + script mới + `hmw.js`; hmw.js đọc-mỗi-spawn). Không đụng persona/commands.
|
||||
- **Rủi ro + rollback:** ký chuẩn trước kiểm kê → chuẩn không áp được mà không vỡ máy (lane A cảnh báo) ⇒ thứ tự CỨNG 1→2. Máy soi INFORM-only ⇒ 0 blast; rollback = revert docs + xoá script. **Vai giữ-chuẩn (G1-B2) = VƯỢT-KHUNG (d) → P4, KHÔNG nằm trong W1** — W1 đạt *đã thi công* không cần vai (chuẩn + sổ + máy đủ nghiệm thu; vai là tầng vận-hành về sau).
|
||||
- **Khối lượng:** GĐ-1 = 24 khoản (mẫu số lane A §3); scope W1 = 22/24 (trừ G1-B2 vai → Q4 · G1-B7 siết-cổng → W3b). Ước 1 phiên.
|
||||
|
||||
---
|
||||
|
||||
## W2 — GĐ-2: Lưới ghi đĩa + sổ mục lục vật chứng (đo NGHĨA, không chỉ đo TỒN TẠI)
|
||||
|
||||
- **GĐ:** 2. **Điều-kiện-vào:** W1 *đã thi công* (tên artifact chuẩn hoá TRƯỚC khi viết máy soi — tránh máy mới ăn tên cũ).
|
||||
- **TC chữa:** **TC-04** (nặng nhất — 10 vai #53/phiên S180; 3 run-folder không `run.md` có tên) + **TC-05** (máy 4-vị-từ cho vai điểm danh). **Rider SE-repair:** TC-08 (H24-2) + TC-06 (jump fed-but-unread) — khai là vá-máy-SE đi kèm wave, KHÔNG phải khoản hub GĐ-2 (2 mẫu số TÁCH).
|
||||
- **Deliverable:**
|
||||
1. **Máy điểm danh 4 vị-từ** trên run-folder (vắng · rỗng · **CỤT** · **NÉN-QUÁ-TAY**) — cơ-khí-hoá AS-17/AS-19 từ nghi-thức thành máy. Vị-từ CỤT/skeleton dùng **nhãn-treo-vào-heading** (lane B, 0 dương-giả): `grep -cE '^#{1,6} .*\[(ĐANG ĐO|CHỜ|TODO)'` + tỉ lệ dòng-thật/heading (lane E §8.3a — guard byte MÙ với skeleton). NÉN: so ký tự cùng đơn-vị nguồn↔đích; **không có nguồn cùng đơn-vị ⇒ in `KHÔNG ĐO ĐƯỢC`** đúng luật hub (lane E §2a).
|
||||
2. **Mục-lục-sống `runs/`** 2 tầng trỏ-không-chép (`_ledger.md` RETIRED có khai nhưng 73/88 folder không dòng ⇒ vế-phải của điểm-danh-2-nguồn đang RỖNG) + **điểm danh 2 nguồn** đĩa ⟂ mục-lục, in CHÊNH từng tên. 🔴 Nguồn-2 KHÔNG được là `run-chua-gom` (nó đọc thẳng đĩa = chính nguồn-1 — lane B); nguồn-2 = **taskList snapshot trong `run.md` ghi TRƯỚC launch**. Tên tệp trung gian mang định-danh lane (lane E §9 — va chạm tệp tạm ĐÃ xảy ra thật giữa 2 lane phiên này).
|
||||
3. **Khuôn-tối-thiểu tệp nguyên văn** thành văn (tiêu đề + model tự khai + input ghim + kết luận + END-line) + khoản **GĐ-2(v) "khai điểm mù"** (F-06): map tương-đương = closeout-sentinel (cửa-sau) + bookend @open (lượt soi đầu-phiên-sau); ghi NỢ đo được: `lead-stale-auditor.md` 0 hit `run-folder|runs/` (control `FLAG`=4) — vá persona DỜI sang gói-B W3.
|
||||
4. **Rider 1 — vá H24-2 `governance-detectors.ps1:892-897`**: segment đầu từ index 0 (hoặc nới regex nhận `^#{2,3}`) — vùng mù hôm nay L1-171 = 25/54 carry-key (46%), gồm chính `tools-whitelist-no-teeth`; máy đang in `[ok]` trên vùng chưa đọc. + bắt detector **in phạm-vi-thật vừa quét** và phân biệt `0 mẫu` ≠ `0 lệch` (lane F §10.2).
|
||||
5. **Rider 2 — vá `jump_on_class_repeat` fed-but-unread**: thêm vế thứ 3 vào `nhip-no-probe.ps1` (đọc `.session-counter.json → class_repeat.counts`, so ngưỡng 3, in `OVERDUE:jump` + liệt TỪNG class — A12). **Chạy INFORM ≥1 phiên trước mọi gate** (lane F §8-bis); khuyến nghị bật kèm **freeze-baseline** (chỉ kêu class TĂNG sau mốc) vì nợ tồn 8-12 class sẽ kêu cả nắm — khai rõ trong output lượt đầu.
|
||||
6. **Rider 3 — `secrets_sweep` phủ `runs/`**: `session_ctx.py:173/180/787` chỉ rglob `sessions/`, còn `runs/` nằm trong khối `- excluded:` của detector ⇒ vùng vật chứng ĐẮT nhất đang ngoài 2 lưới cùng lúc (lane B). Mở rộng sweep hoặc khai lý-do-miễn visible.
|
||||
7. **Rider 4 — 3 neo B1 chết trong `docs/STATUS.md`** (lệch +2 cả 3, N-3 born-dead tại `57e672f`): vá 3 neo + đổi HÌNH THỨC neo B1 sang chuỗi-tìm-được/tên-row (lane E §1.1: thuốc LỚP-5 đang xây bằng bệnh LỚP-6 — vá số suông sẽ chết lại).
|
||||
- **Acceptance:** vị-từ CỤT chạy trên 3 file chuẩn lane B → 6/0/0, 0 dương-giả · điểm-danh in `chênh: 0`; **control-dương**: giấu 1 `*-synthesis.md` → chênh 1, trả lại → 0 (lane B đã chạy mẫu) · run-folder thiếu `run.md` = 0 hoặc liệt từng tên (hôm nay 3: `S117-pe-approve-minmax` · `S117-pe-luyke-finalize` · `S144-bootstrap`) · H24-2: cấy slug giả vùng L1-171 cây tạm → detector KÊU, gỡ → IM · jump: hạ class < 3 → IM, nâng ≥ 3 → KÊU (2 chiều bắt buộc) · secrets: cấy chuỗi giả-secret vào `runs/` cây tạm → sweep bắt · 3 neo STATUS resolve bằng re-scan · **6 ô nghiệm thu GĐ-2 hub: 2/6 → 6/6** (chạy từng ô theo lệnh hub).
|
||||
- **Lớp restart:** **A** (scripts + python + docs — ăn ngay).
|
||||
- **Rủi ro + rollback:** `nhip-no-probe` gọi từ **6 cửa**, `governance-detectors` là máy `/session-end` — bề mặt nổ rộng nhất repo ⇒ **Q5 fault-inject cây tạm TRƯỚC land, backup `git checkout` 1 lệnh**; mọi máy mới INFORM-only (doctrine exit-0 giữ nguyên tới khi anh phán P1). Secrets mở rộng có thể FLAG hồi tố hàng loạt → chạy INFORM 1 phiên trước khi tính severity.
|
||||
- **Khối lượng:** mẫu số hub = **6 ô nghiệm thu GĐ-2** (hiện 2/6 — mẫu số cấp-nấc, 42%/69-75% là 2 mẫu số khác đã khai) + **4 rider SE** (đếm riêng). Ước 1-2 phiên (fault-inject chiếm phần lớn).
|
||||
|
||||
---
|
||||
|
||||
## W3 — GĐ-3 phần áp: nghi thức 2 đầu + tiền kiểm + 4 nhãn (KHÔNG đụng exit-mode)
|
||||
|
||||
- **GĐ:** 3 (scope đã-đồng-ý: **8/10 khoản** — C3-04 cổng-mã-lỗi → W3b gated · C3-08 trần-chi-phí = `KHÔNG ĐO ĐƯỢC`, adopt dạng hướng-dẫn + nghĩa-vụ-khai). **Điều-kiện-vào:** W2 *đã thi công*.
|
||||
- **TC chữa:** **TC-06 · TC-07 · TC-08**. 🔴 TC-10: W3 chỉ **KHAI BÁO trần** theo chữ hub — **không phải thuốc**; TC-10 giữ nguyên là **lỗ CHỮA duy nhất** (lane E §4.4), đã nêu ngược hub ở W0 mục 8. CẤM claim W3 "chữa TC-10".
|
||||
- **Deliverable:**
|
||||
1. **4 nhãn lệch nghi-thức** thành văn (quên · tự-ý-bỏ · suy-giảm-hợp-lệ · bị-chặn) + vị-từ đĩa TỪNG nhãn (bảng lane C §E.1) → `docs/governance/ritual-labels.md`. Khai thẳng: nhãn-Ý-ĐỊNH ≠ AS-signature 20 mã (nhãn hành-động) — dựng mới, không đổi tên cũ; vế "đánh-giá-lại-điều-kiện" của *tự-ý-bỏ* chưa có máy → khai.
|
||||
2. **Vòng hỏi ngược** khuôn 5 cột + luật đóng-khi-0-dòng-trống (hội tụ độc lập bảng-disposition-S119) — dùng bởi cặp auditor 2 đầu ĐANG có, **không đẻ vai mới** (lane C §E.1).
|
||||
3. **Bảng 19 cửa × tiền-kiểm TỪNG DÒNG** (hiện 4 chắc-có / 12 chắc-không / 3 đo nốt: `check-email`·`snapshot`·`sleep-recovery`) + thêm tiền-kiểm khuôn fail-soft nhip-no vào tối thiểu **nhóm `adap-*`** (ca LỚP-2 sống: `/adap-apply` — chính cửa áp gói này — 0 tiền kiểm) + cổng ép-seed cho `/snapshot` (nợ mới lane F §3.3) — sửa `commands/*.md` = **lớp C**.
|
||||
4. **Luật tự-trị 3 bậc** thành văn — **MỘT bản NGUỒN** tại `.claude/governance/ACTIVE-MARKS.md` (khối mới, mang RC-mark anh — cần **P5** gật nội dung); ST-002 của sổ W4 sẽ **TRỎ** về đây (chống nguồn-đôi C3-07 ⟂ ST-002 — lane C §F.2 lỗ-1). ACTIVE-MARKS hiện là uỷ-quyền-per-quyết-định, KHÔNG phải luật 3 bậc (lane C §F.1 đo 0-hit, control 19).
|
||||
5. **Gói-B persona** (gom 1 lần restart): `lead-stale-auditor.md` vá 4 tầng lỗi (ví dụ stale 54→113 · neo chết `STATUS:19` · tiền-đề "60 menu key" 0-hit · enum "5 class"→12=6+6) + thêm nhiệm-vụ soi `runs/` (nợ W2.3 — GĐ-2(v)) · `ring2-audit.md:4` "5 class view"→6 (vá CẢ 2 persona — lane E §1.4: kể-công-thức-5+6+1 là Goodhart rời-tập-đo) · ràng C3-02 "vai kiểm CẤM phán đặc tả; đặc tả chỏi → cờ xung đột trả điều phối" thành văn · wiring `naming-scan.ps1` vào `session-end.md` (dời từ W1).
|
||||
6. **C3-09 guard-vắng-tệp**: khai TƯƠNG-ĐƯƠNG với 3 neo máy sẵn (`distill-shard-probe.ps1:23` · `mfe-eval.ps1:45` · `memory-archive-gate.ps1:40-41`).
|
||||
- **Acceptance:** `ritual-labels.md` đủ 4 nhãn, mỗi nhãn kèm ≥1 vị-từ-lệnh chạy được · bảng 19 cửa đủ 19 dòng từng-tên (3 cửa treo đã đo nốt) · **sau RESTART**: gõ `/adap-apply` (dry) in dòng probe fail-soft (lớp C verify) · **sau RESTART**: spawn probe `lead-stale-auditor` trả 1 dòng chứa "12 class = 6 view + 6 gap" (lớp B verify — phép đo chỉ-xanh-sau-restart) · ACTIVE-MARKS có khối 3-bậc mang RC-mark (sau P5) · khuôn 5-cột grep được + có luật đóng.
|
||||
- **Lớp restart:** **A + B + C** — trình tự Q4 (A → B → RESTART → verify B → C → RESTART → verify C).
|
||||
- **Rủi ro + rollback:** sửa commands sai 1 cửa = hỏng cửa đó ⇒ khuôn fail-soft y nguyên nhip-no (`probe-loi (khong chan)`), thêm dần từ nhóm `adap-*`; persona đo TRƯỚC restart sẽ tưởng-hỏng ⇒ chỉ đo sau restart; P5 chưa gật → khoản 4 treo CÓ KHAI (mục 10), wave vẫn đóng 7 khoản còn lại. Rollback: revert per-file.
|
||||
- **Khối lượng:** mẫu số = **10 khoản GĐ-3** (lane C §F: 3 có · 3 nửa · 3 thiếu · 1 ngược); scope W3 = 8/10. Ước 1 phiên + 1 restart-verify.
|
||||
|
||||
## W3b — GĐ-3 phần NGƯỢC: cổng chặn mã lỗi (GATED — xung đột 1, anh phán P1)
|
||||
|
||||
- **GĐ:** 3 (khoản C3-04 + thang 4-trạng-thái E.3). **Điều-kiện-vào:** anh chọn **PA-1/2/3/4** (P1) **+ rider-jump W2 đã soak INFORM ≥1 phiên** (lane F §8-bis: bật gate trước soak = chặn ngay vì nợ tồn 8-12 class).
|
||||
- **TC chữa:** TC-06 (răng thật cho nghi-thức) + TC-08.
|
||||
- **Deliverable:** theo PA anh chọn — thang 4 trạng thái (trọn · thiếu-có-tên · không-xác-định · đặc-tả-xung-đột) đặt ở **mã thoát** (PA-1/2/4) hay **dòng in** (PA-3). 🔴 KHÔNG thi công TRƯỚC khi chốt (lane C §E.3: hình dạng đổi theo PA — làm trước là làm lại). Sự-thật để cân (đã đo, khỏi đo lại): ranh có sẵn `memory-archive-gate.ps1:323-325` *(sắp-GHI hoặc nhị-phân ⇒ chặn · phán-xét ⇒ cờ)*, khớp 5/5 máy fail-loud; hiện trạng **5 fail-loud + 9 advisory + 3 biên** + `hmw.js` 4 throw / 2 cố-ý-không-throw (dừng-câm `hmw.js:288`); hôm nay `TOTAL FLAGS: 49 + INFORM 21` — lật detectors thô = 49 cờ chặn tức thì.
|
||||
- **Acceptance:** giả-lập thiếu 1 tệp mốc → cổng trả mã ≠0 (nghiệm thu hub `phu-luc:223`) · dry-run `-WhatIf` in "nếu chặn thì vì cờ nào" chạy ≥1 phiên TRƯỚC khi lật · INFORM-count không bị nuốt vào tập-chặn (đếm 2 dòng TOTAL ⟂ INFORM giữ nguyên).
|
||||
- **Lớp restart:** A (script) — nhưng là máy `/session-end` đang sống ⇒ Q5 fault-inject.
|
||||
- **Rủi ro + rollback:** biến `$FailOnFlags` mặc định `$false` + env-override; hạ-số-cờ-không-kèm-commit-sửa-bệnh = phải khai (Goodhart lane F §4.1); nếu PA-3 → báo hub "làm KHÁC" mục 6 kèm bằng chứng `hmw.js:288`.
|
||||
- **Khối lượng:** PA-2 = phân loại lại **70 cờ** (49+21) — nặng nhất; PA-1/PA-4 ~1 phiên; PA-3 ~nửa phiên.
|
||||
|
||||
---
|
||||
|
||||
## W4 — GĐ-4: Sổ 3 khối (GATED entry — anh phán P2 trước, rồi máy chạy)
|
||||
|
||||
- **GĐ:** 4 (scope: **9/12 khoản** — C4-10 chấm-điểm · C4-08 vai · C4-09 thu-hẹp-vai → W4b). **Điều-kiện-vào:** W3 *đã thi công* (OD-2 — KHÔNG dùng quyền kéo-sớm hub cho dù `thu-chinh:197` cho phép; C3-04 hoãn-có-khai không chặn — lane C §F.2 vế-đúng) **+ anh đã chọn PB-1/2/3 (P2)** — lane C §B.6: 3 phương án ⇒ 3 cấu trúc tệp khác nhau, thi công trước = làm lại từ đầu.
|
||||
- **TC chữa:** **TC-01** (sổ đếm-lần-nhắc = dụng cụ TC-01 đang thiếu) · **TC-02** (dựng THUỐC — ô nghiệm thu hub GIỮ CHỮ *chưa có dụng cụ*, không điền số) · **TC-12** (nền: sổ = nguồn đếm đã ký `luat:140`).
|
||||
- **Deliverable:**
|
||||
1. **Sổ 3 khối** (hình dạng lane C §D, cấu trúc cột theo PB): khối *việc-được-giao* 6 trường hub + 🔴 **trường thứ 7 "đội hiểu thành gì"** (SE mạnh hơn hub — ca `HANDOFF:17`; gửi ngược hub) · khối *sở-thích* với 2 mục mồi: **ST-001** lằn-ranh-đỏ **LIỆT KÊ 7 loại, cấm tính từ** (A6: đổi lược-đồ-dữ-liệu · xoá dữ liệu · hướng-ra-ngoài · không-lùi-được · dính tiền · đổi cơ-chế-governance · đổi số-nhịp/ngân-sách) + **ST-002** tự-trị-khi-vắng = **TRỎ** về luật 3-bậc NGUỒN tại ACTIVE-MARKS (W3.4 — cấm chép) · khối *lời-phàn-nàn* (hôm nay TRỐNG TUYỆT ĐỐI — 0-hit, control "điểm dừng"=5 tệp).
|
||||
2. **Mã vĩnh viễn** `YC-/ST-/PN-<số tăng>` cấm tái dụng; đóng = lật trạng thái, không xoá dòng (C4-02 — SE đang NGƯỢC: `HANDOFF:10-17` đánh số 1..7 tái dụng mỗi phiên, đã trả giá hỏi-lại-3-lượt).
|
||||
3. 🔴 **Chống bẫy A1** (F-04 + lane C §C.5): cột nguyên-văn CHỈ nhận chữ anh gõ **từ thời điểm dựng sổ**; dữ liệu cũ WAL/HANDOFF/auto-memory/migration-todos → **PHỤ LỤC riêng** nhãn *"suy ra, không phải nguyên văn"* (61 tiêu đề auto-memory là nhãn-đội — đổ vào = 61 mục trượt đối chiếu). Ngoại lệ DUY NHẤT nhập bảng `HANDOFF:10-17`: **chỉ khi P2 gật vế đó** (VK-5).
|
||||
4. **Kỷ luật ghi-NGAY + tra-sổ-trước-khi-hỏi** cắm vào **CLAUDE.md** (+ `docs/rules.md` = chỗ thứ 2 theo A3; **CẤM cắm vào commands** — hub A2/`phu-luc:252`) + **định nghĩa A5** thành văn (*hỏi lại không viện dẫn thông tin mới = vi phạm; kèm nguồn mới = kỷ luật đúng*) — lớp **C**, RESTART.
|
||||
5. **Máy dò 2-số** — nối 2 vế dữ liệu (*đang-treo* + *nhắc-từ-lần-2*) từ sổ vào `nhip-no-probe.ps1` (khung C4-06 ĐÃ khớp hub từng chi tiết: read-only · exit-0 · CONFIG-THIEU không default); phân biệt **chưa-có-dữ-liệu ⟂ đo-và-bằng-0** in 2 chuỗi khác nhau.
|
||||
6. **Sổ vào `tiep_reload.sources`** (memory-budget.json) — không thì `/tiep` không thấy = sổ chết (A3; lane F §4.3a) + **trần ký tự cột nguyên-văn** = khoá config mới (C4-01).
|
||||
- **Acceptance:** `grep -c '^ST-' <sổ>` ≥ 2 (nghiệm thu hub mục mồi) · mọi mã YC/ST/PN mang ts ≥ ngày dựng sổ; mục cũ chỉ ở phụ lục · máy dò fault-inject 2 chiều: sổ-rỗng → in `chưa-có-dữ-liệu`, sổ-toàn-mục-đóng → in `0` (2 chuỗi PHÂN BIỆT) · **A10 phép thử chạy NGAY**: đẩy 1 class lạ vào `h24-signal-write.ps1` → exit 2 *"a monitor may NOT invent a class"* (ô xanh có thật đầu tiên của GĐ-4 — lane C §G) · **sau RESTART** (lớp C verify): lượt mới nhắc lại đúng chi-tiết luật tra-sổ chỉ-biết-nếu-đã-nạp (khuôn ctx-verifier).
|
||||
- **Lớp restart:** **A + C** (sổ/config/máy = A · CLAUDE.md + rules.md = C) — trình tự Q4.
|
||||
- **Rủi ro + rollback:** nguồn-đôi = rủi ro số 1 (lane F §4.3) — rào bằng **ranh LOẠI-NỘI-DUNG**: 3 khối là thứ WAL KHÔNG CÓ (4/7 hàng trống thật — đo lane C §B.3); cột trạng-thái theo đúng PB anh chọn; CLAUDE.md là bề mặt đắt nhất (mọi lượt nạp) ⇒ diff tối thiểu, đo byte trước/sau. Rollback: sổ = file mới (xoá là sạch) + revert CLAUDE.md; giữ WAL nguyên trạng mọi nhánh.
|
||||
- **Khối lượng:** mẫu số = **12 khoản GĐ-4** (lane C §G: 2 có · 3 nửa · 5 thiếu · 1 ngược · 1 chưa-đo); scope W4 = 9/12 + đo nốt C4-09 (`grep -rln "yêu cầu của anh|lời anh|owner-request" .claude/agents/*.md` + control). Ước 1 phiên sau khi P2 có.
|
||||
|
||||
## W4b — GĐ-4 phần chấm điểm + vai (GATED — P4 + P8, sau W4)
|
||||
|
||||
- **GĐ:** 4 (C4-10 · C4-08 · C4-09 + A9). **Điều-kiện-vào:** W4 *đã thi công* (sổ = nguồn đếm ĐÃ KÝ, `luat:140` — không né được bằng đổi nguồn đếm, F-08/lane C §H.1) + anh phán **P4** (vai tầng-2/3, roster) + **P8** (wire khối chấm 2 cửa) (+ **P3** định đoạt đường-ghi-lại A10).
|
||||
- **TC chữa:** **TC-12** (SE nặng hơn hub: điểm CHƯA TỪNG được sinh — 0-hit "chấm điểm", control 5 tệp) + **TC-01** + khoản **A9** (3 mốc niêm phong — Phần-C chưa-ai-chạm).
|
||||
- **Deliverable:** công thức `max(0, 10 − số MỤC lặp ≥2)` + 3 cách đọc bắt buộc (`luat:53-55`) · 4 tầng với ranh CỨNG (tầng-2 KHÔNG xem điểm tầng-1; tầng-3 kiểm PHÉP ĐẾM, **CẤM đề xuất điểm khác**; tầng-4 = anh) · 3 mốc `emit_ts/redisplay_ts/first_owner_msg_ts` — thiếu mốc-3 ⇒ in *chờ niêm phong*, KHÔNG đẩy hàng-chờ-anh · khối in ở **2 cửa phiên** (P8) · **đường ghi lại khi chấm sai** thành văn (tầng-nào-sai + nhãn *chấm sai* sống ở `error-ledger`, CẤM nhét `flag_classes` trừ khi anh mở tập — ăn khớp P3) · dòng tổng kết đủ {điểm cuối · 3 giá trị tầng · trạng thái niêm phong · liệt TỪNG mục kèm mã, rỗng ghi "danh sách rỗng"} · phạm vi BẤT BIẾN = **5 khoản theo `luat:140`** (công thức · nguồn đếm · 4 tầng · 3 mốc · đường ghi lại) — KHÔNG theo câu tóm `:23`.
|
||||
- **Acceptance:** 🔴 **lượt đầu khối chấm PHẢI in `KHÔNG ĐO ĐƯỢC`** — số phủ sóng chưa tồn tại, `luat:66` CẤM in điểm; in một con số 10/10 = vi phạm ngay luật vừa adopt (lane C §H.3). Đây đồng thời là phép-đo-chỉ-xanh-SAU-restart của lớp C. · Ca lặp 5 lần cùng mục → trừ đúng **1** (`luat:120`) · đẩy nhãn *chấm sai* vào máy cảnh báo → **bị từ chối** (exit 2) · giữ chấm điểm **INFORM-only ≥3 phiên** trước khi ảnh hưởng bất kỳ gate nào (lane F §4.2).
|
||||
- **Lớp restart:** **B** (vai mới — không sống tới RESTART; acceptance spawn xếp SAU restart) + **C** (session-start/end.md) — trình tự Q4.
|
||||
- **Rủi ro + rollback:** nguồn thưa → điểm luôn tuyệt đối = máy chết (hub tự đo — `luat:65`) ⇒ ô `KHÔNG ĐO ĐƯỢC` là chốt an toàn; **số học roster**: 26 file agents ⟂ `hmw_width.cap=20` LOUD-skip ⇒ +2 vai = +2 lane rớt full-sweep, và `measured{}` mới có 17/25 baseline ⇒ vai mới PHẢI seed baseline kẻo thành 10 vai mù (lane F §4.4). Rollback: gỡ khối in 2 cửa + vai là file .md xoá được; điểm chưa từng ảnh hưởng gate trong ≥3 phiên đầu.
|
||||
- **Khối lượng:** mẫu số = **8 ô nghiệm thu luật chấm điểm** (`luat:120-127`); hiện 2/8 chạm được ngay (ô-2 hai-hệ-đo-tách · ô-7 phép-thử-từ-chối). Ước 1 phiên + 3 phiên soak.
|
||||
|
||||
---
|
||||
|
||||
## W5 — GĐ-5 phần tự-chạy: vá máy soát + luật GĐ-5 còn thiếu
|
||||
|
||||
- **GĐ:** 5. **Điều-kiện-vào:** W4 *đã thi công* (OD-2). Điều kiện hub gốc (GĐ-1 + GĐ-2 *đã thi công* + CÓ hạn mức) tự thoả từ W1/W2; hạn mức đo được (168 bản ghi `claude-fable-5` phiên này) ⇒ KHÔNG rơi nhánh `không áp dụng`.
|
||||
- **TC chữa:** **TC-09** (vá máy soát chỗ-ngồi — SE không mắc BỆNH nhưng MÁY có lỗ: phủ phiên-Task-path = 0/17 mà in `TOTAL FLAGS: 0`) + **TC-04** (luật lượt-mới/khai-thiếu) + **TC-03** (GIỮ CHỮ ô hub *chưa đủ mẫu*; per-khoản = `không áp dụng CÓ KHAI`, control-âm 26/26 pin).
|
||||
- **Deliverable:**
|
||||
1. 🔴 **Vá `spawn-model-audit.ps1`** (lead-verify CONFIRMED MAJOR; 4 vế lane D §1): (a) chọn phiên KHÔNG lọc theo hình-dạng-thư-mục; (b) quét **CẢ HAI** đường `subagents/*.jsonl` (phẳng — Task) + `subagents/workflows/**/agent-*.jsonl` (Workflow); (c) phiên chọn ≠ mới nhất → in dòng KHAI chênh lệch, sửa nhãn vô-điều-kiện `:262`; (d) in mẫu số `n lane đo / m lane tồn tại`. 🔴 Chiều mù ĐÚNG: máy **THẤY Workflow, MÙ Task/flat** — errata E-5: lead từng viết NGƯỢC chiều trong prompt; vá theo chiều viết-ngược = vá đúng phía đang chạy tốt. Không đập cả máy: khối A 2-key + khối C/D 26/26 + khối E tự-khai ĐANG ĐÚNG (lane D §1 khai công bằng).
|
||||
2. **D-3**: `hmw.js` `resolveModel` đang trả `undefined` ở cả 2 nhánh = đúng nghĩa "để mặc định" — làm tường minh tham số model tại chỗ-gọi (đọc từ 1 nguồn, cấm undefined-im-lặng).
|
||||
3. **D-10** luật thành văn *"tổng hợp = MỘT LƯỢT GỌI MỚI, không nối lại lượt cũ"* + vẽ ranh với resume-#53 (recovery vật chứng ≠ tổng hợp — N2 F-09; counter-datum §1-ter lane D: resume S180 KHÔNG rớt model, n=1, ghi nhận chứ không chép lo-ngại hub thành lo-ngại mình).
|
||||
4. **D-12** luật tổng: mảnh ngữ-cảnh nào chưa có → khai `(THIẾU — lý do)` cho CẢ GÓI 5 mảnh (hiện chỉ phủ 1 mảnh ở `pause.md:53`).
|
||||
5. Mục 6 khuôn B — khai **làm-KHÁC/mạnh-hơn**: cửa-duyệt-spec ở ĐẦU thay vì giữa (D-8) · VALID_ROLES STOP-HARD mạnh hơn sàn (D-18) · TC-03/TC-09 `không áp dụng CÓ KHAI` — 🔴 CẤM viết *"đã được kiểm chứng"* (nấc chỉ hub cấp).
|
||||
- **Acceptance:** chạy máy đã vá trên phiên S180 (chỉ lane phẳng) → **PHẢI thấy 17/17 lane** + in mẫu số (phản-chứng bắt buộc lane D: *"phiên chỉ có lane phẳng thì máy PHẢI thấy lane, không được rơi về phiên cũ"*) · control chiều kia: phiên có `workflows/` vẫn đọc như cũ · giả-lập phiên-chọn-cũ → dòng khai xuất hiện · `resolveModel` hết nhánh undefined-im-lặng (grep + spawn 1 lane probe) · luật D-10/D-12 grep thấy trong doc governance.
|
||||
- **Lớp restart:** **A** (script + `hmw.js` + docs).
|
||||
- **Rủi ro + rollback:** `spawn-model-audit` gọi từ 2 cửa (`fable-clone` + `session-start`) ⇒ Q5 fault-inject cây tạm trước land; `hmw.js` là engine fan-out sống ⇒ diff tối thiểu + spawn probe 1 lane sau sửa; rollback `git checkout` 2 file.
|
||||
- **Khối lượng:** mẫu số = **20 khoản GĐ-5** (lane D §2, hôm nay 13,0/20 nới · 9/20 nghiêm — 3 mẫu số hub hội tụ 60-67%); W5 nâng D-3/10/12 + rider vá-máy (đếm riêng); phần D-4/5/11/14/15/16/17 → W5b. Ước 1 phiên.
|
||||
|
||||
## W5b — GĐ-5 phần GATED (P7): sổ-khung-nhìn lượt đắt + truyền-nguyên-văn lane dispatch
|
||||
|
||||
- **GĐ:** 5. **Điều-kiện-vào:** W5 *đã thi công* + anh phán **P7** (2 vế — cả hai lane D xếp VƯỢT-KHUNG §7.1/§7.2).
|
||||
- **TC chữa:** **TC-04** (D-14/15/16/17 — sổ lượt-đắt 5 cột · dòng-sống-kể-cả-chết-giữa-chừng · thiếu-tệp-lượt-đắt = severity CAO NHẤT) + **TC-03** (D-4/5/11 — mảnh *lời chủ nguyên văn* ở lane dispatch).
|
||||
- **Deliverable:** (i) **sổ-khung-nhìn lượt đắt = DERIVE-VIEW** (không phải sổ chép tay — lane D §4a: dữ liệu ĐÃ nằm sẵn ở `runs/` + dấu `[engine:` trong 8 tệp agent-memory + WAL): 5 cột {thời điểm · loại · đề bài · con trỏ vật chứng · kết luận}, regenerate-only, đề xuất đặt `docs/governance/expensive-runs-view.md` (VIEW đúng sàn-3 — anh chốt vị trí trong P7); vế-6: nối *thiếu-tệp-ở-lượt-đắt = mức nghiêm trọng CAO NHẤT* vào máy điểm danh W2. (ii) **luật truyền-nguyên-văn lane DISPATCH**: rào `> anh:` + đi-nguyên-khối + khai-thiếu — mở rộng từ `pause.md:53` (rào ĐÃ CÓ nhưng chỉ phủ lane LƯU TRỮ — N1 từng khai sai chiều "chưa có rào", lane D §4b sửa); ca sống tự-quy-chiếu: prompt lane D chứa 0 khối `> anh:`.
|
||||
- **Acceptance:** lệnh sinh view chạy 2 lần cho kết quả y hệt (idempotent) + mọi con trỏ resolve · fault-inject: xoá 1 tệp trong run-folder lượt-đắt cây tạm → điểm danh in severity CAO NHẤT · sau khi luật dispatch land: spec-file của wave KẾ TIẾP chứa ≥1 khối `> anh:` nguyên văn (đo trên vật thật).
|
||||
- **Lớp restart:** **A** (+ đổi HÀNH VI dispatch của lead — không phải restart file).
|
||||
- **Rủi ro + rollback:** view đặt sai chỗ = nguồn-đôi với `runs/` ⇒ header "DERIVED — regenerate, đừng sửa tay"; truyền-nguyên-văn đổi cách anh ra lệnh (lời anh đi thẳng vào prompt vai đắt, lead không tóm) — chính vì thế nó gated; CẤM tuyên "đã chứng minh" (hub tự khai vế này của họ đang *bỏ-qua-có-khai* — `thu-chinh:62(iii)`).
|
||||
- **Khối lượng:** 7/20 khoản GĐ-5 thuộc cụm này. Ước 1 phiên. Đích sau W5+W5b: ~18-19/20 (D-8 giữ `KHÁC có khai`).
|
||||
|
||||
---
|
||||
|
||||
## W6 — GĐ-6: Niêm phong đồng bộ + bảng gốc (mốc ký = ANH)
|
||||
|
||||
- **GĐ:** 6. **Điều-kiện-vào:** mọi GĐ trong phạm-vi `áp dụng` của **bản-đồ W0** đạt *đã thi công* — nay ĐÁNH GIÁ ĐƯỢC nhờ W0 (lane D §6.1: trước W0 trạng thái đúng là *chưa-đánh-giá-được, thiếu vật tham chiếu*). Phần gated anh chọn KHÔNG làm → lật ô per-khoản thành `không áp dụng`/`hoãn` CÓ KHAI trong fit-map + mục 10, rồi GĐ-6 vẫn vào được (phạm-vi-áp-dụng là phạm vi SAU quyết định của anh).
|
||||
- **TC chữa:** **TC-09 (quét lại — chạy lại đúng máy ĐÃ VÁ ở W5)** + toàn **bảng gốc 12 TC** (hợp đồng nghiệm thu cả gói).
|
||||
- **Deliverable** (mẫu số 17 khoản lane D §6.2 — hôm nay 3/17, thấp là bằng chứng TUÂN OD-2 chứ không phải chậm):
|
||||
1. Cổng đồng bộ **4 tầng** chạy + dán kết quả (khớp / lệch-đã-khai từng tầng) · **trace xuôi** mảnh→spec→GĐ→vật chứng · **trace ngược** = liệt TỪNG khoản phạm-vi-tự-phình · đối chiếu 3 chiều bệnh→thuốc→bằng-chứng · soi riêng khoản **áp-một-nửa**.
|
||||
2. Cổng điểm danh: số-kỳ-vọng **SUY TỪ danh sách** (khuôn E-7 đã đạt 1 cổng — nhân rộng) + quét số-cũ-viết-cứng + **mutation-test roster** (bỏ 1 tên cây tạm → **≥2** bài kiểm đỏ — E-9) + đo E-8 (bài kiểm ghim TÊN hay ghim SỐ: `grep -rn "VALID_ROLES|informRoles" .claude scripts tests` soi từng chỗ).
|
||||
3. Luật **E-10/E-11 trọn-gói-1-commit** thành văn (vai mới vào cổng khi CÙNG commit đủ 4 vế) — áp ngay cho vai P4 nếu anh đẻ; đối chứng tên 2 chiều + phản chứng (dựa chuẩn W1 — E-12).
|
||||
4. **Bảng gốc 12 TC** → `docs/governance/adap-reports/upgrade-pack-phased-bang-goc.md`: mỗi ô {số · lệnh tái lập · ngày đo}; **4 ô hub GIỮ CHỮ** (TC-02 *chưa có dụng cụ* · TC-03 *chưa đủ mẫu* · TC-07 *chưa có dụng cụ* · TC-10 *KHÔNG ĐO ĐƯỢC*); TC-03/TC-09 phía SE = `không áp dụng CÓ KHAI`; TC-10 khai là **lỗ CHỮA**; 🔴 CẤM chữ *"đã được kiểm chứng"* trong MỌI ô (nấc đó CHỈ hub cấp).
|
||||
5. **Bảng A16 máy⟂tay 3 NẤC** đủ 21 script từng-tên (M1 = 1 hook `Stop`/`wal-flush` · M2 = 17 máy-qua-nghi-thức · M3 = 3 mồ côi; cột "fire tự động?" — thang 2 nấc là thang HỎNG, lane F §1.1) + quét rò-rỉ-đặc-thù-nội-bộ trên bản gửi hub, khai máy-hay-tay của chính phép quét.
|
||||
6. Quét đồng bộ tài liệu **tick từng cái** (danh sách chốt trước) · **bản-nháp-dấu chờ-ký, ô RC-mark ĐỂ TRỐNG** (E-14 cơ chế ĐÃ ĐỦ — schema `RC-pqhuy1987-…` ACTIVE-MARKS; người thi công KHÔNG tự cấp dấu) · **báo cáo cuối** khuôn B 10 mục + chạy **7 dòng Tự-chấm-nhanh** → anh duyệt → gửi hub · nấc *đã được kiểm chứng* chỉ flip SAU hub soi (E-16).
|
||||
- **Acceptance:** `grep -c '^| TC-' …bang-goc.md` = **12** · 4 ô chữ đúng nguyên văn tại đúng 4 dòng · mutation-test: bỏ 1 tên → ≥2 kiểm đỏ, trả lại → xanh · `grep -rc "đã được kiểm chứng" <artifact gói phía SE>` = **0** · bảng A16 đủ 21 dòng script · ô RC-mark rỗng cho tới khi anh điền · báo cáo cuối có mục 6 (làm-khác) + mục 8 (phản biện: F-1 · GĐ-0-TC · TC-10 · trường-7 · nơi-đọc-mã-thoát · A10) + mục 10 (nợ có mốc).
|
||||
- **Lớp restart:** **A** (+ B nếu P4 có vai mới vào trọn-gói).
|
||||
- **Rủi ro + rollback:** tự flip nấc kiểm-chứng = vi phạm luật nấc (CẤM — chỉ hub); niêm phong khi wave gated còn treo-không-khai → chặn bằng fit-map per-khoản; mutation-test chạy trên CÂY TẠM, không đụng roster thật. Rollback: mọi thứ giữ DRAFT tới khi anh ký RC.
|
||||
- **Khối lượng:** 17 khoản (3/17 → đích 17/17 hoặc từng-khoản khai). Ước 1-2 phiên + vòng hub.
|
||||
|
||||
---
|
||||
|
||||
## §T — BẢNG TỔNG 7 WAVE (+3 sub gated)
|
||||
|
||||
| Wave | GĐ | TC (mã) | Lớp A/B/C | Trạng thái | Deliverable 1 câu |
|
||||
|---|---|---|---|---|---|
|
||||
| **W0** | 0 | TC-06 *(tạm gán — ngoại lệ CÓ KHAI, trình hub 2 đường)* | A | **chạy-ngay** (nút P6 1 dòng đầu wave) | Sổ đã-nhận 24 dòng + fit-map 7 dòng + tracking 20 khoản + adap-report tiếp nhận (draft) |
|
||||
| **W1** | 1 | TC-11 | A | **chạy-ngay** (sau W0) | Kiểm kê máy-đọc-tên → chuẩn-tên duy nhất 6 nhóm + rename-ledger + naming-scan INFORM |
|
||||
| **W2** | 2 | TC-04 · TC-05 *(+rider TC-08/TC-06)* | A | tự-chạy (phiên sau, sau W1) | Máy 4-vị-từ đo-NGHĨA + mục-lục-sống runs/ + điểm-danh-2-nguồn + 4 rider vá máy |
|
||||
| **W3** | 3 | TC-06 · TC-07 · TC-08 *(TC-10 = chỉ khai-báo)* | A+B+C | tự-chạy (carve-out P5) | 4 nhãn + vòng-hỏi-ngược + bảng 19 cửa tiền-kiểm + gói-B persona + luật 3-bậc (P5) |
|
||||
| **W3b** | 3 | TC-06 · TC-08 | A | 🔴 **chờ-anh P1** (+soak jump ≥1 phiên) | Cổng mã lỗi thang-4 theo PA anh chọn (PA-1/2/3/4) |
|
||||
| **W4** | 4 | TC-01 · TC-02 · TC-12 | A+C | 🔴 **chờ-anh P2** (rồi máy chạy) | Sổ 3 khối + mã vĩnh viễn + chống-A1 + cắm 2 kỷ luật CLAUDE.md + máy dò 2-số |
|
||||
| **W4b** | 4 | TC-12 · TC-01 (+A9) | B+C | 🔴 **chờ-anh P4+P8** (+P3) | Chấm điểm 4 tầng + 3 mốc + khối in 2 cửa — lượt đầu PHẢI in `KHÔNG ĐO ĐƯỢC` |
|
||||
| **W5** | 5 | TC-09 · TC-04 · TC-03 | A | tự-chạy (sau W4) | Vá spawn-model-audit (2 đường + mẫu số) + resolveModel tường minh + luật D-10/D-12 |
|
||||
| **W5b** | 5 | TC-04 · TC-03 | A | 🔴 **chờ-anh P7** | Sổ-khung-nhìn lượt đắt (derive-view) + truyền-nguyên-văn lane dispatch |
|
||||
| **W6** | 6 | TC-09 quét lại + bảng gốc 12 TC | A(+B) | 🔴 **chờ-anh** (mốc ký RC) | Cổng 4 tầng + trace 2 chiều + mutation-test + bảng gốc + A16 3-nấc + báo cáo cuối |
|
||||
|
||||
**Bất biến đã kiểm:** 10/10 dòng đều trỏ ≥1 mã TC (W0 = ngoại lệ CÓ KHAI duy nhất, đúng luật cho phép) · thứ tự GĐ-0→6 tuần tự, 0 nhảy cóc, 0 ăn lẹm · 4 ô chữ hub không bị điền số ở bất kỳ wave nào · mọi khoản VƯỢT-KHUNG nằm trong sub-wave gated hoặc P-list, KHÔNG trộn vào wave tự-chạy · mọi wave có mẫu số khai "đếm cái gì" · **mỗi wave qua gate reviewer riêng + 1 vòng vá mặc định** (hub tự khai 6/6 lượt chấm chéo KHÔNG ĐẠT lần đầu; SE cùng hướng: ring1 32Đ/6T).
|
||||
|
||||
## §P — CHỜ-ANH PHÁN (8 câu — khuyến nghị hỏi 1 LẦN ngay sau W0; hỏi ≠ thi công, không phạm OD-2)
|
||||
|
||||
| # | Câu hỏi | Phương án (KHÔNG tự chọn) | Mở khoá |
|
||||
|---|---|---|---|
|
||||
| **P1** | Xung đột 1: exit-0-advisory ⟂ cổng-chặn-mã-lỗi | **PA-1** kéo-dài-ranh-có-sẵn · **PA-2** 2-mã-thoát-mỗi-máy (phân loại 70 cờ) · **PA-3** thang-ở-dòng-in (làm-KHÁC, khai hub) · **PA-4** cửa-sau-có-răng (tiền-kiểm cửa kế chặn) — bảng cân lane C §A.6; ranh có sẵn `memory-archive-gate.ps1:323-325` | W3b |
|
||||
| **P2** | Xung đột 2: sổ = đường-ghi-chính (ĐÃ KÝ) ⟂ sàn-3 cấm nguồn-đôi — xung đột THẬT chỉ 1 cột *trạng thái* | **PB-1** sổ giữ LỜI, trạng-thái = VIEW trỏ WAL · **PB-2** sổ = REQUEST ⟂ WAL = TASK (cần anh SỬA luật ratify `tiep.md:181`+`pause.md:117`) · **PB-3** nâng cấp HANDOFF thành sổ (phá hợp-đồng lean) — lane C §B.5. Kèm vế VK-5: có cho nhập bảng `HANDOFF:10-17` làm ngoại lệ duy nhất? | W4 |
|
||||
| **P3** | Xung đột 3 (ứng viên lane F §7): hub A10 *tập tín hiệu PHẢI TỪ CHỐI nhãn mới* ⟂ SE slot(68) CỐ Ý MỞ (tiền lệ anh S143) | giữ-SE-mở + khai làm-KHÁC gửi hub · theo-hub-đóng (lớp mới chỉ sống ở error-ledger) | cách viết A10 trong fit-map/báo-cáo + đường-ghi-lại W4b |
|
||||
| **P4** | Đẻ vai mới: giữ-chuẩn-tên (G1-B2) · đọc-sổ tầng-2 · gán/đẻ tầng-3 + thu-hẹp-vai-cũ | gật/không per-vai. Số học phải cân: roster 26 file ⟂ `hmw_width.cap=20` LOUD-skip; 8 vai đang thiếu baseline `measured{}`; E-10 trọn-gói-1-commit | W4b (+phần vai W1/W6) |
|
||||
| **P5** | Luật tự-trị 3 bậc (rõ→tự-vá · mơ-hồ→nhánh-an-toàn · hỏi khi mơ-hồ+phá-huỷ) — gật NỘI DUNG + đích NGUỒN = ACTIVE-MARKS (ST-002 trỏ về) | gật nguyên văn / sửa lời / không adopt | khoản W3.4 + ST-002 của W4 |
|
||||
| **P6** | `broadcasts/_index.md:7`: thư đại-trà ghi đâu? | **(a)** mở INBOUND `_index` (rẻ — hợp thức hoá 22 dòng đang sống) · **(b)** sổ mới + gỡ 22 dòng | W0.2 (bù 24 dòng) |
|
||||
| **P7** | GĐ-5 hai khoản lane D xếp vượt-khung | (i) vị trí sổ-khung-nhìn lượt-đắt (đề xuất `docs/governance/expensive-runs-view.md`, derive-only) · (ii) truyền-nguyên-văn lane dispatch — lời anh đi NGUYÊN KHỐI vào prompt vai đắt (đổi cách anh ra lệnh) | W5b |
|
||||
| **P8** | Wire khối chấm điểm vào `session-start.md` + `session-end.md` (nghi thức 2 cửa là vật anh chốt) + chấp nhận nhịp INFORM-only ≥3 phiên | gật / hoãn | W4b |
|
||||
|
||||
## §R — RỦI RO CAO NHẤT (xếp hạng)
|
||||
|
||||
1. **Nguồn-đôi sổ⟂WAL (W4)** — rủi ro số 1 toàn gói (lane F §4.3). Rào: ranh LOẠI-NỘI-DUNG (3 khối WAL-không-có; 4/7 hàng trống thật đã đo) + P2 chốt TRƯỚC khi build + sổ vào `tiep_reload.sources` kẻo chết.
|
||||
2. **Bề mặt nổ máy-đang-sống (W2/W3b/W5)** — `nhip-no-probe` 6 cửa · `governance-detectors` = máy `/session-end` · `spawn-model-audit` 2 cửa. Rào: Q5 fault-inject cây tạm BẮT BUỘC + backup checkout-1-lệnh.
|
||||
3. **Chấm điểm in SỐ ở lượt đầu (W4b)** — vi phạm ngay luật vừa ký (`luat:66`); máy đọc nguồn thưa luôn cho 10/10 (hub đã đo). Rào: acceptance ép `KHÔNG ĐO ĐƯỢC` + INFORM ≥3 phiên.
|
||||
4. **Restart-layer lẫn (mọi wave B/C)** — đo trước restart tưởng-hỏng / tưởng-ăn. Rào: trình tự Q4 + mỗi wave B/C có 1 phép đo CHỈ-XANH-SAU-restart, ghi sẵn trong acceptance.
|
||||
5. **Jump bật không soak (W2→W3b)** — 8-12 class nợ tồn kêu cùng lúc, người tưởng máy hỏng và tắt. Rào: INFORM ≥1 phiên + freeze-baseline khuyến nghị + khai trong output lượt đầu.
|
||||
6. **Goodhart sau khi có cổng (W3b)** — áp lực giảm-số-cờ bằng đổi-hình-dạng-thứ-bị-đo. Rào: luật *"hạ cờ không kèm commit sửa bệnh = phải khai"* + không sinh tệp mốc để né cổng = rời-tập-đo (đã ghi trong PA-1 trade-off).
|
||||
|
||||
## §L — WAVE BỊ LOẠI / NGOẠI LỆ CÓ KHAI / KHÔNG-MỞ-WAVE
|
||||
|
||||
- **Loại: 0 wave.** 10/10 dòng có mã TC. (Nếu W0 không được phép dùng ngoại lệ thì theo luật hub phải LOẠI GĐ-0 — vô lý vì nó là enabling; đã trình hub cả 2 đường ở mục 8 adap-report.)
|
||||
- **Ngoại lệ CÓ KHAI duy nhất:** W0/GĐ-0 — N4 **chọn đường 2 của lane E** (tạm gán **TC-06**, có ca sống A0-3 làm bằng chứng), đồng thời nêu đường 1 (hub thêm ngoại-lệ *enabling* vào luật) cho hub phán. KHÔNG dùng câu chữ *"điều kiện tồn tại của mọi TC"* vào ô TC.
|
||||
- **KHÔNG mở wave cho (đã cân, có lý do):** `tools-whitelist-no-teeth` (anh chốt GIỮ @S179 *"tha CA NÀY không tha cơ-chế"* + SE tự khai ≥7 persona = đúng vế-2 thuốc LỚP-9 — lane E §1.6) · vòng-vá LỚP-3 (đã sống trong cấu trúc N1→N5; thay bằng luật *1 vòng vá/wave mặc định* §T) · đề xuất N1 *"W5 ghép W2"* (BÁC vĩnh viễn — F-01: vi phạm điều-kiện-vào GĐ-5 lẫn OD-2; không tái xuất dưới mọi dạng) · `session_ctx_kb` + `pull_warn_days` (KHÔNG phải ghost-wire — đã đóng @S153 / cố-ý-trống-có-khai; đưa vào E-6 errata, không vào wave).
|
||||
- **TC-10 không có wave chữa = ĐÚNG THIẾT KẾ khai lỗ** (lane E §4.4: lỗ CHỮA duy nhất, 3 ô chữ còn lại chỉ là lỗ NGHIỆM THU) — đã chuyển hub ở W0 mục 8; SE chỉ adopt trần-hướng-dẫn + nghĩa-vụ-khai ở W3, có dán nhãn *khai-báo, không phải thuốc*.
|
||||
|
||||
## §S — TRẢ LỜI DỨT KHOÁT: chạy NGAY ⟂ chờ ANH
|
||||
|
||||
- **Chạy NGAY trong phiên còn lại:** **W0** (trọn — chỉ cần anh gật P6 một dòng ngay đầu wave), rồi **W1** nếu còn thời lượng (điều-kiện-vào tự thoả khi W0 đóng; không quyết định owner nào chặn lõi W1). Kèm việc song-song hợp lệ: **phát 8 câu P1..P8 cho anh NGAY SAU W0** — hỏi không phải thi công, không phạm OD-2 (lane A §6 việc-5); hỏi muộn thì W3b/W4/W4b/W5b treo dây chuyền.
|
||||
- **Tự-chạy các phiên sau, KHÔNG cần anh phán** (theo chuỗi, mỗi wave 1 gate + 1 vòng vá): **W2 → W3 (trừ khoản P5) → W5**.
|
||||
- **BẮT BUỘC chờ anh trước khi động:** **W3b** (P1) · **W4** (P2) · **W4b** (P4 + P8, +P3) · **W5b** (P7) · **W6** (điều-kiện-vào + mốc ký RC là của anh).
|
||||
|
||||
---
|
||||
|
||||
**END wave-plan-S180 — VERDICT=PLAN-CHỐT: 7 wave + 3 sub gated · W0/W1 chạy-ngay · 5 điểm chờ-anh (8 câu P) · 0 wave loại · 1 ngoại lệ CÓ KHAI (W0/TC-06) · TC-10 = lỗ-chữa khai hub · bất biến OD-2 + 4-ô-chữ + mẫu-số giữ trọn.**
|
||||
Reference in New Issue
Block a user