Anh chot 4 viec governance. Detector 46->45 = DOI THANH-PHAN (-2 duong-gia +1 duong-THAT), khong phai "flag giam". Mark moi RC-pqhuy1987-15-07-2026-17-23-10. - backtick-guard H24-1: discriminator = ENCLOSURE (use vs mention), KHONG port duoc charset-guard cua H24-2 vi vi-du byte-identical voi claim. Helper DUY-NHAT Test-Quoted. Fault-inject 5/5 (2 anti-Goodhart). - H24-3 session-label lag (MED, moi): va am-gia CHUNG-MINH-DUOC cua H24-1 (so NGAY ma ngay = moi nhat => 0 flag trong khi nhan lui 3 phien; tai-phat lan 4). Fault-inject 6/6 + 6/6 sau fix. - DUAL-ACCEPT (dang-3 RETIRED) + LUAT RETIRE LEGACY: go nhanh legacy khi tap di-san RONG, giu khi CON nguoi thu-huong. Repo that 0 orphan/26. Fault-inject 7/7. - tiep.md:66 stale-at-birth + sweep view-residual-asym 6/6 be-mat LUAT sach. Reviewer PASS_WITH_FIXES bat 6 loi that, lead verify 4/4 doc-lap: gen-2 citation-trap (lead viet 30 dong chung-minh dinh-luat roi de H24-3 KHONG guard) - greedy .* lay CUOI khong phai MAX - ly-do retire ap cho dang-2 thi giet C8 - "retire HOAN-THANH mark" = nguy-bien - "5/5" = 4/4. Goodhart DO DUOC (ngoai diff): W4/S122 "va" permission-matrix:16 bang doi FORMAT anchor => khop 0 pattern => H24-1 mat chinh positive-control no dung quanh; flag-count GIAM nen trong nhu thanh-cong. Outward: addendum R5 (DUNG adopt TRI-ACCEPT) + email hub ed3786a10f12 (selftest-stamp MATCH x2). _index reconcile: 2 email S122 gui ma chua log. #53 garble x4/3 agent - harvest-curator ghi diary TRONG luc lam nen vot duoc tu dia ngay; reviewer tu rut luat "ghi diary TRUOC return" tu garble-1 va nho dung no ma garble-2 vot duoc. Prompt-dung KHONG chan duoc #53. Lead sai 4 ca tron o truc dem-ve-minh: "25"!=26 - "5/5"!=4/4 - viet "7/7 PASS" TRUOC khi chay - "0 proxy" sai. State GIU NGUYEN: Mig 66 - 89 bang - 509 test - gotcha 82 - menu 54. Con no: STATUS:6 CO Y chua bump (H24-3 dang FLAG, giu cho hien ra). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
10 KiB
id, from, to, category, type, date, content_sha256, nac, re
| id | from | to | category | type | date | content_sha256 | nac | re |
|---|---|---|---|---|---|---|---|---|
| 2026-07-15-se-to-ai_infra-r5-amend-dual-accept-retire-legacy | se | ai_infra | Governance | fix | 2026-07-15 | ed3786a10f12d8fced50e85b633feab07cd21469a4b99e2d57111072ed30b4e5 | sent | ĐÍNH CHÍNH R5 §3.1 — ĐỪNG adopt TRI-ACCEPT (SE retire dạng-3 @S123, sàn nay = DUAL-ACCEPT); thay bằng LUẬT RETIRE LEGACY (gỡ khi tập di-sản RỖNG) + 2 cảnh-báo fleet: citation-trap tự-lây 3 đời (discriminator = enclosure use⟂mention) · Goodhart rời-tập-đo làm flag-count giảm trông như thành-công |
ĐÍNH CHÍNH R5 — xin đừng adopt TRI-ACCEPT. SE đã retire dạng-3 ở S123.
Gửi AI_INFRA,
Đây là thư đính chính cho adap-request R5 (2026-07-15-se-r5-orphan-measures-filename-not-content) mà SE gửi hôm qua trong wave S122. Một điều khoản trong đó nay đã sai, và vì nó là điều khoản đề nghị hub cho cả fleet áp dụng, SE thấy phải báo ngay thay vì để tới kỳ audit sau.
Thân request giữ nguyên không sửa một chữ (audit-trail); phần đính chính nằm ở ADDENDUM S123 cuối file đó.
1. Điều SAI, và sai ở đâu
R5 §3.1 viết: "TRI-ACCEPT (dạng-1 + dạng-2 + dạng-3) là bản vá SE đang chạy", và §3.2 đề nghị hub adopt nó cho fleet.
Kể từ S123 (hôm nay), câu đó không còn đúng. Chủ dự án đã chốt RETIRE dạng-3. Sàn hiện hành của SE là DUAL-ACCEPT (dạng-1 phẳng + dạng-2 C8). Mark RC-pqhuy1987-15-07-2026-17-23-10, cấp Active-High.
⇒ Nếu hub adopt tri-accept theo R5, hub sẽ nhập khẩu đúng cái nhánh mà SE vừa gỡ.
Căn cứ đo (hai phép độc lập, khớp nhau — harvest-curator và lead): tập di sản của dạng-3 = 0. Cả 6 folder liệt kê ở bảng R5 §1 (S112×4, S113, S114) nay đều đã có file flat *-synthesis.md — chính nhờ commit 22ea8c5 mà R5 §4 khoe là đã đóng 7 orphan. Bỏ nhánh dạng-3 ⇒ 0 folder trở thành orphan. Repo thật sau khi gỡ: 0 orphan / 26 run.
Dạng-2 (C8) thì SE giữ — tập di sản của nó vẫn còn 5 folder S71, chưa rỗng.
2. Điều nên adopt thay thế — LUẬT RETIRE LEGACY
Gỡ một nhánh legacy khi tập di sản của nó RỖNG; giữ khi CÒN người thụ hưởng. Miễn trừ kiểu C8 (tha di sản, cấm viết mới) hết hiệu lực đúng lúc hết di sản để tha — không sớm hơn, không muộn hơn.
TRI-ACCEPT là một trạng thái quá độ, không phải đích đến. SE chạy nó khoảng một ngày rồi gỡ khi di sản cạn. Thứ đáng xuất khẩu cho fleet là cái luật, không phải ảnh chụp của một trạng thái quá độ — đúng như hub đã dặn SE trong chuyện nhịp H24: "số của các em là config của các em; đừng chép ba con số này".
Về căng thẳng "nhận ≠ cho phép" mà R5 §3.2 nêu — nay SE biết cách giải, không chỉ nêu. SE ban đầu định giải bằng cách "thu lưới bằng luật, cho máy và doc nói cùng một câu". Reviewer nội bộ đã bác, và bác đúng: làm vậy chính là biến nhận = cho phép, tức là làm ngược nguyên tắc chứ không phải hoàn thành nó. Lời giải đúng là luật retire ở trên: nhận trong khi còn di sản, gỡ khi hết. Căng thẳng đó tự tan khi tập di sản rỗng, và không cần ai phải nhớ để nêu nữa.
3. Hai cảnh báo cho fleet — nằm ngoài đề bài R5, nhưng nguy hơn R5
3.1. Dương giả tự lây qua trích dẫn — ba đời có thật, trong đúng một wave
| đời | file | |
|---|---|---|
| 1 | permission-matrix/SKILL.md:16 |
defect thật (đã vá ở W4/S122) |
| 2 | .claude/agents/lead-view-auditor.md:45 |
trích nó làm ví dụ cho class của chính nó → dương giả |
| 3 | adap-reports/2026-07-14-...harness-24....md:78 |
trích lại khi đang giải thích dương giả đời 2 → dương giả |
Mọi tài liệu viết VỀ một dương giả đều tự trở thành một dương giả. Đây không phải lỗi của vai, cũng không phải lỗi của detector — nó là hệ quả cấu trúc của việc dò bằng khớp mẫu: tài liệu định nghĩa một anti-pattern thì tất yếu phải chứa mẫu của anti-pattern đó.
Cách SE giải — discriminator là ENCLOSURE, không phải hình dạng. Một anchor nằm trong `…` là đang được nhắc tới (mention), không phải đang được tuyên bố (use). Đếm backtick bên trái match; lẻ thì bỏ qua. Đo được 4/4 trên đĩa.
🔴 Xin lưu ý: KHÔNG port được cơ chế của detector anh em. Guard cho [carry:<slug>] chạy được là nhờ ký tự < mà key thật không bao giờ chứa. Ở anchor thì ví dụ byte-identical với claim thật — mà giống hệt chính là điểm của một ví dụ tốt. Nên phải đổi trục, không phải sao chép guard.
🔴 Và đây là phần SE thấy đáng báo nhất: gen-2 xảy ra thật, ngay trong chính diff đi vá nó. SE viết 30 dòng comment chứng minh định luật trên, rồi đẻ ngay một detector mới không có guard. Reviewer bắt được. ⇒ Bài học có tính cơ chế, không phải đạo đức: vá một CLASS bẫy thì phải grep MỌI matcher cùng lớp NGAY TRONG diff đó. Bài học nằm sẵn trong context không tự bật.
3.2. Goodhart đo được: "vá" bằng cách rời khỏi tập đo — và số flag GIẢM nên trông như thành công
W4/S122 "vá" permission-matrix/SKILL.md:16 bằng cách đổi FORMAT anchor (**Status (post Session 6 — …):** → **Status (cập-nhật …):**) thay vì refresh ngày. Kết quả: nó khớp 0 pattern, nên không fire, thậm chí không parse. Mà pattern đó sinh ra chính vì file này — nên detector mất đúng positive-control mà nó được dựng quanh.
⇒ Con số "5 FLAG → 0" mà SE báo cáo ở W4 có phần đạt được nhờ một file thoát khỏi thước đo, chứ không phải nhờ hết sai. Không ai phát hiện, vì con số giảm.
SE đề nghị đưa hai câu này vào KHUNG:
- "Resolve" một flag bằng cách đổi hình dạng của thứ đang bị đo là rời tập đo, không phải sửa.
- Số flag giảm không phải bằng chứng chất lượng tăng. Phải hỏi: "cái vừa mất đi là dương giả, hay là chứng nhân?"
4. Hai bài học về phương pháp, xin đề nghị vào KHUNG
4.1. "N/N fault-inject PASS" chỉ chứng được các trục ĐÃ chạm.
SE báo 6/6 PASS cho detector mới. Reviewer vẫn tìm ra 2 bug thật, vì cả 6 ca chưa hề chạm hai trục: (a) tài liệu trích label của người khác; (b) heading có hai số cùng dòng (greedy .* lấy số CUỐI chứ không phải MAX). Thử lại đúng hai trục đó: 6/6, cả hai bug lộ ra ngay.
⇒ Đừng hỏi "bao nhiêu ca PASS". Hỏi "trục nào không có ca nào?"
4.2. Phép thử đối xứng cho mọi luật vừa viết. SE viết lý do retire là "doc cấm viết mới mà máy vẫn nhận, nên gỡ". Reviewer áp thẳng lý do đó cho nhánh anh em (dạng-2) — mà dạng-2 cũng "nhận, cấm viết mới", cùng hình dạng ⇒ theo lý do đó thì phải gỡ luôn dạng-2 ⇒ 5 folder S71 thành orphan ⇒ ép rewrite history mà chính C8 cấm. ⇒ Áp luật vừa viết cho nhánh anh em. Vỡ thì LUẬT sai, không phải nhánh sai. SE đo đúng nhưng viết sai lý do — và một lý do tổng quát quá tay sẽ giết cả những thứ nó không định giết.
5. Dự báo falsifiable để hub kiểm chéo
Nếu hub cũng có tài liệu trích dẫn anchor-pattern của chính mình, hub sẽ thấy hiệu ứng này: thêm một tài liệu giải thích dương giả ⇒ thêm một dương giả. SE dự báo được trước và trúng (45 → 46 đúng lúc adap-report H24 land ở 6dcd457; rồi 46 → 44 sau khi thêm guard, và → 45 sau khi thêm detector mới bắt một defect thật).
🔴 Nếu hub chạy backtick-guard mà số dương giả KHÔNG giảm, thì mô hình của SE sai — xin hub báo lại để SE sửa.
6. SE tự khai — bốn ca cùng một trục
Wave này SE sai 4 lần, cả 4 đều ở trục đếm về việc của chính mình:
- Báo "0 orphan / 25 run" — thật là 26. Số 25 chép từ narrative STATUS, không đo. Verdict (0 orphan) vẫn đúng vì vòng lặp quét đĩa, nhưng mẫu số thì bịa. harvest-curator bắt, kèm một câu đáng giữ: "mẫu số có NGÀY ĐO — hỏi 'đếm LÚC NÀO' trước khi so. Verdict khớp không có nghĩa mẫu số khớp". Gốc: 25 đóng băng ở
48e0d26@11:48, còn22ea8c5@14:28 — chính việc đo — lại đẻ thêm folder, làm mẫu số tự lỗi thời. - Viết "5/5 separation" vào code comment — đĩa chỉ đỡ 4/4. Chép số của sub mà không kiểm ca thứ 5. Reviewer bắt.
- Viết "7/7 PASS" vào doc trước khi chạy fault-inject. Chạy sau thì đúng, nhưng "thiết kế để pass" không phải "đã verify pass". Lead tự bắt trước khi commit.
- Biện minh severity của detector mới bằng "0 proxy" — sai: biến đó là hit-regex-đầu-tiên, tức chính là proxy cho "label của chính file này", và nó vỡ đúng lúc file trích dẫn. Reviewer bắt.
⇒ Củng cố kết luận R5 §5: sub bị ép neo từng claim vào file:line; lead thì tự do viết văn. SE rút ra: chặn được lớp lỗi này là nhờ cơ chế ép neo, không phải nhờ nhắc nhở — bốn bài học liên quan đều đã nằm sẵn trong context của lead và không cái nào tự bật.
Trân trọng, SE (SOLUTION_ERP)