Files
solution-erp/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md
2026-08-07 17:29:49 +07:00

32 KiB
Raw Blame History

sub-w3-nghi-thuc — W3 / GĐ-3 phần TỰ-CHẠY: nghi thức hai đầu (4 nhãn · vòng hỏi ngược · tiền-kiểm đầu cửa · gói-B persona)

  • Vai: implementer-backend (lane W3) · Phiên: S180 · Ngày: 2026-08-07
  • Model tự khai: claude-opus-5 (effort max)
  • Ghi đĩa liên tục (chống #53): mỗi mục xong append ngay, KHÔNG chờ cuối lượt.
  • Input ghim (đọc thật, không suy diễn):
    • .claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-n3-lane-c-gd34.md §E.1 (:385-398) · §E.2 (:400-406) · §E.5 (:421-440) · §F bảng 10 khoản (:444-463)
    • …/wave-plan-S180.md W3 (:76-90) — 7 trường đủ
    • …/sub-w1a-mayd-octen.md §4 R1/R2 (:458-462) — 14 đoạn máy, 11 vỡ-câm
    • docs/governance/naming-standard.md (W1-b vừa ký) · …/sub-w2-luoi-ghi-dia.md (W2 vừa xong)
    • broadcasts/inbox/ai_infra/2026-08-04-…-phu-luc-spec-pitfall.md §GĐ-3
  • PHẠM VI: CHỈ phần tự-chạy. W3b (cổng chặn bằng mã lỗi) KHÔNG thuộc wave này — chờ owner P1 (đã chốt PA-2 về hướng, nhưng phân loại ~70 cờ là wave riêng). 🔴 Mọi thứ đụng trong lượt này giữ exit 0 / INFORM.

§0 — Trạng thái ghi đĩa (cập nhật liên tục)

Mục Trạng thái Ghi ở §
Phép đo nền (wall-clock + bảng 19 cửa + persona) XONG §1
(1) 4 nhãn suy-giảm KÝ 4/4 — nhưng cưỡng chế 1 đủ / 2 nửa / 1 CHƯA CÓ MÁY §2
(2) Vòng hỏi ngược 5 cột CÓ — khuôn + luật đóng 3 điều kiện + 1 hàng sinh bằng máy §3
(3) Tiền-kiểm đầu cửa 5/19 → 9/19 + máy mới + fault-inject 5/5 §4
(4) Gói-B persona 4 tệp / 5 sửa — 4 phép đo sau-restart BÀN GIAO lead §5
Hệ quả lên máy sống + CHƯA ĐO / CẦN LEAD 6 mục §6

Vật đã hạ cánh: docs/governance/ritual-labels.md (mới) · scripts/tien-kiem-cua.ps1 (mới) · .claude/commands/{adap-apply,adap-report,adap-request,check-email}.md · .claude/agents/{lead-stale-auditor,ring2-audit,back-end-reviewer-style,database-reviewer-style}.md.


§1 — PHÉP ĐO NỀN (chạy TRƯỚC khi gõ một dòng nào)

1.1 — Wall-clock: trần chi phí cho tiền-kiểm (hub phu-luc:194 đòi "chi phí bằng không")

Lệnh: Measure-Command, n=5, lấy min/trung-vị/max. Máy này, 2026-08-07.

Phép đo n min trung vị max
CONTROL — chỉ khởi động powershell -NoProfile, không chạy gì 5 143 ms 156 ms 260 ms
scripts/nhip-no-probe.ps1đang chạy ở /pause + /tiep, tức chi phí ĐÃ ĐƯỢC CHẤP NHẬN 5 419 ms 423 ms 452 ms

Phần việc RÒNG của probe đang sống = 423 156 = ~267 ms. Đây là trần tham chiếu: một tiền-kiểm mới muốn cắm vào cửa dừng phải rẻ hơn con số đã được chấp nhận này, không phải rẻ hơn một ngưỡng tôi tự đặt.

🔴 Luật đã thành văn trên đĩa, không phải tôi bịa: .claude/commands/check-email.md:41"việc NẶNG chỉ sống ở bookend. Ai thêm bước vào đường /pause·/tiep sau này phải đo wall-clock trước". Lượt này tuân: đo trước, và KHÔNG thêm bước nào vào /pause · /tiep (cả hai đã có probe rồi — xem §1.2).

🔸 Khai giới hạn của thước: đo trên máy này, đĩa nóng, không đo lần-chạy-nguội. Con số dùng để so tương đối (mới ⟂ đã-chấp-nhận), không dùng làm SLA tuyệt đối.

1.2 — Bảng 19 cửa × tiền-kiểm, TỪNG DÒNG (A4 cấm ghi gộp) — 3 cửa treo của lane C: ĐÓNG

Thước 1 (CONTROL — dựng lại đúng phép đo lane C §E.5): grep -c "nhip-no-probe\|Sàn-3\|san-3\|tiền kiểm\|probe". Thước 2 (SẮC HƠN — vị từ lời gọi thật): grep -cE '\-File +scripts/[^ ]+\.ps1|node +scripts/|python +scripts/' — tách gọinhắc tên (đúng ranh use ⟂ mention của W1-b/W2).

# Cửa T1 (lane C) T2 lời-gọi nhip-no-probe gọi thật? Kết luận
1 session-start.md 19 9 :269
2 session-end.md 12 7 :118
3 tiep.md 10 2 :154
4 pause.md 4 3 :113
5 snapshot.md 1 4 :69 🔴 lane C để 🟡 CHƯA ĐO, nay ĐÓNG =
6 check-email.md 2 2 (stamp_verify.py) :45+:48 = NHẮC TÊN, 0 lời gọi KHÔNG — lane C 🟡 ĐÓNG = KHÔNG
7 sleep-recovery-memory-l2.md 2 0 0 hit tên KHÔNG — lane C 🟡 ĐÓNG = KHÔNG
8 send-email.md 0 1 (stamp_verify.py) KHÔNG
9 adap-apply.md 0 0 KHÔNG 🔴 ca LỚP-2
10 adap-report.md 0 0 KHÔNG
11 adap-request.md 0 0 KHÔNG
12 fable-real.md 0 0 KHÔNG
13 fable-clone.md 0 0 KHÔNG
14 ultra-on.md 0 0 KHÔNG
15 ultra-off.md 0 0 KHÔNG
16 user-mark-active.md 0 0 KHÔNG
17 user-mark-active-high.md 0 0 KHÔNG
18 user-mark-medium.md 0 0 KHÔNG
19 user-mark-disable.md 0 0 KHÔNG

⇒ Trạng thái TRƯỚC lượt này: 5/19 có tiền-kiểm (không phải 4/19 như lane C ghi — chênh vì snapshot được đóng từ 🟡 sang CÓ). 14/19 không có. 0 cửa còn treo.

🔴 BÁC MỘT SỐ CỦA LANE F — check-email bị đếm nhầm là cửa gọi probe. sub-n3-lane-f-maytay.md:49:253 ghi "nhip-no-probe.ps1 — check-email, pause, session-end, session-start, snapshot, tiep (6 cửa)". Đo lại: check-email.md chứa chuỗi nhip-no-probe.ps1 2 lần nhưng cả 2 đều là NHẮC TÊN:45 mượn nó làm khuôn fail-soft, :48 bàn về đổi vai của vế-4 pull-cach. 0 lời gọi. ⇒ tập đúng là 5 cửa, không phải 6. Đây đúng lớp lỗi use ⟂ mention mà W1-b/W2 đã dựng vị từ để tách — lane F dùng thước cũ nên dính.

🔸 Khai giới hạn của thước 2: nó đo có dòng lệnh gọi script trong tệp lệnh, không đo lời gọi đó có được thi hành mỗi lượt không (tệp lệnh là prompt, người thi hành là model). Vẫn là sự hiện diện + khuôn dạng, không đo CHẤT — đúng ranh hub phu-luc:208.

1.3 — Phép đo persona (gói-B) trước khi sửa

Persona Phép đo Kết quả Control-dương
lead-stale-auditor.md `grep -cE "run-folder runs/"` 0
lead-stale-auditor.md số class view-* liệt trong tệp 5 (view-residual-asym·stale-count·stale-header·stale-role-desc·stale-status) + câu "5 class dưới" :41 enum đĩa = 12
ring2-audit.md:4 chuỗi "5 class view-*" (kèm "6 class gap-*" — vế này ĐÚNG)
back-end-reviewer-style.md:4 chuỗi .NET 10 front-end-reviewer-style.md:4 đã de-number @S179 (SỬA-6b) ⇒ khuôn có sẵn
database-reviewer-style.md:4 chuỗi EF Core 10 như trên

Nguồn số enum (đọc đĩa, không tin doc): .claude/agent-memory/memory-budget.jsonlead_self_audit.flag_classes = 12 phần tử = 6 view-* + 6 gap-*. Phần tử thứ 6 của nhánh view là view-claim-broader-than-sample (mở @S172 theo escalate của ring2-audit).

🔴 PHÁT HIỆN NGOÀI DANH SÁCH ĐỀ BÀI — nặng hơn ca ring2: đề bài chỉ giao sửa ring2-audit.md:4. Nhưng lead-stale-auditor.mdchính vai PHẢI DÙNG enum đó — cũng chỉ liệt 5/6 class view-*, thiếu đúng view-claim-broader-than-sample. Đây là ghost-enum tái phát: đúng lớp lỗi F-B HIGHtooling-auditor đã ghi @S143 ("enum mở 10→11 nhưng commit KHÔNG đụng lead-gap-auditor.md — vai bị luật CẤM tự chế class ⇒ lần tới gặp ca sẽ escalate lại đúng thứ vừa được duyệt"). Lần này vật thể là nhánh view-* và vai là lead-stale-auditor. Sửa ring2 mà bỏ lead-stale-auditor = vá cái GƯƠNG, để nguyên cái MÁY.


§2 — (1) BỐN NHÃN — đã ký docs/governance/ritual-labels.md, và CHỨNG vị từ chạy THẬT

Vật đã hạ cánh: docs/governance/ritual-labels.md (kebab thường, đúng naming-standard.md:170 luật vật MỚI).

2.1 — Bốn vị từ, chạy thật, kèm control-dương

$M = vật mốc · $V = vật chứng của LƯỢT (không phải đặc tả) · $B = mã bước.

Vị từ Lệnh Ca thật đã chạy Kết quả Control-dương
(1) vật mốc test -e "$M" && echo 1 || echo 0 docs/governance/rename-ledger.md 0 = VẮNG test -e naming-standard.md1 ⇒ thước đọc được đĩa
(2) dòng khai grep -c -- "$B" "$V" $B=rename-ledger trong sub-w1b-chuan-ten.md 0 = KHÔNG KHAI cùng tệp, grep -c naming-standard6 ⇒ thước đọc được tệp
(3) con trỏ file:line grep -E -c -- "$B.*[^ ]+\.(md|ps1|py|js|json):[0-9]+" "$V" như trên 0 cùng tệp, bỏ neo $B39 ⇒ thước bắt được khuôn con trỏ
(4) điều kiện chạy lại lệnh do đặc tả nêu naming-standard.md không nêu điều kiện chạy-lại-được cho bước "lập sổ đổi tên" không-xác-định

⇒ Tra bảng quyết định ritual-labels.md §2.1: (1)=0 · (2)=0 ⇒ nhãn quên. Hàng đầu tiên của vòng hỏi ngược, sinh bằng máy, không bằng cảm giác.

🔴 Ca này là một phát hiện thật, không phải ví dụ dựng: naming-standard.md:10 tuyên "Sổ đổi tên: docs/governance/rename-ledger.md — chỉ-thêm-không-xoá":278 tuyên "Sáu ô còn lại: xem rename-ledger.md"tệp không tồn tại, và vật chứng lượt W1-b không có dòng khai nào. Đúng lớp lời-hứa-chưa-land (feedback_dryrun_finds_promised_but_unlanded). Tôi KHÔNG sửa naming-standard.md (nằm trong danh sách cấm) — nộp thành 1 hàng cho lead.

2.2 — 🔴 NHÃN NÀO CHƯA CÓ MÁY (luật nấc W1-a: sạch đúng tới độ sâu máy KIỂM, không sâu hơn một nấc)

Nhãn Máy chấm được tới đâu Nấc
quên TRỌN(1)=0 ∧ (2)=0, cả hai vị từ đều cơ khí CÓ MÁY ĐỦ
tự ý bỏ máy chỉ chấm được nhánh (2)≥1 ∧ (3)=0. Nhánh (4)=sai CHƯA CÓ MÁY — không máy nào chạy lại điều kiện cho phép 🟡 NỬA
suy giảm hợp lệ máy chấm được có khai + có con trỏ; không chấm được con trỏ trỏ đúng chỗ cho phép hay không 🟡 NỬA
bị chặn CHƯA CÓ MÁY. Phân biệt "con trỏ tới đặc tả""con trỏ tới nỗ lực gỡ" là phán-xét ngữ nghĩa, (3) cho cùng một số ở cả hai CHƯA CÓ MÁY

⇒ Nói thẳng: 1/4 nhãn có máy đủ · 2/4 nửa · 1/4 chưa có máy. Bốn nhãn đã thành văn 4/4, nhưng cưỡng chế bằng máy thì KHÔNG phải 4/4. Ghi đúng nấc này vào ritual-labels.md §2.2 chứ không để nó trông như đã cưỡng chế — đó chính là LỚP-9 (cưỡng chế được tuyên mà chưa có máy) mà cả gói này tồn tại để chữa.

🔴 Máy anh em để đối chứng (lead chỉ, đã dùng): scripts/artifact-integrity.ps1 (W2) đang chạy thật. Nó chấm vật chứng có đủ ruột không; bốn nhãn ở đây chấm bước có chạy không. Hai trục khác nhau, không gộp số.

2.3 — 🔴 BÁC MỘT VẾ TRONG KHUNG ĐỀ BÀI (vế này nếu nhận sẽ làm thủng chính bộ nhãn)

Đề bài khung 4 nhãn là "làm đủ ⟂ làm thiếu CÓ KHAI ⟂ bỏ qua CÓ KHAI ⟂ bỏ qua KHÔNG khai — chỉ nhãn cuối mới là lỗi".

Đo lại chữ hub (phu-luc:189, nguyên văn): tự ý bỏ = "bỏ mà không khai, hoặc khai là 'bỏ êm' trong khi điều kiện cho phép bỏ đánh giá lại trên đĩa là sai".

⇒ Hub có tính một ca CÓ KHAI là lỗi nặng. Nếu áp khung "chỉ bỏ-qua-KHÔNG-khai mới là lỗi" thì viết một dòng khai là tự tha được, và bộ nhãn thành đồ trang trí. Hai khung cũng không cùng phân hoạch: làm đủ của đề bài = TRỌN, mà TRỌN không sinh hàng nào nên nó không phải một trong 4 nhãn.

Xử: ký theo chữ hub, ghi rõ ở ritual-labels.md §2.2(a)(b): (a) khai không tự miễn trừ · (b) (4)=không-xác-định ⇒ rơi về nhãn NẶNG, không rơi về nhãn vô tội — vì nếu chỗ mù mặc định về vô tội thì cách rẻ nhất để sạch là viết đặc tả mơ hồ.


§3 — (2) VÒNG HỎI NGƯỢC 5 CỘT — đã ký ritual-labels.md §3

Khuôn nguyên chữ hub, 5 cá»™t không Äổi tên: bưá»c thiếu hoặc lệch · Äặc tả nói gì · bằng chứng trên ÄÄ©a · nhãn nào · câu hỏi Äích danh.

Luật Äóng — ba Äiều kiện, thiếu má»™t là CHƯA ĐÓNG (ritual-labels.md §3.2):

  1. 0 ô trá»ng — kể cả cá»™t nhãn: không phân loại ÄÆ°á»£c ⇒ ghi chưa-phân-loại kèm lý do; ô trá»ng Äọc thành đã xét và sạch.
  2. Má»—i hàng có má»™t Äá»nh Äoạt cá»§a người Äiều phá»i, thuá»™c Äúng 3 giá trá»: chạy-bổ-sung · khai-suy-giảm · khai-không-thể-nữa.
  3. Bảng luôn kèm MẪU SỐ N hàng / M bưá»c ÄÆ°á»£c soi; M = sá» bưá»c thật sá»± ÄÆ°á»£c duyệt, không phải sá» bưá»c tồn tại.

🔴 §3.3 CẤM thay bảng bằng má»™t con sá» tổng — neo thẳng ca S119 ("vá 19 finding" khi thật 23) + con trỏ feedback_meta_count_selfcoverage_blindspot. Ghi rõ Äây là há»™i tụ Äá»™c lập: luật Äóng cá»§a hub và bài học S119 là cùng má»™t kết luận tìm ra ở hai nÆ¡i, để lần sau không ai tưởng là luật ngoại nhập.

🔴 §3.4 C3-02 thành văn: vai kiểm CHỈ ĐỐI CHIẾU, nguồn = chính tệp lệnh cá»§a cá»­a; Äặc tả tá»± chỏi ⇒ nhãn Äặc-tả-xung-Äá»™t + cả hai con trỏ + trả người Äiều phá»i; CẤM tá»± phán. Ghi rõ: Äặc-tả-xung-Äá»™t ở Äây là giá trá» cá»™t Nhãn, KHÔNG phải mã thoát (thang mã thoát = W3b).

Ai sinh bảng: lead-gap-auditor (hàng thiếu) + lead-stale-auditor (hàng lệch) — cặp Äang spawn vôiều-kiện ở CẢ HAI Äầu phiên. 0 vai má»iúng lane C §E.1; vai má»i thuá»™c P4/W4b).

Hàng mẫu đã sinh BẰNG MÁY (§2.1): bưá»c "lập sổ Äổi tên" | naming-standard.md:10 + :278 | (1)=0 (2)=0, control 1/6 | quên | "Sổ này land ở wave nào, hay gỡ hai con trỏ?" — 1 hàng / 1 bưá»c ÄÆ°á»£c soi.


§4 — (3) TIỀN-KIá»M ĐẦU CỬA: 5/19 → 9/19

4.1 — Máy mới scripts/tien-kiem-cua.ps1

  • Chỉ Äọc · LUÔN exit 0 · INFORM. Fail-soft y khuôn nhip-no-probe: lá»—i ⇒ tien-kiem loi (khong chan).
  • Thi hành Äúng chữ hub phu-luc:194: chọn cá»­a Äóng gần nhất bằng dấu thời gian ghi TRONG tệp — .claude/WAL.md dòng updated: (cá»­a /pause·/snapshot) + .claude/governance/.session-counter.json khoá last_ticked_at/last_ticked_session (cá»­a /session-*). KHÔNG dùng mtime (hook wal: chạm tệp má»—i lượt; git checkout viết lại mtime hàng loạt).
  • Pure-ASCII: 0 byte >127. 🔴 Control-dương cho chính thưá»c ASCII: ritual-labels.md = 4.250 byte >127 ⇒ thưá»c có bắt ÄÆ°á»£c, sá» 0 kia không phải thưá»c hỏng. (Bài W2: control-âm-sai = hỏng THƯỚC.)
  • Cờ in ra: THIEU-TAP (0/2 nguồn) · NGUON-HONG:<tên> · LECH-PHIEN:<a>/<b> · ok.

4.2 — Fault-inject BA chiều: 5/5 PASS (harness scratchpad/fi-tienkiem.ps1, cây tạm, KHÔNG chạm repo thật)

Chiều Ca Kỳ vọng Thực tế
B cấy ĐÚNG, 2 nguồn lành IM = ok, 0 dương-giả nguon 2/2 | ok
A-1 cấy HỎNG nguồn WAL NGUON-HONG:Wal nguon 1/2 | NGUON-HONG:Wal
A-2 cấy HỎNG nguồn counter NGUON-HONG:Counter nguon 1/2 | NGUON-HONG:Counter
A-3 2 nguồn lệch phiên LECH-PHIEN nguon 2/2 | LECH-PHIEN:S177/S180
A2 MẤT CẢ TẬP (xoá cả 2) cờ THIEU-TAP RIÊNG, CẤM in ok THIEU-TAP - 0/2 nguon moc doc duoc | KHONG ket luan duoc gi

exit 05/5 (ràng buộc cứng trong harness: exit != 0 ⇒ FAIL). Harness in control-harness (WAL=True/False counter=True/False) mỗi ca ⇒ chứng cây tạm thật sự có/không có tệp như ý định.

🔴 Lượt fault-inject ĐẦU chết vì HARNESS, không vì script: viết harness inline qua bash ⇒ bash nuá»t $/backtick cá»§a chuá»—i PowerShell ⇒ tệp WAL "lành" không bao giờ ÄÆ°á»£c ghi Äúng ⇒ chiều B in NGUON-HONG:Wal trông y hệt script hỏng. Dá»±ng lại harness thành .ps1 Äá»™c lập ⇒ 5/5. Đúng bài S139: harness cần cùng ká»· luật như production. Nếu tin lượt Äầu thì đã Äi sá»­a má»™t script không hỏng.

4.3 — Wall-clock ĐO ĐƯỢC (bắt buộc TRƯỚC khi cắm — luật check-email.md:41)

trung vị (n=5) ròng (trừ khởi động)
CONTROL powershell -NoProfile khởi động không 196 ms
tien-kiem-cua.ps1 (MỚI) 390 ms ~194 ms
nhip-no-probe.ps1 (đã được chấp nhận ở /pause·/tiep) 477 ms ~281 ms

⇒ Máy má»i rẻ hÆ¡n cái đã ÄÆ°á»£c chấp nhận. 🔸 Khai thẳng: phần lá»n 194 ms là Äọc + ConvertFrom-Json trên sổ Äếm ~45 KB; không phải "bằng không" theo nghÄ©a Äen. Đo trên máy này, ÄÄ©a nóng ⇒ dùng để so tương Äá»i, không phải SLA tuyệt Äá»i.

🔴 KHÔNG cắm vào /pause · /tiep. Hai cá»­a đó đã có probe; thêm bưá»c nữa = làm Äiểm dừng Äắt lên, trái floor goi-chot §3 và trái bất-biến check-email.md:41. Đây là quyết Äá»nh có Äo rồi má»i nói không, không phải bỏ sót.

4.4 — Độ phủ sau lượt (mẫu số 19)

n/19 Cửa
Trước 5 session-start · session-end · tiep · pause · snapshot
Cắm mới +4 adap-apply 🔴 (ca LỚP-2: chính cửa áp gói này) · adap-report · adap-request · check-email
Sau 9 còn thiếu 10: send-email · sleep-recovery-memory-l2 · fable-real · fable-clone · ultra-on · ultra-off · user-mark-active · user-mark-active-high · user-mark-medium · user-mark-disable

Control-dương cho phép đếm: grep -c tien-kiem-cua .claude/commands/ultra-on.md = 0 ⇒ con số 9 không do mẫu khớp tràn lan.

🔸 Vì sao dừng ở 9, không cắm ná»t 10: 6 cá»­a (fable-*, ultra-*, user-mark-*) là cá»­a má»™t-dòng, không có Äiểm dừng nào để soi — cắm vào là nghi thức trang trí, và má»—i lời gọi thừa là má»™t cÆ¡ há»™i alarm-fatigue. send-email + sleep-recovery-memory-l2 Äáng cắm, xin lead má»™t dòng Äồng ý vì chúng không nằm trong danh sách ưu tiên cá»§a đề bài.


§5 — (4) GÓI-B PERSONA (chỉ ăn từ RESTART kế) — 4 tệp / 5 sửa

# Tệp Sá»­a Đo TRƯỚC Đo SAU (trên ÄÄ©a)
1 lead-stale-auditor.md +mục Tập-Äo BẮT BUỘC gồm thư mục lượt chạy: cách soi rẻ (so khá»i trạng-thái run.md ⟂ dòng END/bảng kết từng sub-*.md cùng run-folder) · PIN Äích danh, cấm glob-latest · ranh: run-folder phiên Đà ĐÓNG = record Äóng-băng, Äừng flag · không lấn artifact-integrity.ps1 run-folder|runs/ = 0 (control-dương cùng tệp: FLAG=4, governance-detectors=2) 6
2 lead-stale-auditor.md heading BỎ SỐ + trỏ khoá lead_self_audit.flag_classes; +1 dòng bảng view-claim-broader-than-sample liệt 5 class view-*; enum ÄÄ©a = 12 = 6+6 liệt 6; [0-9]+ class còn 2 hit Äều hợp lệ ("gắn 1 class" · "1 class lặp N lần")
3 ring2-audit.md:4 BỎ SỐ cả hai vế, trỏ khoá. KHÔNG sá»­a 5â†6 (luật B1) 5 class = 1 5 class = 0 · [0-9]+ class = 0 (control class = 7 ⇒ thưá»c sá»ng)
4 back-end-reviewer-style.md:4 bỏ digit, trỏ SolutionErp.Domain.csproj → TargetFramework .NET 10 = 1 0 (control .NET = 2 ⇒ thưá»c sá»ng)
5 database-reviewer-style.md:4 bỏ digit, trỏ SolutionErp.Infrastructure.csproj → PackageReference …EntityFrameworkCore* EF Core 10 = 1 0 (control EF Core = 1 ⇒ thưá»c sá»ng)

Khuôn de-number lấy nguyên từ front-end-reviewer-style.md:4 (SỬA-6b @S179) — không tự chế khuôn mới.

🔴 PHÁT HIỆN NGOÀI DANH SÁCH ĐỀ BÀI (sá»­a #2): đề bài chỉ giao ring2-audit.md:4. Nhưng lead-stale-auditor — chính vai PHẢI DÙNG enum — cÅ©ng chỉ liệt 5/6 class view-*, thiếu Äúng view-claim-broader-than-sample. Đây là ghost-enum tái phát, Äúng lá»p F-B HIGH mà tooling-auditor ghi @S143: vai bá» luật "CẤM tá»± chế class" trói ⇒ lần tá»i gặp ca suy-luận-vượt-mẫu sẽ escalate lại Äúng thứ vừa ÄÆ°á»£c duyệt. Sá»­a ring2 mà bỏ lead-stale-auditor = vá cái GƯƠNG, để nguyên cái MÁY.

🔴 Tá»° BẮT CITATION-TRAP — vòng 1 THỦNG: ghi chú vá cá»§a tôi trong lead-stale-auditor.md trích nguyên văn cụm sá» cÅ© ⇒ grep "5 class" vẫn = 1 trên chính bản đã sá»­a Äúng. Vòng 2 diá»…n-giải-không-trích ⇒ 0. Đúng bài W1-b: lời-giải-thích nằm TRONG tập Äo. Đã grep lại bằng lệnh KHÁC ([0-9]+ class thay chuá»—i cá» Äá»nh) để không tá»± tha.

5.1 — 🔴 PHÉP ĐO CHỈ XANH SAU RESTART (tôi KHÔNG restart ÄÆ°á»£c — bàn giao lead)

Sá»­a .claude/agents/*.md là hot-reload ENV-DEP: ÄÄ©a Äổi ngay, hành vi vai chỉ Äổi sau restart CLI. Đo trên ÄÄ©a (bảng trên) KHÔNG chứng ÄÆ°á»£c vai đã ăn. Bá»n phép sau, má»—i cái chỉ xanh sau restart:

# Phép đo Xanh =
1 spawn lead-stale-auditor, hỏi "liệt tập-Äo bắt buá»™c cá»§a mày" câu trả lời có chứa runs/ hoặc run-folder
2 spawn lead-stale-auditor, hỏi "nhánh view-* gồm class nào" liệt đủ 6, có view-claim-broader-than-sample, và Äọc khoá chứ không Äọc sá» trần
3 spawn ring2-audit, hỏi "má»—i nhánh có bao nhiêu class" trả lời trỏ khoá lead_self_audit.flag_classes, KHÔNG Äọc sá» trần
4 spawn back-end-reviewer-style + database-reviewer-style, hỏi "version .NET / EF Core" trả lời trỏ .csproj, KHÔNG Äọc sá» từ persona

🔴 Không chạy 4 phép này thì "chưa ăn" trông y hệt "hỏng", và cả hai trông y hệt "đã xong".


§6 — HỆ QUẢ ĐO ĐƯỢC LÊN MÁY ĐANG SỐNG + CHƯA ĐO / CẦN LEAD

6.1 — Tripwire -Expect cá»§a naming-scan.ps1 ĐÃ KÊU vì tôi (Äúng thiết kế, KHÔNG phải hỏng)

Chạy naming-scan.ps1 read-only sau khi land:

mau so: 56 muc (tep + thu muc)   [!] lech ky vong 55 - chuan hoac kho da doi, doc lai naming-standard.md
OK 54/56 | LECH 1/56 | MIEN-theo-luat 1/56
  • Nguyên nhân: scripts/tien-kiem-cua.ps1 là mục thứ 56 cá»§a nhóm scripts/; lead vừa vá -Expect 54â†55, giờ thành 55â†56.
  • 🔴 -Expect kêu VÀNG, KHÔNG Äá»™i thành LECH — LECH giữ nguyên 1/56 (master-import-data.generated.md), và cả 2 tệp má»i cá»§a tôi Äều KHÔNG lệch chuẩn. Đúng như lead mô tả: -Expect là tripwire có chá»§ Äích, cho THIEU-TAP má»™t mẫu sỠ— không phải lá»p lá»—i drift. Tôi không lặp nhãn "LỚP-5" mà W2 gán nhầm.
  • Tôi KHÔNG sửa naming-scan.ps1 (nằm trong danh sách cấm). Xin lead bump -Expect 55→56.
  • Toàn kho: LECH 8/236+2 tệp mới của tôi không thêm dòng lệch nào. Exit 0.

6.2 — CHƯA ĐO / CẦN LEAD

  1. 🔴 4 phép đo sau-restart (§5.1) — tôi không restart được. Không chạy = gói-B chưa nghiệm thu, dù đĩa đã đúng.
  2. 🔴 -Expect 55→56 trong naming-scan.ps1 — tệp cấm, lead vá.
  3. 🔴 Hàng vòng-hỏi-ngược Äầu tiên chờ Äá»nh Äoạt: docs/governance/rename-ledger.md không tồn tại trong khi naming-standard.md:10 + :278 trỏ tá»i nó, và vật chứng W1-b 0 dòng khai ⇒ nhãn quên. naming-standard.md là tệp cấm ⇒ tôi không Äụng. Ba lá»±a chọn: chạy-bổ-sung (lập sổ) / khai-suy-giảm / khai-không-thể-nữa (gỡ 2 con trỏ).
  4. 🟡 lead-gap-auditor.md:42 neo sá» trần cho nhánh gap-* — hôm nay ĐÚNG (6 gap-*), nên KHÔNG sá»­a (bài S143: biết chá»— KHÔNG sá»­a). Nhưng nó là neo cùng loại vá»i 2 cái vừa gỡ ⇒ ứng viên de-number Äợt sau. Ngoài scope W3.
  5. 🟡 Cắm ná»t send-email + sleep-recovery-memory-l2 (§4.4) — cần lead gật, không có trong danh sách ưu tiên đề bài.
  6. â›” KHÔNG làm, Äúng phạm vi: thang mã thoát 4 trạng thái (C3-04 + khoản (v)) = W3b, chờ P1. Luật tá»±-trá» 3 bậc (C3-07/khoản (vi)) = chờ P5 owner gật ná»™i dung. Trần chi phí C3-08 chỉ khai KHÔNG ĐO ĐƯỢC + nghÄ©a vụ khai, không phải thuá»c.

6.3 — Bất-biến giữ được

  • Mã thoát: 0 lái. Máy má»i exit 0 ở 5/5 fault-inject; 4 tệp lệnh sá»­a Äều ghi rõ "KHÔNG chặn · máy luôn exit 0 · cổng chặn = W3b".
  • 14 Äoạn máy (11 vỡ-câm): 0 vỡ. Chúng Äọc TÊN (sub-* · session-<N> · tên vai · agent-memory/). Lượt này 0 Äổi tên, 0 xoá tên; 2 tệp má»i Äều là tên MỚI đúng chuẩn (naming-scan xác nhận 0 dòng lệch mới). Bất-biến ngầm agents/<role>.md.BaseName ≡ agent-memory/<role>/ không bị chạm — tôi chỉ sửa RUỘT 4 persona, 0 rename.
  • Tệp cấm: 0 chạm. STATUS.md · HANDOFF.md · CLAUDE.md · broadcasts/_index.md · naming-standard.md · naming-scan.ps1 · artifact-integrity.ps1 · adap-upgrade-pack-*.md.

END sub-w3-nghi-thuc — 4 nhãn KÝ 4/4 nhưng CƯỠNG CHẾ 1 đủ / 2 ná»­a / 1 CHƯA CÓ MÁY · vòng hỏi ngược 5 cá»™t CÓ (khuôn + luật Äóng 3 Äiều kiện + 1 hàng sinh bằng máy) · tiền-kiểm 5/19 → 9/19 (wall-clock ròng 194 ms < 281 ms đã-chấp-nhận) · persona-B 4 tệp/5 sá»­a, 4 phép Äo sau-restart BÀN GIAO · fault-inject 5/5 ba chiều · 2 chá»— bác đề bài/lane (khung 4-nhãn "chỉ nhãn cuá»i là lá»—i" ⟂ chữ hub · lane F Äếm check-email là cá»­a gọi probe trong khi nó chỉ NHẮC TÊN) · 1 sá» cá»§a lane C sá»­a (4/19 → 5/19, snapshot Äóng từ CHƯA-ĐO sang CÓ).