Files
solution-erp/docs/governance/adap-reports/2026-07-16-Governance-erratum-eol-metric-hai-chieu-va-bon-lo-moi.md

26 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# adap-report — 2026-07-16-Governance-erratum-eol-metric-hai-chieu-va-bon-lo-moi
- **Broadcast:** hub erratum EOL-metric (type update, supersedes-scope HẸP bản 2026-07-15 `1c039f33…`; content_sha256 `eb12b9b8…`, reviewer_gate PASS_WITH_FIXES→ALL-FOLDED). Nhận STAGE-1 S129 2026-07-16 đêm, verify 2-tuyến PASS (whole-file `9c716472…` + `stamp_verify.py` canonical exit-0).
- **Adopt:** S129 2026-07-16, Harness-9 2-workflow: IMPLEMENT `wf_3fccd7d1-b63` (3 lane inv-cb, 3/3) → REVIEW `wf_8a0249f6-709` (2 lane reviewer, GO-WITH-FIXES ×2). Run-trace: `.claude/workflows/runs/2026-07-16-S129-adap-errata-16-07/`. (Attempt-1 review `wf_dc8975ba-4ab` FAIL-AT-LAUNCH JSON-args-mangle 5ms/0-agent → spec-file invocation H21 — khai thẳng.)
- **Mandate re-verify CHỈ delta** (3 fix + 4 lỗ mới) — KHÔNG adopt lại bản gốc. PROJECT-FIT = ADOPT (SE là consumer thật: đã adopt bản 2026-07-15 ở S119/S120 dạng scoped + attr-floor).
## nấc (G-011)
- **fix① (phép đếm attr-aware 2-chiều + w/mixed) — đã-thoả (pre-satisfy, 2 lượt đo độc-lập T0+R0):** EOL-counter sống DUY-NHẤT của SE = `scripts/agent-frontmatter-eol-check.ps1` đếm **BYTE-level CR 0x0D** (`:180-184`), KHÔNG dùng pattern bị bác `grep -c 'i/lf.*w/crlf'`; bắt được w/mixed by-construction (mọi CR → flag); 0 false-positive vì scoped-set 39 file có 0 file cố-ý `eol=crlf`/`-text` (đo live). Mọi occurrence pattern-hỏng trong repo = **mention** (inbox hub + frozen-run + adap-request SE gửi hub), 0 live-consumer — phân use⟂mention chuẩn citation-trap.
- **fix② (đo SAU attr) — đã-thoả:** attr class-wide `* text=auto eol=lf` land `92de58f` **2026-07-15** (TRƯỚC erratum; first-touch `08c7036` 2026-06-15 chỉ có `broadcasts/**` — bẫy tail-1=first-touch được cả T0 lẫn R0 nail). Counter byte-level attr-independent nên không đứng trên cột attr rỗng.
- **fix③ (cổng push so SỐ, cấm `A && B || C`) — đã-thoả:** push-path sống DUY-NHẤT = `session-end.md §5.2``recount()``$n``if [ "$n" -gt 0 ]` / `[ "$n" -eq 0 ] || { exit 1; }` = so SỐ + guard-clause; `:175` tự-cấm exit-code-grep; eol-check chạy standalone `# exit 0 ALWAYS` INFORM rồi push KHÔNG chain. (R0 adversarial: `:168` có shape `A && B || C` nhưng không-push + B=echo-không-fail = an-toàn, không flag.)
- **lỗ #4 (lone-CR `i/-text`) — executed (check chạy, 0 suspect):** 19 `i/-text` = 12 docx + 6 png + 1 xlsx, TẤT CẢ `attr/-text` declared (0 heuristic-binary); filter SE-tailored → **0 suspect lẽ-ra-text**. Check giữ làm regression-guard (file text lone-CR mới sẽ rơi vào `i/-text` và bị soi). 🔴 **Phát-hiện-riêng gửi hub:** filter mẫu của erratum (`zip|exe|png|jpg|jpeg|gif|pdf|gz|ico|woff2?`) **THIẾU docx/xlsx/pptx/dll** → chạy nguyên-mẫu trên SE cho **13 dương-giả** — bằng-chứng cụ-thể "extension-list phải tailor theo binary-class TỪNG repo khai".
- **lỗ #5 (fixture tracked phải `-text`) — n-a-by-design:** SE 0 fixture EOL tracked — control của eol-check là **synthetic IN-MEMORY** (`:215-219`) + fault-inject qua `-RepoRoot` temp-tree. Không tồn-tại fixture-để-chết. Nếu tương-lai thêm fixture tracked → cần `<dir>/** -text` SAU dòng `* text=auto` (ghi nhận, chưa cần).
- **lỗ #6 (nguồn drift = công-cụ-sinh-file) — executed (vá point-of-generation 2-phía):** inventory 6 write-site → đúng **1 site ghi tracked-text**: `scripts/mfe-eval.ps1:204` `Set-Content -Encoding UTF8` (PS5.1 = BOM + CRLF) ra `.claude/agent-memory/.mfe-state.json` — worktree 5 CR; blob LF nhờ attr clean-filter (contained). **Datum R0 quyết-định: blob mang BOM 3-byte thật.** Vá S129 ĐỦ CẢ 2 PHÍA cùng commit (bài S87 consumer-sweep): writer → `[IO.File]::WriteAllText` UTF8-no-BOM + LF tường-minh; reader `:193` → +`-Encoding UTF8` (hết lệ-thuộc BOM-sniff — vốn là read duy-nhất trong file thiếu encoding). **Honest:** đây là phòng-ngừa point-of-generation + one-time blob-change (BOM rớt ở lần ghi state kế), KHÔNG phải sửa churn đang chảy (porcelain vốn rỗng). Verify: parse 0-err · 0 non-ASCII (gotcha #30) · synthetic write-shape CR=0/LF=5/BOM=False · reader round-trip OK.
- **lỗ #7 (ma-trận 4-ô) — executed-partial (khai thẳng phần không biết):** SE data-point W0.6 = **A/B đổi-EOL-only** (quote-format hằng-số) ⇒ củng-cố HÀNG CRLF-tolerant (scope agents/, 1 win32 build) + là ca-mẫu **restart-verify hợp-lệ** (không kết-luận từ probe-trước-re-scan); **trục-quote UNDETERMINED** (probe đã xoá cố-ý — untracked để attr không normalize; format description không recover được). Chống over-cite tương-lai: +4 dòng **AXIS-limit** vào header eol-check (`:27-30`) — "W0.6 says NOTHING about the description-colon-quote axis".
## evidence
- Run-trace: `runs/2026-07-16-S129-adap-errata-16-07/``implement-synthesis.md` + `review-synthesis.md` + `sub-investigator-codebase-{0,1,2}.md` + `sub-reviewer-{0,1}.md`. Diff code: `scripts/mfe-eval.ps1` (:193 + :202-209) + `scripts/agent-frontmatter-eol-check.ps1` (:27-30) — commit kèm push này.
- REVIEW độc-lập re-run **byte-exact** các số chốt: 19/0-suspect i/-text · CR worktree=5/blob=0 · eol-check 39 file 0 flag exit-0 · attr-landing 92de58f.
## honest-caveat
- **#53 WRITE-lane 4/5 lane** (chỉ T2 tự ghi đĩa) — nội-dung không mất (journal), em-main scribe on-behalf VERBATIM, R1 verify 0-miss. Số scoped-set canonical = **39** (T0 từng kể story "40 = +1 agent mới" — SAI, delta = `skills/README.md` ngoài glob; R1 nail).
- 188 file `i/lf w/crlf` repo-wide (131 EF Migrations) GIỮ INFORM-only by-design — erratum không đổi stance này (mass-fix vẫn cấm; đúng "false-price factory").