[CLAUDE] Infra: W0 pre-flight - gitattributes EOL san-chung + hook rebase-interlock + FIX #3-bis 4-ca
W0.1 .gitattributes theo CLASS (khong va theo duoi-file-vua-can):
- `* text=auto eol=lf` = san chung. core.autocrlf=true @system lat LF->CRLF luc checkout;
attr nay ep blob LF + worktree LF, DOC-LAP autocrlf.
- Khai binary TUONG-MINH 13 duoi (zip/exe/dll/docx/xlsx/pptx/pdf/png/jpg/jpeg/ico/woff/woff2)
thay vi pho-thac heuristic NUL-byte-8000-dau: .docx "gay" co the lot thanh text -> mangle
OOXML -> hong file KHONG cuu duoc. Do that: repo co 19 binary (12 docx + 6 png + 1 xlsx).
- .svg = XML -> CO Y giu text. Giu 2 rule cu (broadcasts/** + *.sh) tuong-minh.
- Fault-inject chung rule CO RANG: go `*.docx binary` -> git coi .docx la `text: auto` (nguy
hiem that); khoi phuc -> `text: unset`. 19/19 binary co attr/-text.
- Acceptance PASS: agents/reviewer.md unspecified -> text:auto eol:lf.
W0.2 scoped-only (vacuous, KHAI THAT):
- scope-gate (agents+commands+skills) = 0 DA XANH SAN truoc khi lam gi -> KHONG tinh la thanh-tuu.
- repo-wide 188 (131 Migrations + 57 con lai) = INFORM-only. CAM mass rm+checkout phien nay.
- `git add --renormalize --dry-run .` = 0 file dirty; `git diff --cached --stat` = rong.
W0.3 hook rebase-interlock (anh ky S119 fix#8b = TRONG KHUNG, khong can adap-request):
- wal-flush.ps1: `if (Test-Path .git/rebase-merge -or .git/rebase-apply) { exit 0 }`.
- Dat SAU Set-Location $root, KHONG phai dau file: dat truoc thi Test-Path soi nham CWD.
- Chung RANG 2 CHIEU tren cay tam: (a) khong rebase-state -> hook VAN commit (guard khong
over-fire, WAL persist con song); (b) co rebase-state -> 0 commit, exit 0, worktree GIU dirty.
- Pure-ASCII giu nguyen (gotcha #30). Do lai bang tr sau khi phat hien `grep -P` false-pass
(loi locale -> output rong -> wc -l dem 0 = grep CHET, khong phai sach).
FIX #3-bis (MOI, ghi vao v3-PATCH) - dieu-kien re nhanh W0.3 test SAI THU:
- v2:92 re nhanh bang `NONWAL==0`; luat fix#3(c) noi phai test "wal: o DAY range". Hai thu khac nhau.
- Fault-inject 4 cay tam chung diem re o ca2 (shape base|wal:|[CLAUDE], NONWAL=1, day=wal:):
v2 -> nhanh-B REBASE; v3bis -> reset--soft. Chay that nhanh-B tren ca2: REBASE-EXIT=0 KHONG
crash, nhung commit gop THUA KE message "wal: flush 1" -> push-guard n=1 -> chan push ->
re-squash cung logic -> van "wal:" -> STOP VINH VIEN. Deadlock XAC NHAN bang thuc nghiem.
- +ca(0) MOI v2/v3 khong liet: K=0 range RONG (S119 da push 4727d16) -> NO-OP commit thang.
- 4 ca: (0) K=0 NO-OP · (1) day=wal: NONWAL=0 · (2) day=wal: NONWAL>0 -> (1)+(2) CUNG xu-ly
reset--soft origin/main CAM rebase · (3) day=commit-thuong -> rebase+fixup OK.
- Ca fire hom nay = ca(0). Commit-chot nay dat day range = commit thuong -> moi wal: sinh sau
deu roi vao ca(3) an-toan. Dung y do fix#3(a).
WAL reconcile (/tiep S120): ground-truth thang WAL 3 cho - (1) 7 broadcast "UNTRACKED co y"
da tracked+pushed trong 4727d16, W0.3 khong con viec gop; (2) "K troi 10->11" -> thuc te K=0
range RONG; (3) fix#8 tick mau-thuan -> owner-decisions xac nhan DA KY, gate-blocker=0.
0 prod-code, 0 migration, 0 FE, 0 test-change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
44
.gitattributes
vendored
44
.gitattributes
vendored
@ -1,8 +1,44 @@
|
||||
# .gitattributes — SOLUTION_ERP
|
||||
# Stabilize line endings for byte-exact channels: Harness 3 email body-hash (content_sha256)
|
||||
# is computed on LF body; core.autocrlf=true (Windows) would convert LF→CRLF on checkout and
|
||||
# break body-hash verify even when content is untampered. Scope = broadcasts only (S63 2026-06-15).
|
||||
#
|
||||
# ── THỨ-TỰ CÓ CHỦ-ĐÍCH (git: dòng SAU thắng dòng TRƯỚC trên cùng attribute) ──
|
||||
# 1) sàn chung `*` → 2) rule text tường-minh → 3) khai binary (SAU CÙNG = thắng tuyệt-đối)
|
||||
# Binary để cuối vì hỏng-binary không cứu được, còn hỏng-EOL thì renormalize lại được.
|
||||
|
||||
# ── (1) SÀN CHUNG — S120 W0.1 (broadcast EOL/CRLF 2026-07-15) ────────────────────────
|
||||
# core.autocrlf=true @system (C:/Program Files/Git/etc/gitconfig) lật LF→CRLF lúc checkout
|
||||
# ⇒ file MỚI / file ghi-lại dính CRLF trong worktree. `text=auto eol=lf` ⇒ blob LF + worktree LF,
|
||||
# ĐỘC-LẬP với autocrlf ⇒ đóng mìn tận gốc thay vì gỡ từng quả.
|
||||
# 🔴 Khai theo CLASS, KHÔNG vá theo đuôi-file-vừa-cắn (spec v2 W0.1).
|
||||
# 🔸 Nấc trung-thực: dòng này KHÔNG sửa 188 file đang `i/lf w/crlf` — nó chỉ chi-phối file
|
||||
# MỚI/ghi-lại. Mass rm+checkout 188 = CẤM ở phiên này (spec v2 W0.2: việc riêng, phiên riêng).
|
||||
* text=auto eol=lf
|
||||
|
||||
# ── (2) RULE TEXT TƯỜNG-MINH — giữ nguyên 2 rule cũ ──────────────────────────────────
|
||||
# Harness 3 email body-hash (content_sha256) tính trên body LF; autocrlf=true (Windows) lật
|
||||
# LF→CRLF lúc checkout ⇒ vỡ body-hash verify KỂ CẢ khi nội-dung không hề bị sửa (S63 2026-06-15).
|
||||
# Nay đã được `*` phủ, nhưng GIỮ tường-minh: đây là ràng-buộc GIAO-THỨC, không phải hệ-quả phụ.
|
||||
broadcasts/** text eol=lf
|
||||
|
||||
# H22 WAL (S111): phong-ho file .sh tuong lai (hook SE dung .ps1 — path-independent tren Windows)
|
||||
# H22 WAL (S111): phòng-hộ file .sh tương-lai (hook SE dùng .ps1 — path-independent trên Windows).
|
||||
*.sh text eol=lf
|
||||
|
||||
# ── (3) BINARY THẬT — CẤM mọi phép đổi EOL ───────────────────────────────────────────
|
||||
# Khai TƯỜNG-MINH thay vì phó-thác heuristic của `text=auto`: heuristic đoán bằng NUL-byte trong
|
||||
# 8000 byte đầu ⇒ một .docx/.xlsx "gầy" có thể lọt thành text ⇒ EOL-mangle ⇒ hỏng file KHÔNG cứu được.
|
||||
# Đo lúc khai (S120): repo có 19 file git tự-nhận binary = 12 .docx + 6 .png + 1 .xlsx.
|
||||
# Khai rộng hơn tập đó theo CLASS — .pptx/.pdf (form-engine 8 form HĐ) + .woff/.woff2/.ico (FE 2 app)
|
||||
# chắc-chắn sẽ tới; khai trước = không phải đợi file hỏng rồi mới vá.
|
||||
# 🔸 .svg (8 file) = XML ⇒ TEXT, CỐ Ý không khai ở đây.
|
||||
*.zip binary
|
||||
*.exe binary
|
||||
*.dll binary
|
||||
*.docx binary
|
||||
*.xlsx binary
|
||||
*.pptx binary
|
||||
*.pdf binary
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.ico binary
|
||||
*.woff binary
|
||||
*.woff2 binary
|
||||
|
||||
Reference in New Issue
Block a user