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

87 lines
8.6 KiB
Markdown

# 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 <cây-tạm>` **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*