32 KiB
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.mdW3 (:76-90) — 7 trường đủ…/sub-w1a-mayd-octen.md§4 R1/R2 (:458-462) — 14 đoạn máy, 11 vỡ-câmdocs/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ọi ⟂ nhắ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 |
✅ CÓ |
| 2 | session-end.md |
12 | 7 | ✅ :118 |
✅ CÓ |
| 3 | tiep.md |
10 | 2 | ✅ :154 |
✅ CÓ |
| 4 | pause.md |
4 | 3 | ✅ :113 |
✅ CÓ |
| 5 | snapshot.md |
1 | 4 | ✅ :69 |
✅ CÓ — 🔴 lane C để 🟡 CHƯA ĐO, nay ĐÓNG = CÓ |
| 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 và :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-*" |
có (kèm "6 class gap-*" — vế này ĐÚNG) |
— |
back-end-reviewer-style.md:4 |
chuỗi .NET 10 |
có | 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 |
có | như trên |
Nguồn số enum (đọc đĩa, không tin doc): .claude/agent-memory/memory-budget.json → lead_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.md — 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 lỗi F-B HIGH mà tooling-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.md → 1 ⇒ 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-standard → 6 ⇒ 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 $B → 39 ⇒ 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á" và :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):
- 0 ô trống — kể cả cột nhãn: không phân loại được ⇒ ghi
chưa-phân-loạikèm lý do; ô trống Ä‘á»c thà nh đã xét và sạch. - 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. - 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ônnhip-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.mddòngupdated:(cá»a/pause·/snapshot) +.claude/governance/.session-counter.jsonkhoálast_ticked_at/last_ticked_session(cá»a/session-*). KHÔNG dùngmtime(hookwal:chạm tệp má»—i lượt;git checkoutviết lạimtimehà 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 0 ở 5/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.ps1là mục thứ 56 của nhómscripts/; lead vừa vá-Expect54→55, giỠthà nh 55→56. - 🔴
-Expectkêu VÀNG, KHÔNG đội thà nhLECH—LECHgiữ 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ả:-Expectlà tripwire có chá»§ Ä‘Ãch, choTHIEU-TAPmá»™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-Expect55→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
- 🔴 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.
- 🔴
-Expect55→56 trongnaming-scan.ps1— tệp cấm, lead vá. - 🔴 Hà ng vòng-há»i-ngược đầu tiên chỠđịnh Ä‘oạt:
docs/governance/rename-ledger.mdkhông tồn tại trong khinaming-standard.md:10+:278trá» tá»›i nó, và váºt chứng W1-b 0 dòng khai ⇒ nhãnquên.naming-standard.mdlà 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á»). - 🟡
lead-gap-auditor.md:42neo số trần cho nhánhgap-*— 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. - 🟡 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. - â›” 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-08chỉ khaiKHÔ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-scanxác nhận 0 dòng lệch mới). Bất-biến ngầmagents/<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Ó).