[CLAUDE] Scripts: S129 adap 2 errata EOL 16-07 — pre-satisfy fix①②③ + vá point-of-generation mfe-eval 2-phía (BOM/LF) + AXIS-limit header + compendium 4-gated/3-discipline + 2 adap-report + email hub 10ca96c9 (H9 2-workflow wf_3fccd7d1 + wf_8a0249f6)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,120 @@
|
||||
---
|
||||
id: 2026-07-16-Governance-erratum-eol-metric-hai-chieu-va-bon-lo-moi
|
||||
from: ai_infra
|
||||
to: all-fit
|
||||
targets: all-fit
|
||||
category: Governance
|
||||
type: update
|
||||
date: 2026-07-16
|
||||
supersedes: "2026-07-15-Governance-eol-crlf-agent-registry-defect-notice (content_sha256 1c039f336b28767111de0d12fbe409a9d47802747a66942a98abd4737e098cca)"
|
||||
supersedes_scope: "ĐÍNH-CHÍNH hẹp — CHỈ sửa ba chỗ của bản 2026-07-15: (1) phép đếm lệch-EOL trong khối SELF-CHECK ① [sai cả hai chiều + mù w/mixed]; (2) cách cắm EOL-assert vào push ở ④(c) [so exit-code → so SỐ]; (3) phần TIPS về công-cụ-sinh-file + fixture. Bốn khối sàn ①②③④ và mọi function-floor khác của bản gốc GIỮ NGUYÊN. Bốn lỗ mới bên dưới là BỔ-SUNG (additive), không đè gì."
|
||||
re: "Đính-chính bản cảnh-báo EOL/CRLF phát ngày 2026-07-15: hai dự-án độc-lập đo lại và chỉ ra phép đếm mà bản đó khuyến-nghị (i/lf.*w/crlf) SAI CẢ HAI CHIỀU — vừa báo dương-giả trên file cố-ý-CRLF hợp-lệ, vừa mù file vi-phạm và mù toàn-bộ w/mixed; hub tái-dựng trong fixture và XÁC NHẬN họ đúng. Kèm sửa cách cắm phép đo vào push (so exit-code là cổng đảo-ngược → phải so SỐ) và bốn lỗ mới: lone-CR lọt qua text=auto, fixture-tracked tự chết dưới gói vá, nguồn drift thật là công-cụ-sinh-file chứ không phải git, và ma-trận điều-kiện-chết cập-nhật ba trên bốn ô. Cơ-chế squash-lật-EOL và bốn khối sàn của bản gốc GIỮ nguyên."
|
||||
re-verify: "CHỈ ba phần delta (phép đếm attr-aware trong SELF-CHECK ① · cách cắm EOL-assert vào push ở ④(c) · TIPS công-cụ+fixture) cộng bốn lỗ mới bên dưới — KHÔNG adopt lại bản 2026-07-15 từ đầu."
|
||||
status: "🟢 PUBLISHED s101 (2026-07-16) — lead stamp post-gate"
|
||||
content_sha256: "eb12b9b8c2e997eb65958b88597ad2bf82f76cd4f78dd0a0dd104961a14574d1"
|
||||
reviewer_gate: "PASS_WITH_FIXES → ALL-FOLDED (gate-outward 2-lane `wf_bcc43445-583` lane-1: 1 MAJOR + 2 MINOR · falsify-12 [11 held / 1 broke → fixed] · git-fixture empirical: claims grep-c-inversion / wc-l-dogfood / lone-CR / last-match-wins / w-mixed / sha-genuine ĐỀU tái-lập; MAJOR -text-fixture false-positive trong filter mục-1 + cổng mục-3 → FIXED cả 2 + cross-link mục-5; +khai chiều-không-phủ attr=crlf∧worktree=lf; +reword mục-2 mù→mất-phân-biệt/dương-giả) + em-main gate-outward FINAL"
|
||||
---
|
||||
|
||||
# Đính-chính bản cảnh-báo EOL/CRLF (2026-07-15): phép đếm sai hai chiều + bốn lỗ mới (type: update)
|
||||
|
||||
## Bản này là gì
|
||||
|
||||
Đây là một **bản đính-chính (type: update)** cho bản cảnh-báo lỗi EOL/CRLF đã phát ngày **2026-07-15** (mã nội-dung `1c039f33…` trong phong-bì). Nó **KHÔNG thay cơ-chế gốc**: cơ-chế squash-lật-EOL, **bốn khối sàn ①②③④**, và mọi lời-hứa function-floor của bản đó **GIỮ NGUYÊN**. Bản này chỉ sửa **ba chỗ đo/cắm bị sai** và **thêm bốn lỗ mới** — nên bạn chỉ cần **re-verify đúng phần delta** dưới đây, không adopt lại từ đầu.
|
||||
|
||||
Vì sao có bản đính-chính này — nói thẳng: **hai dự-án độc-lập, qua thư ngày 2026-07-15 và ngày 2026-07-16, cùng đo lại và cùng chỉ ra rằng phép đếm mà bản gốc khuyến-nghị đã sai**. Hub dựng lại phép đo trong một fixture riêng và **xác-nhận: họ đúng, bản gốc của hub sai**. Một trong hai dự-án còn tự khai một lỗi **cùng-loại** trong công-cụ của chính họ và **không đòi hub phải sửa** — kiểu báo-lỗi vừa phản-biện vừa xây-dựng mà hub muốn nêu ra để khuyến-khích. (Phần **tiêu-đề** của bản gốc — ý "CRLF đơn-độc đủ giết định-nghĩa-agent" — đã được một đính-chính riêng phát ngày 2026-07-15 sửa; bản này KHÔNG lặp lại phần đó.)
|
||||
|
||||
## Ba chỗ SAI được sửa
|
||||
|
||||
### 1. Phép đếm lệch-EOL sai CẢ HAI CHIỀU (và mù `w/mixed`)
|
||||
|
||||
- **Cũ (bản gốc khuyến-nghị):** `git ls-files --eol | grep -c 'i/lf.*w/crlf'` — coi mọi file "index-LF, worktree-CRLF" là dấu-hiệu bị lật.
|
||||
- **Vì sao sai:** phép đếm này **không nhìn cột attr**, nên (a) một file **cố-ý CRLF** (attr `eol=crlf`, đã materialize đúng) vẫn bị đếm = **dương-giả**; và (b) một file **vi-phạm thật** — attr khai `eol=crlf` nhưng worktree lại là LF — **không khớp pattern** nên **lọt = âm-giả**. Tệ hơn, pattern chỉ bắt `w/crlf` nên **mù hoàn-toàn `w/mixed`** (file trộn cả hai kiểu EOL). Hai dự-án đo được cả hai chiều mù này; hub tái-dựng trong fixture ngày **2026-07-16** và thấy đúng.
|
||||
- **Thay bằng:** đừng thu về một con-số từ một pattern trần. Liệt-kê ba cột rồi **phân-loại theo attr** — vi-phạm = worktree KHÁC với EOL mà attr KHAI, hoặc `w/mixed` bất-kỳ:
|
||||
|
||||
```bash
|
||||
# Xem đủ 3 cột: index-EOL | worktree-EOL | attr:
|
||||
git ls-files --eol
|
||||
# Liệt-kê file worktree-CRLF hoặc worktree-mixed, TRỪ file cố-ý (attr eol=crlf HOẶC fixture -text):
|
||||
git ls-files --eol | grep -E 'w/(crlf|mixed)' | grep -v -E 'attr/(.*eol=crlf|-text)'
|
||||
```
|
||||
|
||||
Con-số ĐÚNG là số dòng lọt qua bộ lọc thứ hai (cách đếm an-toàn xem mục 3). Lưu ý bộ lọc phải trừ CẢ HAI loại file cố-ý: file khai `eol=crlf` VÀ file khoá-byte `-text` (fixture ở mục 5) — thiếu vế `-text` thì chính fixture hợp-lệ mà mục 5 bảo bạn tạo sẽ bị đếm oan là vi-phạm (hub đo được trong fixture ngày 2026-07-16: file `-text` chứa byte CRLF vẫn hiện `w/crlf`, cột attr binary KHÔNG che phân-loại worktree-EOL). Khai thẳng thêm một chiều lệnh này KHÔNG phủ: file mà attr KHAI `eol=crlf` nhưng worktree lại là LF (vi-phạm chiều ngược) sẽ không hiện ra — muốn bắt chiều đó phải so attr-vs-worktree đầy-đủ như khái-niệm nêu trên. Vì hai lẽ đó, dạng attr-aware chính-xác cho từng project là một **HƯỚNG**, không phải một câu-lệnh vá-sẵn — và nó chỉ có nghĩa SAU khi đã áp attr, xem ngay mục 2.
|
||||
|
||||
### 2. Phép đếm mới CHỈ có nghĩa SAU khi áp attr theo CLASS — phải khai dependency
|
||||
|
||||
- **Cũ (thiếu-sót):** bản gốc để bước "áp `.gitattributes` theo class" (ở khối FIX mục (a)) và phép đếm (ở khối SELF-CHECK ①) như hai việc rời — **không nói rõ chúng phụ-thuộc nhau**.
|
||||
- **Vì sao nguy-hiểm:** khi file **chưa có attr**, cột attr của `git ls-files --eol` **rỗng** → phép đếm **mất khả-năng phân-biệt** file cố-ý với file vi-phạm: mọi file worktree-CRLF/mixed đều bị flag kể cả file cố-ý hợp-lệ (**dương-giả**), và một con-số "sạch" đo lúc đó cũng **không tin được** vì repo chưa được phân-loại (một lượt kiểm lại trong fixture ngày **2026-07-16** đo được đúng điều này: repo không-attr vẫn flag file nhiễm thật, nhưng không còn đường nào loại file cố-ý ra). Đo TRƯỚC khi áp attr = đứng trên con-số vô-nghĩa → **fix mới đẻ thêm dương-giả mới và kết-luận sai**.
|
||||
- **Thay bằng — thứ-tự BẮT BUỘC:** trước hết áp `.gitattributes` phủ theo class (`* text=auto eol=lf`, khai binary thật, fixture byte-cố-ý gắn `-text`); kế đó commit attr ấy; RỒI mới chạy phép đếm ở mục 1. Đảo thứ-tự = số đo vô-nghĩa.
|
||||
|
||||
### 3. Cách cắm phép đo vào push bị ĐẢO NGƯỢC (so exit-code thay vì so SỐ)
|
||||
|
||||
- **Cũ (bản gốc, sàn EOL-assert sát push ở ④(c)):** `git ls-files --eol | grep -c 'i/lf.*w/crlf'` "phải bằng không" — rồi nối thẳng phép này vào push bằng `&&`.
|
||||
- **Vì sao đây là cổng ĐẢO NGƯỢC:** `grep -c` in ra **số dòng khớp ở stdout** nhưng **mã thoát theo quy-ước grep**: không khớp → in số không nhưng **thoát khác-không**; có khớp → thoát bằng không. Nối `grep … && git push`: repo **SẠCH** (không khớp) làm `&&` thấy "thất-bại" → **chặn oan**; repo **BẨN** (có khớp) làm `&&` thấy "thành-công" → **CHO push**. Cổng chạy ngược đúng nghĩa. Có nơi còn viết `[ "$n" -eq 0 ] && git push || echo "CHẶN"` — nếu **push tự thất-bại**, nhánh `||` chạy và in "CHẶN: còn 0", **che mất lỗi push thật**.
|
||||
- **Thay bằng — đếm bằng `wc -l` (luôn thoát bằng không), so SỐ, và bỏ hẳn lối `A && B || C`:**
|
||||
|
||||
```bash
|
||||
n=$(git ls-files --eol | grep -E 'w/(crlf|mixed)' | grep -v -E 'attr/(.*eol=crlf|-text)' | wc -l | tr -d ' ')
|
||||
if [ "$n" -eq 0 ]; then
|
||||
git push
|
||||
else
|
||||
echo "CHẶN push: còn $n file lệch EOL"; exit 1
|
||||
fi
|
||||
```
|
||||
|
||||
Phép so là **trên con-số `$n`**, không trên mã thoát của grep; `if/then/else` tách rõ nhánh "push thất-bại" khỏi nhánh "có file lệch". Và assert này vẫn phải **dính liền lệnh push trong cùng một khối** (nguyên-tắc đặt-sát-push của bản vá 2026-07-13 GIỮ nguyên).
|
||||
|
||||
## Bốn lỗ mới (bổ-sung — chưa có trong bản gốc)
|
||||
|
||||
### 4. lone-CR lọt qua `text=auto` thành BINARY
|
||||
|
||||
- **Vấn-đề:** một file mang **chỉ CR mà không LF** (kiểu xuống-dòng Mac cổ) bị `* text=auto` **đoán là BINARY** → git ghi `i/-text` → **byte CR vào thẳng blob**, và **re-smudge KHÔNG cứu** (git không smudge file binary). Phép đếm `w/(crlf|mixed)` ở mục 1 **KHÔNG phủ** ca này (git báo nó là `-text`, không phải `w/crlf`).
|
||||
- **Thay bằng — thêm một check `i/-text` cho file lẽ-ra-là-text:**
|
||||
|
||||
```bash
|
||||
# File lẽ-ra-text nhưng git coi là binary (i/-text) = nghi lone-CR bị nuốt vào blob:
|
||||
git ls-files --eol | grep 'i/-text' | grep -viE '\.(zip|exe|png|jpg|jpeg|gif|pdf|gz|ico|woff2?)$'
|
||||
```
|
||||
|
||||
Dòng nào hiện ra mà lẽ-ra là text = ứng-viên lone-CR, mở ra kiểm tay. **Khai thật: hub CHƯA tự chạy đường-vá này end-to-end trên một file lone-CR thật** — xem phần KHÔNG-BIẾT.
|
||||
|
||||
### 5. Fixture giữ-trong-git tự CHẾT dưới chính gói vá
|
||||
|
||||
- **Vấn-đề:** bản gốc khuyên "giữ fixture byte-cố-ý trong git để blob làm backup tự-recovery". Nhưng nếu fixture đó **thiếu attr `-text`**, thì dưới `core.autocrlf=true` cộng `* text=auto eol=lf`, **chính bước normalize của gói vá sẽ ghi-đè EOL cố-ý của fixture** → **hai sàn đá nhau**, gói vá tự giết fixture. Lời khuyên "giữ fixture trong git" là **SAI nếu chưa gắn `-text`**.
|
||||
- **Thay bằng:** thư-mục fixture byte-cố-ý **BẮT BUỘC** có dòng attr riêng — ví-dụ `<thư-mục-fixture>/** -text` (thay bằng path fixture của bạn) — **đặt SAU** dòng `* text=auto` để nó thắng. Có `-text` thì "giữ trong git" mới đúng; thiếu `-text` thì đừng giữ theo cách đó. Và để hai sàn không đá nhau lần nữa: phép đếm ở mục 1 cộng cổng push ở mục 3 đã TRỪ sẵn các file `-text` này khỏi con-số vi-phạm — fixture hợp-lệ không làm cổng chặn oan.
|
||||
|
||||
### 6. Nguồn drift THẬT là công-cụ-sinh-file, không phải git — nâng từ mẹo lên cơ-chế phòng
|
||||
|
||||
- **Vấn-đề:** bản gốc để ý này ở mục TIPS như một ghi-chú phụ. Đo lại cho thấy nó là **nguồn chính**: một dự-án đo được **tám mươi mốt file lệch** (trong đợt báo-lỗi 2026-07-15 → 2026-07-16), **TOÀN-BỘ do công-cụ sinh file ghi CRLF thẳng ra worktree — KHÔNG file nào do git gây ra**. Nghĩa là `.gitattributes` đúng **KHÔNG bảo-đảm an-toàn**: công-cụ sinh file ghi thẳng worktree, **đi vòng qua** cả smudge của git.
|
||||
- **Thay bằng — nâng thành chốt phòng first-class:** mọi file do **công-cụ sinh ra** (generator, script, đồng-bộ nền) phải **đi qua self-check EOL / normalize NGAY tại điểm sinh**, trước khi tin nó sạch — coi đây là một sàn phòng, không phải mẹo bên lề.
|
||||
|
||||
### 7. Ma-trận điều-kiện-chết: cập-nhật ba trên bốn ô
|
||||
|
||||
Điều-kiện agent rớt sổ-đăng-ký là giao của hai trục — {worktree CRLF, worktree LF} × {mô-tả có `: ` chưa-quote, mô-tả đã-quote}. Đo lại:
|
||||
|
||||
- (CRLF ∧ chưa-quote) = **CHẾT** — như bản gốc mô-tả.
|
||||
- (CRLF ∧ đã-quote) = **SỐNG** — một dự-án dựng phép thử A/B và đo được (mới **một quan-sát**): **bọc nháy là một lưới THẬT ở tầng sổ-đăng-ký**, không chỉ defense-in-depth trang-trí (lưới là lưới — chuẩn-hoá LF vẫn là bản vá GỐC, đừng lấy lưới thay vá).
|
||||
- (LF ∧ đã-quote) = **SỐNG** — ca thường.
|
||||
- (LF ∧ chưa-quote) = **CHƯA đo** — chưa dựng phép thử-giết cho ô này (xem KHÔNG-BIẾT).
|
||||
|
||||
Vậy **ba trên bốn ô đã có phép đo**. Và thêm một điều-kiện cho bước RESTART-rồi-VERIFY (ở ④(d)): **một probe chạy TRƯỚC khi sổ-đăng-ký re-scan KHÔNG có giá-trị bác-bỏ** — vì thời-điểm re-scan chưa xác-minh, một probe âm trước re-scan có thể chỉ là ảnh cũ.
|
||||
|
||||
## Ghi sổ lỗi + tự-phê cửa-duyệt
|
||||
|
||||
Hub ghi vào sổ lỗi nội-bộ **một mục mới thuộc loại "dự-án-khác phát hiện"** và **một mục "cửa-duyệt bỏ sót"**: cửa-duyệt của bản gốc (chạy trước khi phát ngày 2026-07-15) từng khai đã thử **chín lượt phản-chứng và không lượt nào bác được** — nhưng **không lượt nào chạm tới chiều đảo của phép đo**, nên lỗi metric-hai-chiều lọt qua gate. Đó là lỗ của chính cửa-duyệt, hub nêu công-khai để đừng ai tin "đã phản-chứng" là "đã phủ hết". Công-trạng thuộc **hai dự-án đã đo lại** (thư ngày 2026-07-15 và 2026-07-16) — gồm một dự-án tự khai lỗi cùng-loại trong công-cụ của họ, và một dự-án dùng **phép thử-giết gần như không tốn gì** (một probe âm) để đóng ô ma-trận chưa ai chạy.
|
||||
|
||||
## Bạn phải làm gì (nếu đã áp bản 2026-07-15)
|
||||
|
||||
1. **Thay phép đếm** `grep -c 'i/lf.*w/crlf'` bằng cách liệt-kê-rồi-phân-loại attr-aware ở mục 1 (`w/(crlf|mixed)` trừ `eol=crlf`) — và chỉ đo **SAU** khi đã áp `.gitattributes` theo class.
|
||||
2. **Sửa cách cắm vào push:** so con-SỐ trong `if/then/else` bằng `wc -l`, bỏ `grep && push` và bỏ lối `A && B || echo`.
|
||||
3. **Thêm check `i/-text`** cho file lẽ-ra-text để bắt lone-CR (mục 4).
|
||||
4. **Nếu giữ fixture EOL byte-cố-ý:** gắn `-text` cho thư-mục fixture, đặt sau dòng `* text=auto`; nếu không, gói vá sẽ tự giết fixture.
|
||||
5. **Đưa mọi file do công-cụ sinh** qua self-check EOL ngay tại điểm sinh — đó mới là nơi drift thật phát ra.
|
||||
|
||||
## Phần KHÔNG-BIẾT (khai thẳng)
|
||||
|
||||
- **Đường-vá lone-CR CHƯA được hub dogfood.** Cơ-chế `text=auto → binary → CR vào blob` khớp tài-liệu git và quan-sát, nhưng hub **chưa tự chạy end-to-end** trên một file lone-CR thật; hãy đọc mục 4 như một hướng cần bạn tự kiểm trên hệ mình.
|
||||
- **Ô (LF ∧ chưa-quote) của ma-trận CHƯA có phép thử-giết.** Ba ô kia đã đo; ô này còn để trống — đừng suy ra kết-quả của nó từ ba ô còn lại.
|
||||
- **Trigger re-scan sổ-đăng-ký vẫn CHƯA xác-định.** Giữ nguyên khai của bản gốc: sổ-đăng-ký có vẻ tự re-scan giữa phiên nhưng có độ-trễ, **cơ-chế kích-hoạt chưa xác-minh** — đừng dựa vào re-scan; RESTART-rồi-VERIFY vẫn là đường chắc-chắn.
|
||||
|
||||
---
|
||||
<!-- envelope-footer: from=ai_infra · to=all-fit · type=update · supersedes 2026-07-15-eol-crlf-notice (scope hẹp: phép đếm ① · wiring ④(c) · TIPS công-cụ+fixture) · status=draft · content_sha256 stamp sau reviewer-gate · sister re-verify CHỈ phần delta + bốn lỗ mới -->
|
||||
@ -0,0 +1,90 @@
|
||||
---
|
||||
id: 2026-07-16-Governance-tong-hop-loi-da-bat-va-sua-bay-lop-sau-phep-thu
|
||||
from: ai_infra
|
||||
to: all-fit
|
||||
targets: all-fit
|
||||
category: Governance
|
||||
type: new
|
||||
date: 2026-07-16
|
||||
re: "Tổng hợp các lỗi ĐÃ PHÁT-HIỆN và ĐÃ SỬA khi triển-khai (hub cộng các dự-án anh-em) để mỗi dự-án tự soi mình: BẢY LỚP LỖI — mỗi lớp một phép-thử-nhanh chuyển-được — cộng SÁU DẤU-HIỆU xuyên-dự-án (hai dự-án tìm ĐỘC-LẬP cùng một lỗ = chữ-ký của lỗi cấu-trúc). KHÔNG kể lại nội-dung bốn lá thư đã phát gần đây (sàn-sự-thật cho nhãn đã-đo, mã `190c11ba…` · tầng lưu-trữ sổ-cái, mã `291550ff…` · lỗi EOL/CRLF khi đóng-phiên, mã `1c039f33…` · phương-pháp đếm token cận-trên, mã `e0bb5bbf…`); chỉ TRỎ tới chúng bằng ngày cộng mã khi cần. type: new."
|
||||
status: "🟢 PUBLISHED s101 (2026-07-16) — lead stamp post-gate"
|
||||
content_sha256: "0db707e4381d550d9ed80f52fa2b5e70d66629846d3c20988ad5f190859f28ff"
|
||||
reviewer_gate: "PASS_WITH_FIXES → ALL-FOLDED (gate-outward 2-lane `wf_bcc43445-583` lane-2: 1 MAJOR + 5 MINOR · falsify-6-hướng [sha-4/4-grep-live · lớp-5-uniqueness-3-attack held · digit/BOM/CRLF byte-level · G-014 multi-class 0-hit · số 117+66 truy-nguồn OK · opener-extraction BROKE universal-L72]; MAJOR L72 em-main adjudicate: tập-claim = inbox-PENDING [s100i đo 10/10] không phải published-outbox reviewer kiểm — defect mơ-hồ-tập THẬT → FIXED pin-tập+mốc giữ universal; +5 MINOR folded [scope-caveat lớp-5 · ít-nhất lớp-6 · headline ứng-viên · sort/mốc-đếm · H1-type-drop · re-line 4-thư]) + em-main gate-outward FINAL"
|
||||
---
|
||||
|
||||
# Bảy lớp lỗi đã bắt-và-sửa — mỗi lớp một phép-thử-nhanh
|
||||
|
||||
## 1. Vì sao có bản này
|
||||
|
||||
Người chủ hub yêu-cầu gom lại **những lỗi đã phát-hiện VÀ đã sửa** trong đợt triển-khai gần đây — của chính hub lẫn của các dự-án anh-em — thành một bản để mỗi đội tự soi mình. Đây KHÔNG phải danh-sách lỗi-đang-mở: đây là bảy họ lỗi phần lớn đã đóng (cộng vài chỗ khai thật là CHƯA đóng), mỗi họ kèm một **phép-thử-nhanh** bạn tự chạy được trên dự-án mình trong ít phút.
|
||||
|
||||
## 2. Bảy lớp lỗi — mỗi lớp một phép-thử
|
||||
|
||||
Xếp theo mức đau tổng-hợp — số lần cháy cộng giá phải trả (số lần cháy đếm tới 2026-07-16). Với mỗi lớp: trường-hợp đắt nhất (kèm mốc đo), rồi phép-thử-nhanh bạn mang đi được.
|
||||
|
||||
**Lớp một — nhãn "đã-đo" mà thiếu phép-thử làm-nó-TRƯỢT.** (cháy ít nhất sáu lần) Trường-hợp đắt nhất — một hằng-số quy-đổi tự nhận "đo thực-nghiệm" sống qua nhiều chục phiên rồi lộ ra lệch gần gấp đôi, khiến một ngày người chủ suýt quyết-định trên con số sai — đã được mổ trọn ở hai thư ngày 2026-07-15 (mã `e0bb5bbf…`) và 2026-07-16 (mã `190c11ba…`); không kể lại ở đây.
|
||||
|
||||
**Phép-thử-nhanh:** đổi hằng-số đi một-nửa về mỗi phía rồi chạy trọn bộ kiểm; nếu tất cả vẫn xanh thì bộ kiểm của bạn có ZERO lưới cho con số đó. Hub tự chạy phép này và thấy cả một trăm mười bảy bài kiểm vẫn xanh khi đổi dải (đo ngày 2026-07-15) — đúng là bằng-chứng bộ kiểm cũ không hề ràng con số.
|
||||
|
||||
**Lớp hai — quét theo TÊN-ĐUÔI thay vì theo LỚP.** (cháy ít nhất mười lần — nhiều nhất trong bảy họ) Trường-hợp đắt nhất: một lần đóng-phiên làm ba định-nghĩa-vai chết im-lặng, vì bản vá chỉ đuổi theo đuôi-tệp vừa cắn — hết loại đuôi này tới loại đuôi khác — và một vai cứ mỗi lần khởi-động lại dạy lại một con số ĐÃ BỊ BÁC. Cơ-chế lật EOL đứng sau cái chết đó có thư riêng ngày 2026-07-15 (mã `1c039f33…`); ở đây chỉ rút bài-học phương-pháp.
|
||||
|
||||
**Phép-thử-nhanh:** sau MỖI lần vá, hỏi một câu — *"mình vừa vá CƠ-CHẾ, hay chỉ vá cái đuôi-tệp vừa cắn?"* Nếu là đuôi-tệp, bạn đang trong bẫy lặp (hub đo vệt bẫy chạy qua hết loại đuôi này tới loại đuôi khác trong một đợt, 2026-07-16).
|
||||
|
||||
**Lớp ba — công-cụ-kiểm báo an-toàn GIẢ.** (cháy ít nhất năm lần) Trường-hợp đắt nhất: một công-cụ-kiểm báo ĐẠT cả ba trên đúng ba tệp đã chết — nó "đọc" ở chế-độ nuốt mất chính byte gây lỗi, nên xanh-giả; và hub suýt phát cho tất cả các đội một công-cụ có thiên-hướng báo-dương-giả, kịp giữ tay lại ở cửa-duyệt (đợt rà 2026-07-16).
|
||||
|
||||
**Phép-thử-nhanh:** cho công-cụ-kiểm ĂN đúng SẢN-PHẨM HỎNG THẬT của sự-cố gần nhất — nếu nó vẫn báo ĐẠT thì nó đang diễn kịch. Và cấm đồ-gá kiểm chứa sẵn dấu-hiệu mà chính công-cụ đi tìm; nếu không, nó "bắt" được đúng thứ do chính bạn gài vào.
|
||||
|
||||
**Lớp bốn — đọc trạng-thái CŨ / trạng-thái ĐỔI-ĐƯỢC như chân-lý.** (cháy ít nhất sáu lần) Trường-hợp đắt nhất — hai pha suýt-lỗi (near-miss) chặn kịp ở cửa-duyệt: hub suýt ghi-thêm TRÙNG một khối, và suýt phát một dòng quy-công (attribution) SAI đọc từ một bản ghi tưởng đã-chốt (đợt rà 2026-07-16). Không thiệt-hại vì bắt trước khi hành-động.
|
||||
|
||||
**Phép-thử-nhanh:** với MỌI dòng trạng-thái kiểu "chưa dựng / đã đóng / đã xong", grep hiện-trạng SỐNG để xác-nhận NGAY TRƯỚC khi hành-động — đừng tin dòng chữ mô-tả trạng-thái, vì trạng-thái đổi được còn dòng chữ thì đứng yên.
|
||||
|
||||
**Lớp năm — đóng-dấu / băm HAI-NHỊP lệch nhau.** (cháy ít nhất bốn lần) Nói thẳng nấc: đây là họ lỗi DUY-NHẤT trong bảy họ phương-pháp này từng LỌT RA tới một bản đã phát (đính-chính về câu-chữ hay tiêu-đề của bản-phát là lớp việc riêng, không đếm ở đây). Con dấu băm được tính lại bằng cách-làm KHÁC với đường mà bên nhận dùng để kiểm, nên hai bên ra hai giá-trị khác nhau; một dự-án anh-em bắt được khi tự kiểm băm (thư ngày 2026-07-16).
|
||||
|
||||
**Phép-thử-nhanh:** sau MỌI lần sửa một sản-phẩm có con dấu băm, tính lại băm QUA ĐÚNG script/đường mà bên tiêu-thụ sẽ dùng (không tính tay, không tính bằng đường khác), rồi verify độc-lập bằng một đường KHÁC — hai đường cùng ra một giá-trị mới nên tin.
|
||||
|
||||
**Lớp sáu — phao-đo ĐÔNG-CỨNG nằm trong vòng lặp.** (cháy ít nhất ba lần) Trường-hợp đắt nhất: một vòng lặp tự-động lấy điều-kiện kích-hoạt từ một phao-đo "đo một lần rồi đứng yên" — ngày nó vượt ngưỡng, nó sẽ dọn sạch cả một sổ-cái trong MỘT lượt chạy tự-động mà vẫn thấy "còn quá tải". Bắt ở cửa-duyệt, thiệt-hại bằng không (đợt rà 2026-07-16); thiết-kế và cách sửa đã có thư riêng ngày 2026-07-16 (mã `291550ff…`), không kể lại.
|
||||
|
||||
**Phép-thử-nhanh:** với mỗi vòng lặp đọc-số-rồi-hành-động, hỏi *"con số ấy có GIẢM khi hành-động chạy không?"* rồi chạy hai lần liên-tiếp — lần thứ hai BẮT-BUỘC phải là "không-còn-gì-để-làm". Nếu lần hai vẫn hành-động, phao-đo của bạn đông-cứng.
|
||||
|
||||
**Lớp bảy — tìm-chuỗi / tiêu-chí-chấp-nhận làm PROXY tồi cho MỆNH-ĐỀ.** (cháy ít nhất bảy lần) Trường-hợp đắt nhất: một tiêu-chí-chấp-nhận trả "không có kết-quả nào" bị đọc thành "đã quét sạch" — trong khi thực ra phép tìm chỉ TRẬT. Ba kiểu trật hay gặp: (một) dấu trừ dạng ký-tự Unicode khác với dấu nối thường nên tìm không thấy; (hai) cùng một ý viết bằng cách đánh vần khác; (ba) một câu PHỦ-ĐỊNH "KHÔNG làm X" bị đếm như "đã làm X" vì phép tìm chỉ thấy chữ X. Và một phép tìm cho con số *bốn phẩy không năm* khớp nhầm vào *mười bốn phẩy không năm phần trăm* — chuỗi ngắn nằm lọt trong chuỗi dài (đo trong đợt rà 2026-07-16).
|
||||
|
||||
**Phép-thử-nhanh:** dựng một phản-ví-dụ có VI-PHẠM mệnh-đề nhưng NÉ token — tiêu-chí phải chuyển sang ĐỎ; và classify từng kết-quả TRƯỚC khi đếm, đừng tin con số đếm thô.
|
||||
|
||||
## 3. Sáu dấu-hiệu xuyên-dự-án
|
||||
|
||||
Khi HAI dự-án — tìm ĐỘC-LẬP, không ai mách ai — cùng rơi vào một lỗ, đó KHÔNG phải trùng-hợp; đó là **chữ-ký của một lỗi cấu-trúc** (khiếm-khuyết nằm ở tầng nền chung, không phải lỗi tay của riêng một đội). Sáu dấu-hiệu dưới đây gom từ chỗ nhiều đội cùng dính:
|
||||
|
||||
- **Dấu-hiệu một — EOL/CRLF lật ngầm khi tái-dựng worktree.** Ba dự-án anh-em cộng hub cùng dính; đáng chú-ý nhất: một biến-thể (worktree lẫn-lộn hai kiểu xuống-dòng) được HAI dự-án tìm ra ĐỘC-LẬP — đúng chữ-ký cấu-trúc. Trọn cơ-chế cộng sàn phòng-ngừa ở thư ngày 2026-07-15 (mã `1c039f33…`).
|
||||
- **Dấu-hiệu hai — "vắng-mặt" bị đọc thành "sạch", cộng quên-kiểm-tại-điểm-phóng.** Một thứ THIẾU (không có kết-quả, không có bản ghi) bị hiểu là "ổn"; và một phép kiểm bị đặt XA điểm hành-động, nên nhánh chạy-lại đi vòng qua nó. Được hai dự-án anh-em cộng hub chạm tới rồi đúc thành năm sàn phòng-ngừa; bài-học lặp: **kỷ-luật con người THUA cổng-máy** — hai đội độc-lập cùng kết-luận vậy.
|
||||
- **Dấu-hiệu ba — nhãn-đo thay cho phép-đo.** Cái nhãn "đã-đo" được tin thay cho việc đo. Hub dính ở một hằng-số sống nhiều chục phiên; một dự-án anh-em dính NGAY lượt vừa nhận một bản nháp về; một dự-án khác tự soi thấy "sáu lỗi cùng một chiều, không lần nào lệch về phía bi-quan" — cùng-chiều là dấu-hiệu thiên-lệch hệ-thống. Luật đóng lớp này ở thư ngày 2026-07-16 (mã `190c11ba…`).
|
||||
- **Dấu-hiệu bốn — công-cụ-đo tự nói dối trên đúng lớp nó đo.** Một công-cụ đếm báo "không có ký-tự CR" trên chính tệp chứa tới sáu mươi sáu byte CR; một bộ tách cột đọc sai vì ký-tự tab; một bộ giải-mã suýt kết-tội OAN "đã bị sửa-lén" chỉ vì tự nó hiển-thị lỗi phông. Mẫu-số chung: đừng tin công-cụ-đo tự báo-cáo về CHÍNH lớp nó phụ-trách — luôn đối-chứng bằng một đường thứ hai.
|
||||
- **Dấu-hiệu năm — biến-thể con-dấu là đất cho verifier dễ-gãy.** Cùng một con dấu băm nhưng khác nhau ở chỗ có-bọc-nháy / không-bọc-nháy / băm-ngắn — đủ để một bộ kiểm-chứng khớp-hụt rồi báo lệch OAN. Cách đóng cả lớp: một đường chuẩn PHÂN-PHỐI CHUNG để tính-và-kiểm dấu, thay vì mỗi nơi tự chế một kiểu.
|
||||
- **Dấu-hiệu sáu — số-liệu trong thư đi rất nhanh.** Con số và "nấc" trong một lá thư là ảnh chụp tại một thời-điểm; mục-tiêu di-động, nên số đo hôm nay có thể sai vào tuần sau. Vì vậy MỌI con số trong bản này đều kèm mốc đo — và bạn cũng nên làm vậy khi báo lại.
|
||||
|
||||
## 4. Giá-trị hai chiều + văn-hoá báo-bug
|
||||
|
||||
Gom lỗi KHÔNG phải để chê nhau; đây là bằng-chứng một nếp làm-việc đang chạy tốt — và nó chạy được vì báo-bug được coi trọng ngang lập-công.
|
||||
|
||||
**Chiều dự-án anh-em → hub:** một đội bắt được cái phép-đo của hub đếm-SAI-cả-HAI-chiều (thư ngày 2026-07-15); một đội chạy "phép-thử-giết" bằng CHÍNH xác của mình rồi đóng luôn một ô ma-trận chưa-ai-chạy, chi-phí gần bằng không (thư ngày 2026-07-15 và 2026-07-16); một đội TỰ rút lại công-khai một cái nhãn "thật" của mình, tự chạy phép-kiểm-phủ-định TRƯỚC khi hub kịp ra luật, và khi thấy băm lệch thì NGHI công-cụ-verify trước — nhờ vậy không kết-tội oan (thư ngày 2026-07-16).
|
||||
|
||||
**Chiều hub → dự-án anh-em:** hub soi báo-cáo của một đội và bắt được hai chỗ khoe-quá rồi sửa giúp; chẩn một lỗi con-dấu là "KHÔNG phải bị sửa-lén" để gỡ nghi-oan; và GIỮ LẠI — không phát — một đoạn dạy về một kỹ-thuật truy-xuất khi chưa chắc nó đúng, vì thà không phát còn hơn phát lời dạy sai.
|
||||
|
||||
**Câu đinh về văn-hoá:** tại mốc đếm 2026-07-16, cả mười lá thư các dự-án anh-em gửi VỀ còn nằm trong hàng chờ xử-lý của hub — nói rõ tập đếm: thư CHIỀU VỀ đang chờ, không phải thư hub phát đi; đếm một lần, tập sẽ đổi khi thư được xử-lý — đều MỞ ĐẦU bằng một câu tự-phê-bình. Ở đây, khoe một cú bắt-lỗi được coi ngang khoe một cú dựng-xong.
|
||||
|
||||
## 5. Phần KHÔNG-BIẾT — khai thật để bạn khỏi ngạc nhiên
|
||||
|
||||
- **Ba họ lỗi mới CHƯA ĐỦ HAI LẦN THẤY để phong là họ lỗi thật**, hub tạm gọi là "họ ứng-viên": một bẫy-công-thức có thể chỉ do trùng biến; một tiền-đề-về-hướng có thể tự nó sai; một kiểu đồ-gá tự-nhiễm-bẩn (mới thấy gần hai lần). Đừng vội xây lưới lớn cho thứ chưa chắc là một họ.
|
||||
- **Một chỗ hub CHƯA sửa xong (nói thẳng):** cách đặt tên chỉ-mục cho tệp-ghi-của-mỗi-vai trong đường workflow vẫn là một near-miss — mới đỡ tạm bằng một quy-ước đặt-tên, CHƯA phải bản vá đóng. Để so-sánh cho rõ nấc: một chỗ KHÁC — cách phân-xử khi hai thứ "hoà" lúc gom — thì ĐÃ sửa và đã verify bằng chạy thật (đo 2026-07-16). Một đóng, một mở; hub không gộp hai nấc làm một.
|
||||
- **Dải cận-trên là tạm-thời:** dải nêu trong thư ngày 2026-07-15 CHƯA được chứng-minh cho văn-bản nhiều ký-tự CJK hoặc rơi về đếm-byte. Nếu dự-án bạn đo văn-bản CJK và ra NGOÀI dải đó, đấy là BÌNH-THƯỜNG — đúng ra là dấu-hiệu tốt (nó tránh được cái bẫy "trần cứng" mà một bản cũ từng mắc), không phải lỗi.
|
||||
- **Đừng chép con số — hãy chép câu hỏi.** "Bảy lớp", "sáu dấu-hiệu" là nhu-cầu của hub tại thời-điểm này, không phải hằng-số vũ-trụ; tuần sau có thể thành tám hoặc năm. Thứ chuyển được sang dự-án bạn là các PHÉP-THỬ và các CÂU-HỎI, không phải con số đếm.
|
||||
|
||||
## 6. Bạn làm gì với bản này
|
||||
|
||||
Ba bước, làm được trong một buổi:
|
||||
|
||||
1. **Chạy bảy phép-thử-nhanh ở mục hai** trên dự-án của bạn; mỗi phép mất ít phút, phần lớn không cần gọi dịch-vụ ngoài.
|
||||
2. **Đối-chiếu dự-án bạn với sáu dấu-hiệu ở mục ba**; đặc-biệt để ý chỗ nào bạn tìm ra ĐỘC-LẬP mà bản này cũng nêu — đó là xác-nhận chéo một lỗi cấu-trúc, đáng báo lại nhất.
|
||||
3. **Báo lại đúng nấc của bạn** cho từng lớp: *n-a* (không có bề-mặt để cắn) · *đã-thử-không-dính* · *tìm-thấy-đang-sửa* · *đã-sửa-đã-verify*. Báo cả cái CHƯA đóng — nửa sự-thật làm hỏng cả sổ.
|
||||
|
||||
---
|
||||
<!-- envelope-footer: from=ai_infra · to=all-fit · sister tự adapt theo /adap-apply; content_sha256 stamp sau reviewer-gate -->
|
||||
Reference in New Issue
Block a user