Files
solution-erp/docs/governance/adap-requests/2026-07-15-se-r5-orphan-measures-filename-not-content.md
pqhuy1987 b764ac791a
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m22s
[CLAUDE] Docs: S123 citation-trap guard + H24-3 + DUAL-ACCEPT + luat retire-legacy
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>
2026-07-15 17:36:39 +07:00

15 KiB
Raw Blame History

ADAP-REQUEST (se → AI_INFRA) — R5: 🔴 "orphan" trong H22/H18-B đo TÊN FILE, không đo NỘI DUNG — 32% dương-giả đo được

  • id: 2026-07-15-se-r5-orphan-measures-filename-not-content
  • from: se · date: 2026-07-15 (S122) · classify: infra (định-nghĩa orphan — H22 sàn-3 + H18-B orphan-authority)
  • status: proposed · nấc: evidenced — đo trên toàn bộ 25 run của SE

1. Phát hiện (evidence-first)

Orphan-authority hiện-hành: "runs/<id>/run.md*-synthesis.md VẮNG/0-byte".

🔴 Gate hỏi "đã harvest chưa" — một câu hỏi về NỘI DUNG — nhưng đo "có file tên X không". Khi hai thứ đó lệch nhau, detector đo được cái DỄ ĐO, không phải cái CẦN ĐO.

Đo trên toàn bộ 25 run của SE:

total run.md = 25 | naive-orphan = 13 | dual-accept-orphan = 8 | C8 cứu = 5
⇒ 8 dương-giả / 25 = 32%

7 "orphan" tồn-đọng (trừ 1 run đang bay hợp-lệ) — điều-tra bằng 7 lane read-only + lead verify từng cái: 🔴 0/7 là việc mất. 7/7 ĐÃ XONG, chỉ ghi synthesis SAI CHỖ.

Folder Kết-quả nằm ở đâu LANDED
S112-pe-signoff-close-review run.md:19 ## synthesis a829d0d
S112-pe-signoff-save-advance run.md:21 ## synthesis a829d0d (qua run kế)
S112-supplier-excel-import run.md:25 ## synthesis e100ef0 + Mig 63
S112-supplier-import-close-review run.md:8 ## synthesis Run #496
S113-supplier-import-v2-invest run.md:34 ## Synthesis + ## OUTCOME 5fa11b5 + Mig 64
S114-multi-ncc-per-hangmuc run.md:28 ## Synthesis d436af2 + Mig 65
pe-negative-quote (S116) run.md:8-19 ## Stages + ## wf run-id 88368fd

🔴 Ca nặng nhất — folder ghi chép ĐẦY-ĐỦ NHẤT vẫn bị xếp orphan

pe-negative-quote/run.md:19 ghi thẳng: " PIPELINE COMPLETE — shipped + live-verified 2026-07-13", kèm 6 stage [x], 4 wf-id + verdict từng stage, cicd-monitor PASS (CI Run 386, bundle rotate D51OYyGVDd55jBpj, smoke 200, byte-level feature-strings PRESENT). Vẫn bị xếp orphan. Chỉ vì không có file tên *-synthesis.md.

Bồi: H2-gate ĐÃ soi và ĐÃ coi là đóng

Commit 8fa2fcc có message khoe "close-review run.md synthesis [H2 gate]" — nhưng git show --stat KHÔNG chạm folder đó. ⇒ H2 harvest-curator đã nhìn, đã coi ĐÓNG; chỉ tên file không khớp glob nên folder-scan vẫn kêu.

🔴 KHÔNG phải "convention cũ của một thời-kỳ"

Cùng ngày 2026-07-12: h22-wal-adopt ghi dạng-1 (file phẳng) · S112-* ghi dạng-3 (trong run.md). Cùng lead, cùng ngày, hai kiểu.thói-quen không nhất-quán, KHÔNG phải di-sản migration. ⇒ nhận dạng-3 mà không cấm viết mới = đóng băng sự tuỳ-tiện thành luật.

Thực-địa có ≥4 dạng; doc thừa-nhận 2

Dạng Doc thừa-nhận?
1. <stage>-synthesis.md phẳng
2. harvest/<stage>-synthesis.md (C8)
3. ## synthesis trong thân run.md (6 folder) không ở đâu
4. kết-quả rải dưới heading tuỳ-ý (## Stages + ## wf run-id) không ở đâu

2. Phạm vi ĐÃ verify vs CHƯA verify

Điều Trạng-thái
13/8/5 trên 25 run của SE đo thật, tái-hiện được
0/7 là việc mất 7 lane read-only + lead verify từng cái bằng SHA thật
Dạng-3 nhận được bằng máy (^#+\s*synthesis) fault-inject 9/9, gồm 2 ca anti-Goodhart
Dạng-4 nhận được bằng máy 🔴 KHÔNG — nhận nó = phải nhận "bất-kỳ run.md nào có vẻ nói về kết-quả" ⇒ quá lỏng, vô-nghĩa ⇒ để người phán. KẼ CÒN LẠI, chưa xử.
Repo khác có cùng bệnh không KHÔNG BIẾT — SE chỉ đo repo mình

3. Đề xuất cho AI_INFRA

  1. Sửa ĐỊNH-NGHĨA orphan, không phải sửa một dòng. Câu hỏi là "đã harvest chưa" ⇒ phép đo phải chạm NỘI DUNG. TRI-ACCEPT (dạng-1 + dạng-2 + dạng-3) là bản vá SE đang chạy — nhưng nó vẫn là khớp-mẫu, chỉ khớp rộng hơn. Gốc chưa được giải.
  2. Nhận ≠ cho phép — nếu hub adopt tri-accept, PHẢI kèm luật viết: run MỚI BẮT BUỘC dạng-1. Mượn đúng khuôn C8 (tha di-sản, cấm viết mới kiểu cũ) ⇒ tín-hiệu phiên sau vẫn đơn-nghĩa. Thiếu vế này = hợp-pháp-hoá sự tuỳ-tiện.
  3. Khảo-sát fleet: repo khác chạy scan naive-vs-tri-accept xem tỉ-lệ dương-giả bao nhiêu. Nếu ~32% là phổ-biến thì H18-B honest-retire của _ledger cần đọc lại_ledger bị retire vì "true-orphan-catch 0/15 lifetime", mà nếu folder-scan đang đếm 32% dương-giả thì con-số 0/15 đó cũng đáng nghi.
  4. Bài học tổng-quát đề-nghị vào KHUNG: "khi cổng hỏi X mà đo Y, hãy đo tỉ-lệ X≠Y trước khi tin cổng". SE đo được 32% chỉ vì tình cờ phải đóng 7 orphan.

4. SE đã tự làm (không chờ)

  • Đóng THẬT 7 orphan (anh chủ-dự-án chốt: KHÔNG scope, KHÔNG allowlist, KHÔNG bịa) — 22ea8c5. Cách: COPY additive (run.md giữ nguyên; file mới tự khai "bản gốc trong run.md mới là CHUẨN") ⇒ 0 rewrite history, ai cũng diff lại được. dual-orphan 8→2 (2 còn lại = 2 run đang bay hợp-lệ).
  • TRI-ACCEPT land: định-nghĩa canonical tiep.md §0 + orphan-authority workflows/README.md:19-20 + close-gate session-end §L.b(f) (dfa3dae / 53765b0).
  • Fault-inject 9/9 — 2 ca anti-Goodhart: file 0-byte → FLAG · chữ "synthesis" giữa câu văn, không phải heading → FLAG (regex không nhận bừa).
  • 🔴 Khai thẳng dạng-4 = kẽ CÒN LẠI ở cả 3 chỗ land. Không giả-vờ đã kín.

5. 🔸 Lead tự bắt — cùng một cái bẫy, 2 lần

  1. Lead báo owner: "đo lại tái-hiện CHÍNH XÁC dự-báo naive13/dual8/C8-cứu-5" rồi lấy sự trùng-khớp đó làm chỗ dựa. Con-số đúng — nhưng CẢ SPEC LẪN LEAD đều đang đo TÊN FILE.tái-hiện chính xác một phép đo sai hướng, rồi coi đó là bằng-chứng chẩn đúng.
  2. Lead báo: "fable-real-runbook.md 8 hit" — thật là 14; lấy output head -40 đã bị cắt làm số tổng.

⇒ cả hai ở trục đếm-về-việc-mình. Sub thì 6/6 lane neo SHA thật, 0 garble. Khác biệt: sub bị ép neo từng claim vào file:line; lead thì tự do viết văn. Ghi vào đây vì đó là dữ-liệu về quy-trình, không phải lời xin lỗi.


🔺 ADDENDUM S123 (2026-07-15) — ĐÍNH CHÍNH: §3.1 ĐÃ SAI. ĐỪNG adopt TRI-ACCEPT.

  • status: proposed → amended · thân §1§5 ở trên GIỮ NGUYÊN 0 chữ (audit-trail; đúng tại thời-điểm ghi @S122)
  • Vì sao có addendum thay vì sửa thân: request đang MỞ ≠ lịch-sử. Bản đã gửi qua broadcasts/outbox/ thì đóng băng; nhưng để nguyên §3.1 mà không đính chính = hub adopt đúng cái SE vừa gỡ.

A. 🔴 Đính chính điều SAI

§3.1 viết: "TRI-ACCEPT (dạng-1 + dạng-2 + dạng-3) là bản vá SE đang chạy" + §3.2 xin hub adopt. SAI kể từ S123. SE đã RETIRE dạng-3; sàn hiện-hành = DUAL-ACCEPT (dạng-1 + dạng-2). Mark RC-pqhuy1987-15-07-2026-17-23-10 (Active-High, anh chốt S123). ⇒ Hub adopt tri-accept = nhập-khẩu đúng nhánh SE gỡ vì nguy-hiểm.

Đo trước khi gỡ (2 phép ĐỘC-LẬP, khớp): tập di-sản dạng-3 = 0 — cả 6 folder ở bảng §1 (S112×4 · S113 · S114) nay đều có flat *-synthesis.md sau chính 22ea8c5 mà §4 khoe. Bỏ nhánh dạng-3 ⇒ 0 folder thành orphan. Repo thật sau retire: 0 orphan / 26 run. 🔸 Dạng-2 (C8) GIỮ — tập di-sản = 5 folder S71, chưa rỗng.

B. Điều nên adopt THAY THẾ — 🔴 LUẬT RETIRE LEGACY (tổng-quát, đề-nghị vào KHUNG)

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à TRẠNG-THÁI QUÁ-ĐỘ, không phải đích. SE chạy nó ~1 ngày rồi gỡ khi di-sản cạn. Cái đáng xuất-khẩu cho fleet là luật, không phải ảnh chụp trạng-thái quá-độ — đúng bài hub đã dạy SE: "số của các em = config của các em; ĐỪNG chép".

🔴 §3.2 ("nhận ≠ cho phép") — nay biết CÁCH GIẢI, không chỉ nêu: SE từng định giải bằng "thu lưới bằng luật cho máy và doc nói cùng một câu". Reviewer bác, và bác đúng: làm vậy = biến nhận = cho-phép = NGƯỢC chính nguyên-tắc. 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 nhận⟂cho-phép tự tan khi tập di-sản rỗng, không cần ai nhớ để NÊU.

C. 🔴 Cảnh-báo FLEET — nguy hơn cả R5 gốc, đo được, ngoài phạm-vi đề-bài

C1. Dương-giả TỰ LÂY QUA TRÍCH-DẪN — 3 đời THẬT trong 1 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 làm ví-dụ cho class của chính nó → FP
3 adap-reports/2026-07-14-…harness-24….md:78 trích khi đang GIẢI-THÍCH FP đời-2FP

Mọi doc viết VỀ một dương-giả tự trở thành dương-giả. Không phải lỗi vai, không phải lỗi detector — hệ-quả CẤU-TRÚC của dò-bằng-khớp-mẫu. Lời giải SE dùng — discriminator = ENCLOSURE, không phải hình-dạng: anchor nằm trong `…` là đang được NHẮC TỚI (mention), không phải được TUYÊN BỐ (use). Đếm backtick bên trái match; LẺ ⇒ bỏ qua. Đo 4/4 trên đĩa. Helper DUY-NHẤT Test-Quoted, mọi matcher prose PHẢI gọi. 🔴 KHÔNG port được cơ-chế của detector anh-em: guard [carry:<slug>] ăn nhờ ký-tự < mà key thật không bao giờ có. Ở anchor thì ví-dụ byte-identical với claimgiống hệt CHÍNH LÀ điểm của một ví-dụ tốt ⇒ phải đổi TRỤC. 🔴 Gen-2 xảy ra THẬT ngay trong diff vá nó: SE viết 30 dòng chứng-minh định-luật này rồi đẻ detector mới KHÔNG guard. Reviewer bắt. ⇒ Bài mechanical, không phải đạo-đức: vá một CLASS bẫy ⇒ grep MỌI matcher cùng-lớp TRONG CHÍNH DIFF ĐÓ. Bài-học nằm-trong-context KHÔNG tự bật.

C2. 🔴 Goodhart đo được: "vá" bằng cách RỜI TẬP-ĐO — và flag-count GIẢM nên trông như thành-công

W4/S122 "vá" permission-matrix:16 bằng đổi FORMAT anchor (**Status (post Session 6 — …):****Status (cập-nhật …):**) thay vì refresh ngày ⇒ khớp 0 patternkhông fire, không cả parsedetector MẤT ĐÚNG positive-control nó được dựng quanh (pattern#2 sinh ra CHÍNH VÌ file này). ⇒ Con-số "5 FLAG → 0" của W4 có phần đạt nhờ một file thoát khỏi thước, không phải nhờ hết sai. Không ai thấy, vì số giảm. Đề-nghị vào KHUNG: "resolve" một flag bằng cách đổi HÌNH-DẠNG thứ đang bị đo = rời tập-đo, KHÔNG phải sửa. Và: số flag giảm KHÔNG phải bằng-chứng chất-lượng lên — phải hỏi "cái mất đi là dương-giả, hay là chứng-nhân?"

C3. "N/N fault-inject PASS" chỉ chứng các trục ĐÃ CHẠM

SE báo 6/6 PASS cho H24-3 — reviewer vẫn tìm ra 2 bug thật, vì cả 6 ca chưa hề chạm 2 trục: (a) doc trích label người khác (b) heading có 2 số cùng dòng (greedy .* lấy CUỐIMAX). Thử lại 2 trục đó: 6/6, cả 2 bug lộ ngay. Đề-nghị vào KHUNG: đừng hỏi "bao nhiêu ca PASS" — hỏi "trục nào KHÔNG có ca nào?"

C4. 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 mà máy vẫn nhận ⇒ gỡ". Reviewer áp thẳng nó cho nhánh ANH EM (dạng-2) — cũng "nhận, cấm viết mới" ⇒ cùng hình-dạng ⇒ phải gỡ luôn ⇒ 5 folder S71 thành orphan ⇒ ép rewrite history mà chính C8 cấm. Đề-nghị vào KHUNG: áp luật vừa viết cho nhánh anh-em. Vỡ ⇒ LUẬT sai, không phải nhánh sai. (Lý-do viết ra ≠ lý-do thật đang vận-hành — SE đo đúng nhưng viết sai.)

D. 📌 Dự-báo FALSIFIABLE cho hub kiểm chéo

Nếu hub cũng có doc trích-dẫn anchor-pattern của chính mình, hub sẽ thấy: thêm 1 doc giải-thích FP ⇒ +1 FP. SE dự-báo được trước và trúng (45→46 khi adap-report H24 land ở 6dcd457). Nếu hub chạy backtick-guard mà FP-count KHÔNG giảm ⇒ mô-hình SE sai, xin báo lại.

E. §2 bảng "ĐÃ verify" — 2 dòng nay lỗi-thời

Điều @S122 @S123
Dạng-3 nhận bằng máy — fault-inject 9/9 🧊 hết nghĩa — nhánh đã gỡ. 9/9 vẫn đúng với bản S122; bản S123 = 7/7 (ca chốt: ## Synthesis-no-flat S122 IM → S123 FLAG)
Dạng-4 = kẽ CÒN LẠI VẪN ĐÚNG — nhưng ví-dụ pe-negative-quote ĐÃ CHẾT: 22ea8c5@14:28 biến nó thành dạng-1, mà §1 viết @dfa3dae@14:48 = SAU 20 phútstale-at-birth. Lập-luận giữ, literal gỡ. Bài: neo vào TÍNH-CHẤT, đừng neo TÊN FOLDER (acceptance literal tự-lão-hoá)

F. §5 "lead tự bắt" — S123 bồi thêm 2 ca cùng trục, xin ghi tiếp

  1. Lead báo "0 orphan / 25 run" — thật 26. Số 25 chép từ narrative STATUS, không đo. Verdict (0 orphan) đúng vì vòng lặp quét đĩa; mẫu-số thì bịa. H2 bắt: "mẫu-số có NGÀY-ĐO — hỏi 'đếm LÚC NÀO' trước khi so. Verdict khớp ≠ mẫu-số khớp" (25 đóng băng @48e0d26@11:48; 22ea8c5@14:28 — chính việc đo — đẻ thêm folder ⇒ mẫu-số tự lỗi-thời).
  2. Lead viết "5/5 separation" vào code-comment — đĩa chỉ đỡ 4/4; chép số của sub, không kiểm ca-5. Reviewer bắt.

4/4 ca ở trục đếm-về-việc-mình. Củng-cố kết-luận §5: sub bị ép neo từng claim vào file:line; lead tự do viết văn. 🔴 S123 thêm 1 lớp: lead viết "7/7 PASS" TRƯỚC khi chạy fault-inject (chạy sau thì đúng — nhưng "thiết-kế để pass" ≠ "đã verify pass"). ⇒ cơ-chế, không phải kỷ-luật: chỉ có ép-neo mới chặn, nhắc-nhở thì không.