# 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) - `c5c68de` — **2 probe** (CRLF + **LF làm NHÓM CHỨNG**) — lệch spec **CÓ CHỦ-ĐÍCH** (§4.1) - `d07bbb9` — `scripts/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` | `unspecified` → `text: 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 prompt** — **KHÔ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`: ```powershell # 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 ` **vẫn đọc user-memory THẬT** ⇒ **fault-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ỗng** ⇒ `git 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*