Files
solution-erp/docs/governance/adap-reports/2026-07-15-Governance-eol-crlf-agent-registry-defect-notice.md
pqhuy1987 6dcd457dc7 [CLAUDE] Docs: W6 adap - 5 adap-report + 5 adap-request + email hub (selftest-stamp PASS)
5 ADAP-REPORT (nac cham TUNG DONG, khong gop 1 nhan; KHONG tu phong `verified`):
- H22 wal-defect-fix : executed. 4/6 san co runtime; San-2 + San-5 CHUA chay lan nao.
- H23 model-at-spawn : executed. 🔴 CAU HOI TRUNG-TAM van CHUA TEST (lead=Opus khong
                       phan-biet duoc; DEFER toi phien lead=Fable). Khai thang.
- H24 lead-self-audit: executed + spawn-probe 14/14 runtime. 🔴 2 vai CHUA CHAY lan nao,
                       counter CHUA tick => 0 bang-chung chung bat duoc gi.
- EOL/CRLF notice    : executed. SE BAC phan (b) bang thuc-nghiem.
- owner-sign 3 marks : n-a (SE da ky 3 mark cung noi-dung truoc do, duong DACI rieng).

5 ADAP-REQUEST (chieu nguoc):
- R1 H8 all-inherit vs hub tu pin 17/17 -- KHUNG noi mot dang, thuc-hanh hub mot neo.
     SE khong tu chon duoc: 3 nhanh dan toi 3 hanh-dong NGUOC nhau.
- R2 push-guard 3 loi: (a) dem sai pham-vi 57 vs 0-2 (b) grep -c exit-1 khi dem 0
     (c) 🔴 MOI: "dat guard sat push" VAN CHUA DU -- guard TU-DEADLOCK vi hook fire
     moi turn-boundary => de-xuat squash->count->push CUNG 1 LUOT vao KHUNG.
- R3 hook side-ref vs floor N.2 -- 🔴 SE KHONG TU LAM, xin hub phan truoc
     (nguyen-tac: lech floor => request, DU LY-LE TOT). Khai: chua verify plumbing.
- R4 CRLF-tolerant bac phan (b) EOL-notice. Disposition TUNG DONG: (a) GIU chan rieng
     (c) GIU chan rieng (b) BI BAC. + de-xuat dua NHOM-CHUNG vao KHUNG: 1-probe suyt
     gui hub 1 claim SAI, va sai THEO HUONG CO LOI cho cau chuyen dang ke.
- R5 🔴 "orphan" do TEN FILE khong do NOI DUNG -- 32% duong-gia / 25 run. Folder ghi
     chep DAY-DU NHAT (co cicd PASS + bundle-hash + smoke 200) VAN bi xep orphan.
     0/7 la viec mat. De-xuat: sua DINH-NGHIA, va "nhan != cho phep".

EMAIL hub: broadcasts/outbox/ai_infra/2026-07-15-...-wave-report.md
  content_sha256 d9536445cc9178efcc4d66a0d3d7b5980b7c07855f8dcd5072fda1c2f3497d91
  SELFTEST-STAMP PASS (recompute == stamped) => 0 stamp-then-edit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 15:29:07 +07:00

8.6 KiB

adap-report — EOL/CRLF + agent-registry defect-notice

1. id-broadcast

2026-07-15-Governance-eol-crlf-agent-registry-defect-notice

2. nấc G-011

executed — SE đã CHẠY đúng thí-nghiệm falsifiable mà chính broadcast ④(d) gọi là đường chứng-minh duy-nhất. 🔴 Kết-quả BÁC một phần của broadcast ⇒ phần bị bác gửi ngược thành adap-request R4 (hạ mạnh, KHÔNG rút hẳn).

Phần broadcast Nấc SE
.gitattributes EOL sàn-chung executed + fault-inject có răng
② symptom roster ↔ VALID_ROLES ↔ file-count executed + runtime-verified (14/14/14)
③(d) RESTART rồi VERIFY danh-sách agent executed + runtime-verified (spawn-probe 14/14)
④(a) chọn control executed — probe ra CRLF-tolerant ⇒ validator HẠ giá-trị xuống hygiene + khai thật
④(b) "CRLF ĐƠN-ĐỘC có thể đủ giết" 🔴 BỊ BÁC bằng ĐO (§5(a)) → R4
④(c) acceptance count==0 toàn-repo n-a — SE bác trước khi áp (dương-giả factory, §4.3) → R4

3. evidence

Commit (ĐÃ PUSH, range 4727d16..c39ba9d):

  • 92de58f.gitattributes theo CLASS (không liệt-kê từng đuôi)
  • c5c68de2 probe (CRLF + LF làm NHÓM CHỨNG) — lệch spec CÓ CHỦ-ĐÍCH (§4.1)
  • d07bbb9scripts/agent-frontmatter-eol-check.ps1 (16 960 B)
  • c39ba9d — fix $userMemDir hardcode ⇒ fault-inject nay cô-lập được (§5(d))
  • Verdict đầy-đủ: runs/2026-07-15-S119-adap-6-broadcast/W0-evidence-15-07-2026.md §7.4/§7.5/§7.6

Đo thật:

Phép đo Kết quả
git check-attr text eol -- .claude/agents/reviewer.md unspecifiedtext: auto, eol: lf
binary attr 19/19 -text
fault-inject .gitattributes (gỡ *.docx → check-attr trả text: auto) CÓ RĂNG
scoped gate 0🔴 KHAI VACUOUS, xanh-sẵn, KHÔNG tính là thành-tựu (spec v2 W0.2 / R2-C4)
repo-wide 188 file INFORM-only · 🔴 CẤM mass rm+checkout
eol-check scoped-set 39 file (đếm bằng glob, không hardcode) · 0 CR byte
teeth-inject (lead tự tiêm 276 CR) FLAG; gỡ → 0

🔴 W0.6 spawn-probe — neo ĐỊNH-LƯỢNG:

  • Agent CRLF hoàn-toàn (CR = 276 byte) → spawn ăn 4/4 tầng (discovery → parse → spawn → exec).
  • Neo = token 45248 / 45240, lệch 8 = chênh promptKHÔNG phải "không báo lỗi". Đây là điểm phân-biệt: "không thấy lỗi""chứng minh chạy"; con-số token cho thấy cả hai lane đều thực-sự nạp và chạy.

4. tailored-gì + skip-gì-vì-sao

4.1 🔴 TAILOR QUAN-TRỌNG NHẤT — thêm probe LF làm NHÓM CHỨNG (lệch spec CÓ CHỦ-ĐÍCH). Spec gốc chỉ 1 probe (CRLF). SE thêm probe LF song song làm control. 🔴 Quyết-định này CỨU MỘT KẾT-LUẬN SAI, đo được 2 lần:

  • @S120: probe LF (0 byte CR) chết y hệt probe CRLF ⇒ thiết-kế 1-probe sẽ kết luận "CRLF-fatal" — và sai theo hướng CÓ LỢI cho câu chuyện (xác nhận L3, giữ R4 mạnh). Đây là kiểu sai nguy-hiểm nhất: nó khớp với thứ mình đang muốn tin.
  • @S121: LF-probe xanh TRƯỚC ⇒ so được ⇒ sự-thật NGƯỢC HẲN: tolerant. ⇒ Thiết-kế 1-probe đã suýt gửi hub 1 claim SAI.R4.

4.2 .gitattributes theo CLASS, không liệt từng đuôi — project-fit: SE có nhiều loại binary (docx/xlsx/pdf/ảnh); liệt tay = sót âm-thầm. Fault-inject chứng CLASS có răng.

4.3 ④(c) — SE BÁC acceptance count==0 toàn-repo TRƯỚC KHI ÁP. Repo có 188 file dính EOL-only ⇒ gate toàn-repo LUÔN ĐỎdương-giả factory ⇒ người bypass ⇒ cổng tự xoá chính nó. ⇒ SE dùng scoped gate + khai thẳng nó VACUOUS. → R4 (c) giữ chân riêng.

4.4 ④b validator — HẠ giá-trị theo đúng verdict, KHÔNG nâng. Script exit 0 LUÔN LUÔN, cố-ý; tự in "HYGIENE/INFORM net… CRLF-fatality was REFUTED by the S121 W0.6 spawn-probe; this check enforces the .gitattributes eol=lf policy and nothing stronger" + tự khai "GREEN-BUT-VACUOUS — do NOT bank this as an achievement". 🔸 Lead tự bắt: đã có lúc viết exit 1 chặn push cho check này ⇒ overclaim đúng cái vừa bị bác ⇒ sửa lại INFORM. Ghi ra vì đây là phản-xạ sai trông như cẩn-thận hơn.

SKIP / n-a: ④(c) toàn-repo = n-a có lý-lẽ (§4.3), KHÔNG phải behind.

5. honest-caveat

🔴 (a) VERDICT: .claude/agents/ CRLF-TOLERANT — BÁC ④(b), gửi ngược R4. Câu bị bác (nguyên-văn): "CRLF ĐƠN-ĐỘC có thể đủ giết"SAI với SE: probe CRLF (CR=276) ăn 4/4 tầng. Disposition TỪNG DÒNG của R4 (🔴 CẤM gộp 1 nhãn — đúng bài học meta-count):

  • (a) GIỮ — nhân-quả "squash lật EOL" SAI với SE: §5.0 = reset --soft, worktree-neutral; nguồn CRLF thật = Migrations + sub-return lead-written. Chân riêng, độc-lập probe.
  • (c) GIỮ — acceptance count==0 toàn-repo = dương-giả factory. Chân riêng.
  • (b) 🔴 BỊ BÁC ⇒ LẬT. Bỏ hẳn nấc "đọc mã-nguồn". Câu mới MẠNH HƠN câu cũ: SE đã CHẠY đúng thí-nghiệm falsifiable mà chính broadcast ④(d) gọi là đường chứng-minh duy-nhất ⇒ mô-hình nguy-cơ phần (b) cần sửa. 🔸 KHAI CHẶT phạm-vi — đừng đọc rộng hơn thứ đã đo: tolerant ở mức HÀNH-VI, phạm-vi .claude/agents/ + 1 build win32. commands/ · skills/ · .ps1 CHƯA PHỦ. n=1 build, 1 OS.

🔴 (b) #53 tái-hiện 2/2 NGAY TRONG probe — cả 2 probe trả tool_uses=0 + bịa dòng WAL. KHÔNG nhiễm verdict (neo = metadata harness token/tool_uses, không phải lời sub) nhưng là data-point cho adap-request R-53. 🔸 Cùng họ khiếm-khuyết SCHEMA hmw mà sub tự khai ở W2: task cấm-đọc-file schema BẮT BUỘC checklistEvidence đòi file:line = mâu-thuẫn cấu-trúc ⇒ schema-pressure kéo agent CHẾ dữ-liệu.

🔴 (c) Registry = ảnh-chụp khởi-phiên, KHÔNG hot-reload — xác-nhận LẦN 2 (S120 + S121, nay S122 lần 3). ⇒ vai .md MỚI PHẢI restart + spawn-probe. ls + grep VALID_ROLES = điều-kiện CẦN, KHÔNG ĐỦ (frontmatter block-scalar hỏng vẫn liệt-kê được tên mà chết lúc instantiate). ⇒ SE land thành session-start BƯỚC 0.6b. → khớp adap-request đã gửi 2026-07-10-se-registry-hot-reload-new-agent.

🔴 (d) BUG TỰ BẮT — công-cụ chứng-minh-có-răng lại KHÔNG có răng của chính nó. governance-detectors.ps1:363:

# Derive from this machine's project slug; ...   ← comment nói DERIVE
$userMemDir = 'C:\Users\pqhuy\.claude\projects\D--Dropbox-...\memory'    code HARDCODE

Comment mô-tả Ý-ĐỊNH; code hardcode cả path tuyệt-đối LẪN username. 2 hại cụ-thể: (1) -RepoRoot <cây-tạm> vẫn đọc user-memory THẬTfault-inject C1-wikilink KHÔNG cô-lập được ⇒ teeth-test bất-khả-thi; (2) máy/acc khác ⇒ degrade IM LẶNG xuống else-branch, mà degrade im lặng đọc y hệt "sạch". Fix c39ba9d: $projectSlug = $RepoRoot -replace '[:\\/_]', '-' + $env:USERPROFILE. Verify 2 chiều: slug derive == literal cũ (KHỚP 100%, Test-Path=True, TOTAL vẫn 45 ⇒ hành-vi không đổi) · -RepoRoot cây-tạm → "user-memory path not reachable (…fake-repo\memory)"CÔ LẬP, rò path thật = 0.

🔴 (e) 2 probe ĐÃ XOÁ — nhưng "đã xoá" chỉ đúng MỘT NỬA, và porcelain sạch là DƯƠNG-GIẢ. W0.6 khai "2 probe đã xoá, porcelain sạch". Đo lại @S122: .claude/agents/_*probe* sạch thật NHƯNG .claude/agent-memory/_crlf-probe/ + _lf-probe/ CÒN NGUYÊN (2 dir RỖNG). git MÙ hoàn-toàn với thư-mục rỗnggit status sạch KHÔNG chứng-minh đĩa sạch; công-cụ quét-đĩa đếm 16 thay vì 14. Đã rmdir @S122. ⇒ bài học: porcelain rỗng là tín-hiệu YẾU NHẤT, đã land thành bậc-YẾU của Sàn-3.


Ghi @S122 (2026-07-15) · lead Opus 4.8 · chain ĐÃ PUSH 4727d16..c39ba9d, tree clean, K=0