From 0a31d03e8b08299470c8d5fcaf9b5a4a3029d7b0 Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Fri, 7 Aug 2026 15:23:14 +0700 Subject: [PATCH] wal: flush 20260807T1523 --- .claude/WAL.md | 43 ++-- .claude/agent-memory/reviewer/MEMORY.md | 23 +- .../agent-memory/reviewer/archive/2026-08.md | 19 ++ ...pec-adap-upgrade-pack-phased-07-08-2026.md | 15 ++ .../sub-w0b-index-hash.md | 20 ++ .../wave-plan-S180.md | 231 ++++++++++++++++++ 6 files changed, 319 insertions(+), 32 deletions(-) create mode 100644 .claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md create mode 100644 .claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/wave-plan-S180.md diff --git a/.claude/WAL.md b/.claude/WAL.md index 33f7c49..0678800 100644 --- a/.claude/WAL.md +++ b/.claude/WAL.md @@ -1,27 +1,32 @@ # WAL — auto-generated, không sửa tay updated: 2026-08-07 | session: S180 (L12) | branch: main -goal: bootstrap S180 + bookend @open 5 vòng ĐÓNG; chờ anh chọn việc chính +goal: adap gói nâng cấp 7 GĐ (4 thư 120KB) — N0-N4 xong, đang thi công W0 chain: -- [x] Sàn-3 SẠCH 5/5 · session-12 scaffold · counter 53->54 squash-benign -- [x] slot (73) ĐÓNG — spawn-probe 3 vai STYLE 3/3 ALIVE -- [x] test 645 PASS chạy thật (45D+600I) — khớp canonical -- [x] V1 H1 PASS_WITH_FLAGS-9 · H2 GATE-FAIL-7 · ring1 32Đ/6T -- [x] V2 lead-stale 15 FLAG · lead-gap 6 FLAG · ring2 21Đ/0T -- [x] V4 nén-ngủ không-nhịp (shard 1/15 IM) · V5 detectors 49+14 -- [ ] V3 trio-memory (giữa 2 bookend) — CHƯA chạy -- [ ] Phase 3.5 _mind-s-12 + ctx-audit @open +- [x] bookend @open 5 vòng: H1 PWF-9 · H2 GATE-FAIL-7 · ring1 32Đ/6T · stale 15 FLAG · gap 6 FLAG · ring2 21Đ/0T +- [x] slot (73) ĐÓNG — 3 vai STYLE ALIVE · test 645 PASS · counter 53->54 +- [x] N0 check-email: se=0 · all=4 CHƯA ÁP (1 dương-giả đã loại) +- [x] N1 fable-real invest: PHỦ ĐỦ 7GĐ/12TC/9LỖI, 48KB +- [x] N2 fable-real review: PASS_WITH_FIXES 0C/5M/6m — T2 claim-không-đứng = 0 +- [x] N3 fable-clone 6 lane (OD-1 lai): A 57KB · B 47KB · C 72KB · D 44KB · E 38KB · F +- [x] N4 wave-plan: 7 wave + 3 sub gated, 2 chạy-ngay, 5 chờ-anh, 0 loại (50KB) +- [!] W0 đang chạy 2 lane: (a) fitmap 7 dòng + tracking 20 khoản · (b) _index.md + 24 dòng đã-nhận + hash +- [ ] W1 GĐ-1 chuẩn-tên (chốt MỞ KHOÁ mọi GĐ sau) +- [ ] W2 GĐ-2 · W3 GĐ-3 · W5 GĐ-5 (tự chạy) · W3b/W4/W4b/W5b/W6 chờ anh -next: chờ anh chọn (a) áp 4 thư upgrade-pack-phased / (b) dọn nợ governance / (c) việc sản phẩm +next: W0 xong -> W1; hỏi P3/P5/P7/P8 khi chạm W3b/W4b/W5b verify: -- ERRATA lead 1: BƯỚC 0.9 tuyên "all=0" SAI — 4 thư 2026-08-04-upgrade-pack-phased-* CHƯA ÁP (0 adap-report; control-dương loi-do-luong=1) -- ERRATA lead 2: Phase 3 báo bundle Ajv-MaCz/YsXRkBSR = CẶP CŨ S172; cặp mới cửa-sổ 6 = CuWgMI7J/32bJmjpM (STATUS:6 có, row canonical :481 chưa lật). ring2 khai chỉ chứng "1 trong 2 stale", CHƯA curl prod -- ERRATA lead 3: lập luận BÁC-3 "cùng sinh @S145" SAI (blame: README:152=07-22, hmw.js:39=07-25, diary=08-05/07). Dạng đúng = "2 bản sao CHƯA-CẬP-NHẬT của cùng trạng-thái cũ". Kết luận giữ, đường đi đổi -- #53: 6/6 vai nặng dính (KHÔNG phải 5/5 — ring2 là vai thứ 6, số cũ stale ngay lúc viết), recover 6/6 mất 0 byte -- BÁC ring2 gap-incident-unrecorded MỘT PHẦN: tập đo thiếu auto-memory (3 hit) + run.md (2 hit) => sống 3 bề mặt không phải 1. Vế hẹp GIỮ: 3 surface governance đều 0 -- NẶNG NHẤT (ring1 tự tìm): STATUS:467 canonical TỰ HUỶ — công thức chữ "trừ Designer+Snapshot" cho 71, không phải 72 (thủ phạm AddPeApprovedBudgetSnapshot). Lead verify: đúng -- ring2 BÁC "5/6 vượt ngưỡng jump" của lead-stale: cộng dồn ra 4/6, vai không khai đơn-vị => CẤM dùng làm căn-cứ kéo audit -- ring1 sửa 4 số H2 (sleep-drafts 268.861->238.661; "501.300 gộp drafts" SAI cấu thành; nhãn 823.033; empty-dir 5->3). TỔNG NỢ 583.683 B/14 lượt-vai ĐỨNG VỮNG -- 2 vai kiểm tự bắt lỗi CHÍNH MÌNH: ring1 4/7 falsify tự-BROKE (2 engine chung filter hỏng) · ring2 persona mình stale "5 class" trong khi enum 6 — load-bearing đúng phiên này +- OWNER ĐỢT 1: OD-1 N3 lai 4 lane GĐ + 2 lane xuyên suốt · OD-2 thứ tự GĐ-0->6 CẤM nhảy cóc +- OWNER ĐỢT 2 (3/4 ngược khuyến nghị lead — anh chọn nhận ĐỦ hình hub): + P6 = mở INBOUND cho fan-out (additive, KHÔNG gỡ 22 dòng) + P1 = PA-2 hai mã thoát trong MỘT máy (phân loại ~70 cờ từng cái) + P2 = PB-2 tách REQUEST/TASK => PHẢI SỬA luật ratify tiep.md:181 (tường minh, có vết) + P4 = đẻ vai mới + nâng hmw_width.cap 20->30 => ĐÓNG slot (75) treo từ S172 +- DEFECT spawn-model-audit: máy THẤY Workflow, MÙ Agent/Task (17 lane, 168 ban ghi fable-5 vùng mù), vẫn in TOTAL FLAGS 0. H23@S126 VẪN ĐỨNG (lane đó đi Workflow) +- GHOST-WIRE jump_on_class_repeat: 0 reader thật => tally class CHƯA BAO GIỜ fire dù S172 đạt 3,3x nguong +- "GĐ-5 gần xong nhất" ĐỔ: GĐ-5 5,33/8 < GĐ-2 5,5-6/8. GĐ-2 ở mẫu số hub = 25%, KHÔNG phải 70% +- 8 ERRATA của lead (lead-errata-S180.md) — 5 do vai bác, 1 tự bắt, 2 vai bổ sung. Mẫu chung: phát biểu RỘNG/CŨ hơn cái đã đo +- #53: 14 vai dính, recover 14/14, mất 0 byte. Ky luc cu 7/7 @S150 +- 3 bề mặt ghi SAI số class (hmw.js "11" · ring2-audit.md:4 "5 view" · MEMORY.md:27) — enum thật 12 (6+6), lớp thứ 12 = view-claim-broader-than-sample diff --git a/.claude/agent-memory/reviewer/MEMORY.md b/.claude/agent-memory/reviewer/MEMORY.md index 97dd94a..6977003 100644 --- a/.claude/agent-memory/reviewer/MEMORY.md +++ b/.claude/agent-memory/reviewer/MEMORY.md @@ -81,22 +81,19 @@ Adversarial pre-commit reviewer SOLUTION_ERP. Read-only verify + live curl prod - **3 bài đo:** số trong sổ phải là số **ĐO** không ước (`wc -c`, baseline thừa-kế cũng stale) · script sinh chữ **đẻ chữ hỏng câm** (byte-count không bắt, chỉ ĐỌC LẠI mới thấy) · hook đếm **KÝ TỰ** còn `wc -c` đếm **BYTE** — tiếng Việt đa-byte ⇒ 2 số lệch nhau là bình thường, đừng truy "ai sai". - **Prev:** S180 (probe 10/10 + control-âm) · S168 (22.2→17.1) · S166-K5 (3/3) · S162 (2/2) · S145 · S140 · S134 · S128 · S102 · S116 · S113 · S109 · S80 · S71 · S70 · S40. -## S152 (07-25) — R1 ranh NEVER (on-behalf lead) -- **NEVER Edit/Write code-tree · NEVER commit · NEVER push** — vai = verdict-only; sửa là việc em-main/implementer. Khai thật 2 nấc: ranh commit/push/code-tree **chưa từng vỡ**; Write/Edit runtime CÓ cấp và dùng hợp lệ cho sub-file run-folder + diary-self (AS-10). "NEVER" áp cho ĐÍCH (code/commit/push), không phải cho tool-tồn-tại; containment thật = git-diff lead. Tag `[s152, r1-retention, never-target-scoped]` +- **[→ `archive/2026-08.md` §@S152-R1 — verbatim] S152 R1 ranh NEVER:** verdict-only; NEVER áp cho ĐÍCH (code-tree·commit·push — chưa từng vỡ); Write/Edit runtime hợp lệ cho sub-file run-folder + diary (AS-10); containment thật = git-diff lead. - **[→ archive/2026-07.md @S165-curate] S159 đợt-1 (07-29) diff pipeline — 7 FLAG:** rút TOÀN BỘ chuỗi hiển-thị MỚI từ diff rồi soi từng chuỗi = phép đo 100%-tiếng-Việt · 2 queryKey cùng resource = 2 ảnh-chụp khác thời-điểm · a11y nút TRÙNG tên đọc-được · bác-claim cũng phải có chứng. - **[→ `archive/2026-08.md` §@S176 — verbatim] S176 (08-06) SETUP-REVIEW đội STYLE 3 vai — `SỬA-6`:** chấm **THIẾT-KẾ một đội sub-agent**, không phải diff code (trục mới của vai). 🔴 **thước dispatch MÙ WORKING-TREE** (`git diff origin/main...HEAD` ba-chấm trả RỖNG ⇒ đội gate pre-commit **chết câm** đúng use-case chính) · **đo TREE ≠ đo HISTORY** (thước tree tự lành ca revert ⇒ lo-nghi "revert phá thước" = lo hão) · **miễn-trừ chỉ-con-trỏ = dấu cao-su** ⇒ đòi TRÍCH NGUYÊN VĂN ≤1 dòng, khép vòng bằng owner-visibility · **thách-CLEAN bẻ được nếu không bắt neo `file:line` cả 2 bờ** · **3/5 lo wiring của lead là LO HÃO** (script enumerate ĐỘNG — đừng giả-định hardcode, mở ra đo) · **chép-luật-vào-persona vi phạm chính B1 viết trong CÙNG file** ⇒ viết luật cấm-chép xong phải grep chính file mình. *(🔄 @S180: khoản "3 vai thiếu dir agent-memory" ĐÃ ĐÓNG — 26⟂26 khớp.)* -## S180 (08-07) — N3 LANE-B /6 · adap upgrade-pack GĐ-2 "lưới ghi đĩa + sổ mục lục vật chứng" (`runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-n3-lane-b-gd2.md`) +- **[→ `archive/2026-08.md` §@S180-LANE-B — verbatim, probe 3/3 + control-âm 0] S180 (08-07) N3 LANE-B GĐ-2 (digest):** NGHI-THỨC ≠ MÁY — đọc CỘT KIỂU error-ledger (AS-17 `procedural`, AS-19 tự khai chưa-cơ-khí-hoá) · guard-byte MÙ skeleton ⇒ vị-từ nhãn-treo-heading (use⟂mention, 0 dương-giả) · sổ RETIRED-có-khai vẫn làm điểm-danh-2-nguồn MẤT VẾ PHẢI (73/88); nguồn-2 = taskList snapshot run.md, KHÔNG phải `run-chua-gom` (đọc đĩa = nguồn-1) · secrets_sweep chỉ rglob sessions/ + runs/ excluded ⇒ vật chứng đắt nhất ngoài 2 lưới cùng lúc · tỉ lệ không mẫu số = vô nghĩa (42%/72%/25% cùng 1 sự thật) · lead-stale-auditor 0-hit runs/ (control FLAG=4). -- **NGHI-THỨC ≠ MÁY, và sổ của chính SE là bằng chứng mạnh nhất** — đừng suy, hãy đọc **cột kiểu** của `error-ledger`: AS-17 ghi `procedural`, AS-19 tự khai *"🔴 hiện là nghi-thức, **chưa cơ-khí-hoá**"*. Khi bản đồ nói "SE đã có AS-17/AS-19" thì đó là **có LUẬT**, không phải **có MÁY**. Phép kiểm rẻ: grep cột kiểu, đừng grep tên mã lỗi. -- **Guard đo KÍCH THƯỚC mù với hỏng TỈ LỆ KHUNG/RUỘT** (ca S180 N1: 7.049 B, 6/9 heading là `[ĐANG ĐO]`, sau 202K token — `nhip-no-probe` báo `run-chua-gom 0`). Hai đại lượng **không tương quan**: tệp toàn heading tăng byte y hệt tệp đầy ruột. Dựng sandbox + chạy máy thật + **control-dương** (giấu `*-synthesis.md` → 1, trả lại → 0) mới phân biệt được **mù** với **hỏng thước**. -- **Vị từ bắt `skeleton-ruột-rỗng` rẻ nhất = neo NHÃN TREO VÀO HEADING**, không phải đếm thô: `grep -cE '^#{1,6} .*\[(ĐANG ĐO|CHỜ|TODO)'`. Đếm thô cho **dương-giả trên chính bản đã xong** (câu định nghĩa nhãn ở header) = đúng lớp **citation-trap self-reference** đã có trong auto-memory; discriminator vẫn là **use ⟂ mention**. Đo 3 file: 6 / 0 / 0 — 0 dương-giả. -- **"Sổ chết" có hai loại, phải tách trước khi phán:** `runs/_ledger.md` **RETIRED có khai** (lý do đo được `0/15 catch`, người kế nhiệm chỉ định, caveat parity trung thực, đường đảo ngược) = **suy-giảm hợp lệ**, KHÔNG phải "quên". Nhưng **hệ quả với người dùng vẫn y hệt**: 73/88 run-folder không có dòng nào trong sổ ⇒ *"điểm danh 2 nguồn"* mất **vế phải**, không phải mất phép so. Khen cơ chế nghỉ-hưu, vẫn FAIL khoản chức năng. -- **BỘ ĐẾM không thay được MỤC LỤC:** `run-chua-gom N` in một con số, không liệt tên, không có bộ-tệp-chuẩn, và **đọc thẳng đĩa** ⇒ nó **chính là nguồn-1**, không dùng làm nguồn-2 được. Nguồn-2 rẻ nhất đã nằm sẵn trên đĩa: **taskList snapshot trong `run.md` ghi TRƯỚC launch**. -- **Vùng chứa vật chứng đắt nhất lại nằm trong 2 vùng miễn cùng lúc:** `secrets_sweep(session_dir)` chỉ rglob `sessions/` (`session_ctx.py:173/180/787`) **và** `.claude/workflows/runs` in nguyên văn trong khối `- excluded:` của detector. C11 là cửa hậu duy nhất, chỉ soi khuôn tag FLAG + diary-delta; 21/21 dòng chạm `runs/` đều `LOW` + INFORM-only + **tách khỏi TOTAL** ⇒ mức nghiêm trọng đang **ngược chiều** yêu cầu "đắt tiền = nặng nhất". -- **Tỉ lệ không mẫu số là số vô nghĩa — ca đo được:** cùng một sự thật GĐ-2 ra **42% / 72% / 25%** tuỳ mẫu số (13 khoản lane / 8 bước thư chính / 6 ô nghiệm thu). Con số "~70%" của bản đồ **không sai**, nó là **mẫu số dễ nhất trong ba**; mẫu số hub dùng cấp nấc cho **25%**. ⇒ khi thấy tỉ lệ trần, hỏi mẫu số TRƯỚC khi hỏi ai sai. -- **Reviewer tự thành ca bệnh mình đi soi (datum, không phải lời xin lỗi):** lượt-1 của tôi hạ cánh 2.765 B / 150K token. Đối chiếu với ca N1 mới lộ ra điều không thấy nếu chỉ có 1 ca: **V-2 (nhãn treo) phân biệt đúng "khung rỗng" ⟂ "ruột thật mới bắt đầu"; V-1 (tỉ lệ) thì không.** Ca thứ hai là thứ chọn được vị từ. -- **Xác nhận ngược có giá trị:** N2 F-06 (GĐ-2(v) "khai điểm mù" vắng trọn) **ĐÚNG**, và N2 còn **nói nhẹ hơn sự thật** — SE có sẵn 2/3 vế; bỏ khoản này là **mất điểm cho việc đã làm đúng** (A13), không chỉ mất cảnh báo. Nhưng đo tiếp thì vế (v-3) **yếu hơn cả N2 lẫn tôi tưởng**: `lead-stale-auditor.md` **0 hit** `run-folder|runs/` (control-dương `FLAG`=4) ⇒ tự hạ đánh giá của chính mình, giữ câu cũ để so. -- Tag `[s180, adap-gd2, nghi-thuc-vs-may, skeleton-ruot-rong, vi-tu-heading-scoped, use-vs-mention, ledger-retired-co-khai, diem-danh-2-nguon-thieu-ve-phai, mau-so-3-cach-lech-3-lan, sandbox-control-duong]` +## S180 (08-07) — N4 `/fable-real reviewer` · TỔNG HỢP 15 nguồn → `wave-plan-S180.md` (50.519 B, 7 wave + 3 sub gated) + +- **"Sự-thật-đã-chốt" của lead = hàng rào tiết kiệm, nhưng phải giữ nguyên CHIỀU khi chép:** errata E-5 phiên này — lead viết ĐẢO chiều-mù `spawn-model-audit` ngay trong prompt dù file verify của chính lead viết đúng. Tổng-hợp-viên chép PROMPT thay vì chép FILE-VERIFY thì bản vá đi sửa đúng phía đang chạy tốt. ⇒ khi 2 bản phát biểu của CÙNG một người lệch nhau, tin bản có PHÉP ĐO đính kèm. +- **Ô-đòi-MÃ không nhận CÂU-VĂN:** N1 điền *"điều kiện tồn tại của mọi TC"* vào ô TC (fitmap:238) — lane E gọi đúng tên: wave không trỏ mã TC = wave thoát ràng buộc nghiệm thu. Fix chuẩn: tạm-gán mã có ca-sống (TC-06, A0-3 0-hit) + khai NGOẠI-LỆ + trình chủ-luật 2 đường — đừng bịa chữ vào ô mã. +- **Tự dẫm nhãn-số va nhau:** tôi đặt câu hỏi owner `Q1..` đụng nhãn quy-ước `§Q1..Q6` trong CÙNG file ⇒ phải đổi `P1..P8` + vá 3 ref đã ghi đĩa. Bài: 2 hệ đánh số trong 1 artifact = khác TIỀN TỐ ngay từ đầu. +- **Trục xếp wave đắt nhất = tách CHỮA ⟂ NGHIỆM-THU** (lane E §4.4): TC-02/03/07 chỉ thiếu THƯỚC — mở wave "chữa" là làm thừa; TC-10 thiếu THUỐC — có nhãn GĐ-3 vẫn là lỗ. Trộn 2 trục ⇒ 2 sai ngược chiều cùng lúc. +- **Ghi-đĩa-4-nhát qua Edit-append anchor-đuôi** (header → W0-2 → W3-4b → W5-6+chốt): chết giữa chừng vẫn giữ trọn wave đã chốt. Phiên 13 vai dính #53 — 4 nhát land sạch, 0 mục-lục-rỗng. +- Tag `[s180, n4-wave-plan, od-2, tc-contract-hole, ma-vs-cau-van, p-vs-q-prefix, chua-vs-nghiem-thu, edit-append-anchor]` diff --git a/.claude/agent-memory/reviewer/archive/2026-08.md b/.claude/agent-memory/reviewer/archive/2026-08.md index 32e98c0..dcab6c2 100644 --- a/.claude/agent-memory/reviewer/archive/2026-08.md +++ b/.claude/agent-memory/reviewer/archive/2026-08.md @@ -40,3 +40,22 @@ ## @S170 — GATE Fidelity `/sleep-recovery-memory-l2` (16 gist-draft) — PASS-WITH-FIXES - **S170 GATE Fidelity /sleep-recovery-memory-l2 (16 gist-draft) — PASS-WITH-FIXES (digest):** **tên-cờ-bịa sống 4 hiện-vật** — grep 0-hit CẦN dụng-cụ THỨ HAI (`git log --all -S` + control-dương) mới nâng 'nghi'→'chốt: chưa từng tồn tại'; 3/4 là drift của cờ THẬT, 1/4 (`AllowDelegate`) 0 đối-ứng ⇒ **đừng gộp 2 lớp**. 🔴 **Nhãn phủ TÊN mà không phủ CON-SỐ** — claim mang tải là 'proven 4×' (kích-hoạt luật ≥2× promote), và đơn-thuốc 'giữ 4 lần, bỏ tên cờ' = **giữ khẳng-định + vứt CHỨNG-NHÂN** ⇒ bất-khả-bác (Goodhart). **Census tự-xưng đủ** ('4 LỖ') thiếu 4 lỗ nữa gồm 1 lỗ +23 — số-đóng-vai-đã-phủ-hết (meta-count blind-spot), dù draft TỰ chép đủ số để trừ ra. **Chính-sách số BẤT-ĐỐI-XỨNG trong cùng đợt**: file A bị buộc 'KHÔNG tự sửa số', file B lén sửa 7→6 field không khai ⇒ đọc-sau không biết số nào là chữ nguồn. **`pointer-style: substring` phải CHẠY THỬ**: 1/10 con-trỏ CHẾT do lệch hoa-thường (`PRIORITY` vs `priority`). **Lưới token máy-append in ĐẦU-DÒNG không in lân-cận-token** ⇒ mega-line cho trích-dẫn LẠC HẲN (gán FAIL cho Run PASS) — tái-lập ở 2 file độc-lập. Thước tốt giữ lại: control-ÂM cạnh control-dương · claim liên-file phải HAI BỜ CÙNG KHAI · tag-chain 14/14 đo bằng grep -F từng chuỗi. Tag `[s170, nhan-phu-ten-khong-phu-so, census-tu-xung-du, con-tro-chet-hoa-thuong, luoi-dau-dong]` + +--- + +## §@S180-LANE-B — S180 (08-07) N3 LANE-B /6 · adap upgrade-pack GĐ-2 "lưới ghi đĩa + sổ mục lục vật chứng" (verbatim move từ L1 @S180-N4 curate; đĩa gốc `runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-n3-lane-b-gd2.md`) + +- **NGHI-THỨC ≠ MÁY, và sổ của chính SE là bằng chứng mạnh nhất** — đừng suy, hãy đọc **cột kiểu** của `error-ledger`: AS-17 ghi `procedural`, AS-19 tự khai *"🔴 hiện là nghi-thức, **chưa cơ-khí-hoá**"*. Khi bản đồ nói "SE đã có AS-17/AS-19" thì đó là **có LUẬT**, không phải **có MÁY**. Phép kiểm rẻ: grep cột kiểu, đừng grep tên mã lỗi. +- **Guard đo KÍCH THƯỚC mù với hỏng TỈ LỆ KHUNG/RUỘT** (ca S180 N1: 7.049 B, 6/9 heading là `[ĐANG ĐO]`, sau 202K token — `nhip-no-probe` báo `run-chua-gom 0`). Hai đại lượng **không tương quan**: tệp toàn heading tăng byte y hệt tệp đầy ruột. Dựng sandbox + chạy máy thật + **control-dương** (giấu `*-synthesis.md` → 1, trả lại → 0) mới phân biệt được **mù** với **hỏng thước**. +- **Vị từ bắt `skeleton-ruột-rỗng` rẻ nhất = neo NHÃN TREO VÀO HEADING**, không phải đếm thô: `grep -cE '^#{1,6} .*\[(ĐANG ĐO|CHỜ|TODO)'`. Đếm thô cho **dương-giả trên chính bản đã xong** (câu định nghĩa nhãn ở header) = đúng lớp **citation-trap self-reference** đã có trong auto-memory; discriminator vẫn là **use ⟂ mention**. Đo 3 file: 6 / 0 / 0 — 0 dương-giả. +- **"Sổ chết" có hai loại, phải tách trước khi phán:** `runs/_ledger.md` **RETIRED có khai** (lý do đo được `0/15 catch`, người kế nhiệm chỉ định, caveat parity trung thực, đường đảo ngược) = **suy-giảm hợp lệ**, KHÔNG phải "quên". Nhưng **hệ quả với người dùng vẫn y hệt**: 73/88 run-folder không có dòng nào trong sổ ⇒ *"điểm danh 2 nguồn"* mất **vế phải**, không phải mất phép so. Khen cơ chế nghỉ-hưu, vẫn FAIL khoản chức năng. +- **BỘ ĐẾM không thay được MỤC LỤC:** `run-chua-gom N` in một con số, không liệt tên, không có bộ-tệp-chuẩn, và **đọc thẳng đĩa** ⇒ nó **chính là nguồn-1**, không dùng làm nguồn-2 được. Nguồn-2 rẻ nhất đã nằm sẵn trên đĩa: **taskList snapshot trong `run.md` ghi TRƯỚC launch**. +- **Vùng chứa vật chứng đắt nhất lại nằm trong 2 vùng miễn cùng lúc:** `secrets_sweep(session_dir)` chỉ rglob `sessions/` (`session_ctx.py:173/180/787`) **và** `.claude/workflows/runs` in nguyên văn trong khối `- excluded:` của detector. C11 là cửa hậu duy nhất, chỉ soi khuôn tag FLAG + diary-delta; 21/21 dòng chạm `runs/` đều `LOW` + INFORM-only + **tách khỏi TOTAL** ⇒ mức nghiêm trọng đang **ngược chiều** yêu cầu "đắt tiền = nặng nhất". +- **Tỉ lệ không mẫu số là số vô nghĩa — ca đo được:** cùng một sự thật GĐ-2 ra **42% / 72% / 25%** tuỳ mẫu số (13 khoản lane / 8 bước thư chính / 6 ô nghiệm thu). Con số "~70%" của bản đồ **không sai**, nó là **mẫu số dễ nhất trong ba**; mẫu số hub dùng cấp nấc cho **25%**. ⇒ khi thấy tỉ lệ trần, hỏi mẫu số TRƯỚC khi hỏi ai sai. +- **Reviewer tự thành ca bệnh mình đi soi (datum, không phải lời xin lỗi):** lượt-1 của tôi hạ cánh 2.765 B / 150K token. Đối chiếu với ca N1 mới lộ ra điều không thấy nếu chỉ có 1 ca: **V-2 (nhãn treo) phân biệt đúng "khung rỗng" ⟂ "ruột thật mới bắt đầu"; V-1 (tỉ lệ) thì không.** Ca thứ hai là thứ chọn được vị từ. +- **Xác nhận ngược có giá trị:** N2 F-06 (GĐ-2(v) "khai điểm mù" vắng trọn) **ĐÚNG**, và N2 còn **nói nhẹ hơn sự thật** — SE có sẵn 2/3 vế; bỏ khoản này là **mất điểm cho việc đã làm đúng** (A13), không chỉ mất cảnh báo. Nhưng đo tiếp thì vế (v-3) **yếu hơn cả N2 lẫn tôi tưởng**: `lead-stale-auditor.md` **0 hit** `run-folder|runs/` (control-dương `FLAG`=4) ⇒ tự hạ đánh giá của chính mình, giữ câu cũ để so. +- Tag `[s180, adap-gd2, nghi-thuc-vs-may, skeleton-ruot-rong, vi-tu-heading-scoped, use-vs-mention, ledger-retired-co-khai, diem-danh-2-nguon-thieu-ve-phai, mau-so-3-cach-lech-3-lan, sandbox-control-duong]` + +## §@S152-R1 — S152 (07-25) R1 ranh NEVER (on-behalf lead) (verbatim move từ L1 @S180-N4 curate) + +- **NEVER Edit/Write code-tree · NEVER commit · NEVER push** — vai = verdict-only; sửa là việc em-main/implementer. Khai thật 2 nấc: ranh commit/push/code-tree **chưa từng vỡ**; Write/Edit runtime CÓ cấp và dùng hợp lệ cho sub-file run-folder + diary-self (AS-10). "NEVER" áp cho ĐÍCH (code/commit/push), không phải cho tool-tồn-tại; containment thật = git-diff lead. Tag `[s152, r1-retention, never-target-scoped]` diff --git a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/spec-adap-upgrade-pack-phased-07-08-2026.md b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/spec-adap-upgrade-pack-phased-07-08-2026.md index ba55c0b..fd0cb51 100644 --- a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/spec-adap-upgrade-pack-phased-07-08-2026.md +++ b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/spec-adap-upgrade-pack-phased-07-08-2026.md @@ -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--.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`). diff --git a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md new file mode 100644 index 0000000..8c884df --- /dev/null +++ b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w0b-index-hash.md @@ -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)* diff --git a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/wave-plan-S180.md b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/wave-plan-S180.md new file mode 100644 index 0000000..09903f0 --- /dev/null +++ b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/wave-plan-S180.md @@ -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-` 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-' ` ≥ 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" ` = **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.**