Files
solution-erp/docs/governance/adap-reports/2026-07-13-Governance-harness-22-wal-defect-fix.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

10 KiB
Raw Blame History

adap-report — H22 wal-defect-fix (5 sàn + push-guard)

1. id-broadcast

2026-07-13-Governance-harness-22-wal-defect-fix

2. nấc G-011

executed — per-sàn KHÔNG đồng đều, chấm TỪNG DÒNG (gộp 1 nhãn = che mất chỗ yếu):

Sàn Nấc Vì sao đúng nấc đó
1 đăng-ký-dương @launch executed + runtime-verified gate cơ-khí-hoá hmw.js:147; fault-inject 2 CHIỀU: 3 task thiếu args.runTHROW, agent_count=0, token=0, 14ms (chặn TRƯỚC spawn) · 2 task thiếu cờ → gate IM, 2/2 sub return ⇒ ngưỡng ≥3 đúng, không over-fire
2 closeout-sentinel verified-pending 🔴 văn-bản đã land (session-end BƯỚC 0 đặt + §6.4 xoá) nhưng /session-end CHƯA chạy lần nào từ khi land ⇒ chưa có bằng-chứng runtime
3 ground-truth khi sổ trống executed + fault-inject 9/9 định-nghĩa canonical @tiep.md §0 + session-start 0.7 rút logic (acceptance grep -c "chain rỗng" = 0 ). Fault-inject cây tạm 9/9 gồm 2 ca anti-Goodhart
4 test-suite 3 lớp executed + runtime-verified scripts/wal-recovery-test.ps14/4 ca · 30 assert · 0 fail, có counterfactual tái-hiện DEADLOCK rebase-exit=0
5 hậu-kiểm cờ-vs-nội-dung executed gấp vào session-end §L.b(f); chưa chạy (cùng lý do sàn-2)
push-guard executed + RUNTIME-VERIFIED (dùng thật) fault-inject cây git THẬT 10/10 + push thật phiên này: 4727d16..c39ba9d, trailing-K=0, K sau push=0, wal:/20-commit 11→7 (không tăng)

🔴 KHÔNG claim verified — nấc đó do /adap-audit phía AI_INFRA chấm cross-repo.

3. evidence

Chain commit (ĐÃ PUSH — server-verifiable tại git.baocaogiaoduc.vn/vietreport-admin/solution-erp, range 4727d16..c39ba9d):

Wave sha Nội dung
W0 92de58f .gitattributes EOL-class + hook rebase-interlock + FIX#3-bis 4-ca
W0.4/0.5 48e0d26 workflows/README.md:52 gỡ claim STALE + baseline orphan (git %cI, KHÔNG mtime)
W0.6 c5c68de probe LF làm nhóm chứng (lệch spec CÓ CHỦ-ĐÍCH)
W1 d07bbb9 wal-recovery-test.ps1 4-ca + 2 detector + eol-check
W2 00a1c67 Sàn-1 gate + 3 cờ wrapper CÙNG 1 COMMIT (9 file, +296/14)
W3 dfa3dae tiep.md §0 Sàn-3 canonical · session-start 0.7-trỏ · session-end Sàn-2 + §5.0/§5.2 + Sàn-5
W3 53765b0 workflows/README.md orphan-authority TRI-ACCEPT

Đo thật:

  • Sàn-1 fault-inject: THROW ở 14ms, agent_count=0, token=0 ⇒ chặn TRƯỚC spawn, không phải sau.
  • Sàn-3 fault-inject 9/9 (cây tạm): FLAG đúng → orphan-thật · flat 0-byte · C8 0-byte · chữ "synthesis" giữa câu văn (không phải heading). IM đúng → dạng-1 · dạng-2 · dạng-3 · ## Synthesis (hoa+space) · folder không run.md.
  • Sàn-4: 4 ca · 30 assert · 0 fail; assert sut-has-no-NONWAL-param dùng Get-Command reflection (KHÔNG grep — né tự-tham-chiếu).
  • push-guard fault-inject 10/10 trên cây git thật.
  • grep -c "chain rỗng" .claude/commands/session-start.md = 0 (acceptance Sàn-3).

4. tailored-gì + skip-gì-vì-sao

TAILORED (giữ FUNCTION-floor, đổi FORM theo project-fit):

  1. Sàn-3 → 3 bậc SE-tailored, vá điểm-mù CỦA CHÍNH SE. Hook wal-flush.ps1:7 tự-commit 3 path ở mọi turn-boundary ⇒ 2 tín-hiệu trực-giác nhất (cây bẩn + có commit chưa đẩy) MÙ đúng 3 vùng đó. ⇒ bậc MẠNH dựng từ tín-hiệu hook không chạm tới được: ① orphan run-folder (git-independent) · ② commit không phải wal: (hook không sinh loại này) · ③ closing: treo · ④ wal:-commit chưa đẩy có đụng workflows/runs/ — thu-hồi một phần điểm-mù: dù WAL.md bị xoá trắng, commit của chính hook vẫn tố-giác run đã dựng.

  2. 🔴 Sàn-3 + TRI-ACCEPT (phát-hiện SE, KHÔNG có trong broadcast — xem §5).

  3. push-guard: KHUNG "đặt guard sát push" CHƯA ĐỦ ⇒ SE làm squash → count → push CHAINED 1 LƯỢT. Lý do đo được: giữa §5.0 và §5.2, closeout chắc chắn làm bẩn path hook (ghi closing: · spawn sub → agent-memory/ · ghi runs/) ⇒ mỗi turn-boundary = +1 wal: ⇒ tách ra là tự sinh lại đúng thứ vừa dọn. → đã gửi ngược thành adap-request R2 (γ).

  4. Đếm TRAILING, không đếm tổng. §5.0 cố ý để yên wal: kẹp dưới commit thường (hard-safety: không rewrite lịch-sử đã đẩy) ⇒ nếu §5.2 đếm toàn dải thì nó đếm luôn mấy cái cố-ý-để-yên ⇒ chặn push vĩnh viễn. Đo thật: đếm-toàn-lịch-sử = 57. Cả 2 bẫy TÁI HIỆN ĐƯỢC trên cây git thật, không phải cảnh-báo lý-thuyết:

    • grep -c đếm 0 → exit 1 ⇒ dùng exit-code làm điều-kiện thì ca SẠCH bị chặn.
    • đếm-toàn-lịch-sử=1 vs trailing=0 ⇒ đếm tổng chặn push.
  5. 4 ca của FIX#3-bis KHÔNG vào session-end — chúng thuộc W0.3 (ca mổ một lần) nơi phải chọn rebase vs reset. §5.0 không bao giờ rebase ⇒ không có nhánh để chọn. Chứng: trailing-K tự đúng cả 4 ca — ca(1) HEAD~K == origin/main (≡ reset --soft origin/main của FIX#3(c)) · ca(2) base+wal+[CLAUDE] → K=0 → push được, KHÔNG deadlock · ca(3) đáy không bị chạm, nội-dung còn ở INDEX · ca(0) skip.

SKIP / n-a: không có sàn nào skip.

5. honest-caveat

🔴 (a) 2 sàn CHƯA có bằng-chứng runtime: Sàn-2 (sentinel) + Sàn-5 (hậu-kiểm) — văn-bản đã land nhưng /session-end chưa chạy lần nào từ khi land. KHÔNG được đọc thành "đã hoạt động".

🔴 (b) Gate CHỈ phủ đường hmw.js. Kẽ CÒN LẠI, KHÔNG gate được: raw Workflow tool + raw Agent tool đi thẳng, không qua file đó ⇒ mất writeGuard + run-trace. Bằng-chứng thật: S72 raw-Workflow ⇒ reviewer tự ghi MEMORY +2850B over-cap · S118 raw-Agent 7-spawn ⇒ 0 run-folder · chính run S119 của wave này cũng đi raw-Workflow. SE KHÔNG có CLI-launcher để whitelist ⇒ 3 nguyên-tắc detector của broadcast là N/A vì không có launcher, KHÔNG phải vì "hết kẽ".

🔴 (c) Ngưỡng "hoặc ước >5 phút" KHÔNG cơ-khí-hoá được (script không đo trước thời-lượng) ⇒ nửa đó vẫn là kỷ-luật người, không phải cổng.

🔴 (d) PHÁT-HIỆN NGƯỢC — "orphan" trong thiết-kế H22/H18-B đo TÊN FILE, không đo NỘI DUNG. SE đo trên 25 run: naive 13 / dual-accept 8 / C8 cứu 58 dương-giả = 32%. Nặng nhất: folder ghi chép ĐẦY-ĐỦ NHẤT (pe-negative-quote — có cicd PASS + bundle-hash + smoke 200 + 6 stage [x] + dòng "PIPELINE COMPLETE — shipped + live-verified") VẪN bị xếp orphan, chỉ vì không có file tên *-synthesis.md. Thực-địa có ≥4 dạng ghi synthesis; doc thừa-nhận 2 ⇒ mệnh-đề C8 dual-accept CHƯA ĐỦ → SE mở TRI-ACCEPT (nhận dạng-3 ## synthesis trong thân run.md).

  • 🔴 KHÔNG phải lỗi tailor của SE — là giới-hạn của chính ĐỊNH-NGHĨA orphan. Gate hỏi "đã harvest chưa" (câu hỏi về NỘI DUNG) nhưng đo TÊN FILE ⇒ đo cái dễ đo, không phải cái cần đo.
  • Bồi: commit 8fa2fcc khoe message "close-review run.md synthesis [H2 gate]"git show --stat KHÔNG chạm folder ⇒ H2-gate đã soi + coi là ĐÓNG, chỉ lệch tên file.
  • KHÔNG phải convention-cũ-một-thời-kỳ: cùng ngày 07-12, h22-wal-adopt ghi dạng-1 (file phẳng) còn S112-* ghi dạng-3 (trong run.md) ⇒ thói-quen không nhất-quán.
  • Kẽ CÒN LẠI: dạng-4 (kết-quả rải dưới heading tuỳ-ý) không máy nào bắt được — nhận nó = phải nhận "bất-kỳ run.md nào có vẻ nói về kết-quả" ⇒ quá lỏng ⇒ để người phán. Khai thẳng: chưa xử.
  • Nấc nhận: tri-accept = lưới PHÁT-HIỆN cho bản CŨ, KHÔNG phải giấy phép VIẾT bản MỚI (mượn đúng khuôn C8: tha di-sản, cấm viết mới kiểu cũ).

🔴 (e) 7 orphan tồn-đọng ĐÃ ĐÓNG THẬT (anh chủ-dự-án chốt), KHÔNG scope/allowlist. 22ea8c5 — 7 synthesis viết theo lối COPY additive (run.md giữ nguyên; file mới tự khai "bản gốc trong run.md mới là CHUẨN") ⇒ 0 rewrite history. dual-orphan 8→2 (còn wave S119 + run S122 = 2 run đang bay hợp-lệ).

🔴 (f) 3 lỗi LEAD trong đợt adopt này (khai để hub thấy chỗ quy-trình còn hở):

  1. Sàn-1 LỆCH ở chính W1: lead đăng-ký marker wf: SAU khi phóng (luật = TRƯỚC). Vá ở W3.0: đăng-ký marker thành nhịp riêng trước phóng.
  2. Khẳng-định fact-trên-đĩa mà không đo đĩa: lead phán "backfill [carry:*] = orphan chưa ai làm"SAI, đã có 7 khoá từ 4727d16. Cơ-chế: rà bảng wave thấy không ai được giao ⇒ suy ra chưa làm. "Không wave nào sở-hữu" ≠ "chưa có trên đĩa".
  3. Tái phạm chính lỗi #2 một ngày sau: ghi Commit 8fb2c9d vào WAL TRƯỚC khi commit = SHA bịa. ⇒ bài học viết ra không tự nó chặn được gì.

🔴 (g) GAP THẬT thay claim sai — carry-age vacuous VỀ CẤU-TRÚC: 45 logic-segment nhưng carry-lines=1 ⇒ streak ≡10 fire VĨNH VIỄN, kể cả sau W2. Chứng: tra-bui-relogin chỉ đóng dấu seg#0 (S119), trong khi seg#2 (S118) nhắc đúng việc đókhông có dấutuổi thật ≥2, máy đọc 1. §Q3 no-retrofit ⇒ đường duy nhất = nghi-thức RE-STAMP mỗi phiên (land session-end §L.b(j)(iv)). Khai thẳng: carry mở TRƯỚC S122 có tuổi đo-thiếu.


Ghi @S122 (2026-07-15) · lead Opus 4.8 · chain ĐÃ PUSH 4727d16..c39ba9d, tree clean, K=0