check-email 6 broadcast moi (H23 model-at-spawn / H24 lead-self-audit / H22 wal-defect-fix 5-san / H22 push-guard / EOL-CRLF agent-registry / owner-sign) - hash 7/7 + tamper 4/4 MATCH. Pipeline H21: fable-clone invest 5-lane (wf_1f6bd5e2-478, 5/5 clean) -> spec v1 -> fable-clone reviewer 4-lane (wf_78a84f9b-03e: R2 FAIL 4C+8M, R3 FAIL 5C+6M, R1/R4 chet #53) -> v2 -> fable-real reviewer cong-cuoi (wf_cb964f83-331: GO-WITH-FIXES + 8 fix + 2 honesty-C) -> v3 (STILL-BROKEN = 0). Anh chot B: dung tai spec, wave chay phien sau qua /tiep. Do that: 57 wal: da lot origin/main (hub do duoc 1 -> SE = 57x); nguyen nhan KHONG phai turn-seam ma la session-end.md:113 SE tu viet "kep sau -> GIU NGUYEN". K troi 3->10/buoi. v1 SE GAY MAT VIEC (R3 fault-inject: NONWAL=0 -> 0 commit de fixup -> detached HEAD -> hook fail-open -> abort -> mat worktree = E-029 bang cua sau). Owner 6 chot: nguyen-tac moi (vuot-khung = request anh + AI_INFRA) / PA-2 = PA-2a hang-so + PA-2b audit / 6-15-3 / [carry:slug] / KHONG don 57 / fix#8 (a)(b). 0 prod-code, 0 migration, 0 FE. Test 509 giu nguyen (45D + 464I). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 KiB
SPEC — SE đối ứng 6 broadcast AI_INFRA (S119, 2026-07-15)
H21 spec-file 3-mục. Engine propose (
/fable-clone investigator-codebase5-lane ensemblewf_1f6bd5e2-478, 5/5 clean 0-garble) → lead verify + refute + synthesize → lead ghi (file này) → worker thực-thi THEO spec (bơm qua args, worker KHÔNG tự Read). Trạng thái: DRAFT-v1 chờ/fable-clone reviewer→/fable-real reviewerchốt → anh ký 4 owner-decision.
① TÍNH-NĂNG / ĐỀ-BÀI
SE đối ứng 6 broadcast (check-email S119: 7 copy verbatim, hash 7/7 MATCH, tamper 4/4 MATCH).
1.1 Bảng phơi-nhiễm — ĐO THẬT, không suy
| Broadcast | Nấc SE | Bằng-chứng đo |
|---|---|---|
| H22 push-guard | 🔴 LỖI SỐNG | 57 wal: đã lọt origin/main · n=4 chưa-đẩy (hook fire aab817b @09:29 giữa phiên) |
| H22 wal-defect-fix (5 sàn) | 🔴 0/5 sàn đạt; Sàn-3 lỗi sống | session-start.md:51 + tiep.md:15 suy thẳng "trống⇒sạch" (lead mắc chính sáng nay) |
| EOL/CRLF | 🟡 chưa chết, KHÔNG được tuyên miễn-nhiễm | autocrlf=true@system · 188 file i/lf+w/crlf · agent 0-CR · 12/12 block-scalar |
| H23 model-at-spawn | 🟡 KHÔNG xung-đột H8; 1 GAP thật | fable-clone.md hứa "tier-2" mà 0 cơ-chế tier:'opus' |
| H24 lead-self-audit | 🟢 đủ 3 nền → adopt được | detector ✅ · carry ✅ (HANDOFF:5 21×"NEXT anh"/22×"NEXT em") · nghi-thức ✅ |
| owner-sign 3 mark | 🟢 info | anh ký RC-pqhuy1987-14-07-2026-10-05-50; SE đã stamp S110/S111 → chỉ báo nấc |
1.2 🔴 BỐN CÚ LẬT — ensemble bác tiền-đề (kể cả tiền-đề của LEAD)
L1 — 57 wal: KHÔNG do turn-seam (bác lead).
Lead giả định 57 = kẽ turn-seam của broadcast. Lane A đo: 0/57 ở đuôi, 57/57 bị-kẹp (14 khối: 3×1, 6×2, 1×4, 2×7, 1×8, 1×16). Kênh rò thật = session-end.md:112-113 — §5.0 đếm LIÊN-TỤC từ HEAD, dừng ở subject khác, và :113 cố-ý ghi "wal: kẹp sâu hơn → GIỮ NGUYÊN, chấp-nhận noise". Tốc-độ rò ~10/phiên, khởi đúng ngày hook lên (S111): 37 @07-12 · 10 @07-13 · 10 @07-14 · 0 trước đó.
⇒ n=0 BẤT-KHẢ-ĐẠT với §5.0 hiện tại ⇒ sửa §5.0 = TIỀN-ĐỀ của push-guard, không phải phụ-kiện.
L2 — 188 file EOL KHÔNG do squash (bác broadcast).
Broadcast quy nhân-quả: squash/rebase lật EOL. Lane B đo: SE §5.0 = git reset --soft = worktree-neutral → không lật byte nào. Nguồn thật = dotnet ef / VS sinh CRLF (131/188 = Migrations/).
⇒ acceptance count==0 toàn-repo của hub = cỗ máy dương-giả với SE ⇒ phải scope.
L3 — CRLF ĐƠN-ĐỘC có thể đủ giết (bác broadcast + bác lead).
Broadcast tự khai "KHÔNG khẳng-định đã đọc mã-nguồn parser". Lane B đọc được: parser = js-yaml 4.1.1 nhúng trong claude.exe (chuỗi license), readLineBreak xử CRLF native ⇒ nửa ': ' N/A THẬT cho SE (12/12 block-scalar) — chứng ở tầng mã-nguồn, không còn là suy-đoán.
NHƯNG tồn tại regex delimiter LF-only ^---[ \t]*\n ×2 song song bản đã vá \r?\n ×2 ⇒ CRLF một mình có thể đủ giết, KHÔNG cần ': '.
⇒ Mô-hình broadcast ("CRLF VÀ : ") THIẾU ⇒ SE KHÔNG tuyên miễn-nhiễm; 2 lớp may (0-CR + block-scalar) chỉ che một nửa.
L4 — H23 ⟂ H8: KHÔNG xung-đột; lỗi ở tài-liệu HUB (bác lead + bác H23).
model-tier-v2-pin-simple (07-03) nói thẳng: "Không có mandate mới; các đội KHÔNG bắt buộc làm theo" · "Danh sách trợ lý nào ở tầng model nào = FORM mỗi đội tự quyết" · "cả hai đều đạt sàn miễn là đội trưởng ở model cao nhất và việc nâng-hạ tầng là có kỷ luật".
⇒ SÀN = (i) lead frontier + (ii) gán tầng có kỷ-luật. FORM = tự quyết. SE all-inherit đạt sàn (100% tất-định ⇒ class "quên hạ tầng" không thể tồn tại — SE đóng cùng lỗi bằng đường khác hub).
⇒ SE nằm TRONG khung (nguyên-tắc anh chốt S119) ⇒ KHÔNG cần request cho việc lệch form.
⇒ DEFECT ở H23 §1: phát-biểu form riêng hub ("mọi sub chạy worker-tier gán-cứng") như thể SÀN đã chốt → sister đọc nghĩa-đen sẽ tự tháo H8. Cộng: H8 (06-16) tuyên "BẮT BUỘC mọi sister" chưa từng retract tường-minh ⇒ fleet giữ 3 phát-biểu không tương-thích trên cùng 1 trục (H8 → pin-simple → H23).
1.3 🔴 2 CLASS ngữ-nghĩa NGƯỢC (lane C — mấu chốt H23)
| Class | inherit nghĩa là |
Runtime-value của H23 |
|---|---|---|
| A — roster mặc-định (12 sub) | ĐÚNG Ý-ĐỒ (H8 S66). lead đổi → sub đổi = tính-năng | 0 (đúng như hub khai "phòng-xa") |
B — /fable-clone ensemble |
SAI. Clone theo định-nghĩa = tier-2 | THẬT — vá lỗi sống |
GAP #6 (lỗi sống, đã cài ngòi): .claude/commands/fable-clone.md:15 hứa "ENSEMBLE tier-2-mạnh-nhất", :38-40 chỉ nói ghế lead → cơ-chế đạt tier-2 VẮNG HẲN. Fable UP ⇒ N lane inherit = N×Fable ⇒ trái chính §K.D floor-2 của SE.
ĐÃ CẮN 1 LẦN: reviewer S108 FAIL, MAJOR#3 "clone-example thiếu tier:'opus' trái K.B/floor-2 khi Fable UP" → fix landed ở runbook:431 (🔴 BẮT BUỘC), KHÔNG mang sang command-file khi H21-redesign S110 (debe82f).
⇒ Kết-luận "H23 vô-giá-trị vì SE all-inherit" = SAI do gộp 2 class.
Cái giá DUY-NHẤT H8 trả dưới lăng-kính H23 (lane C, honest): H8 xoá 7 pin full-id ⇒ grep .claude/** = 0 full-id sống. tier:'opus' = alias trần khoá HỌ, không khoá phiên-bản. Opus đời sau ra ⇒ trôi, 0 ai bắt. Thẩm-quyền phiên-bản THẬT của SE = ~/.claude/settings.json claude-fable-5[1m] — NGOÀI repo, machine-wide, dùng chung AI_INFRA+VIETREPORT, KHÔNG git-tracked.
1.4 🔴 3 phát-hiện ngoài đề-bài (lane A — đều chạm quyết-định)
F1 — S118 là ca THẬT của Lớp-1 (bằng-chứng NỘI-BỘ SE). ls .claude/workflows/runs/ → 0 folder S118 (nhảy S117 → S119). Mà HANDOFF:5 ghi S118 = "em-main-led + 7 spawn + 3 commit + 2 deploy". ⇒ run 7-agent trọn ngày với 0 run-folder · 0 dòng wf: · 0 marker. S118 chết giữa chừng ⇒ sổ trống ⇒ phiên sau tưởng sạch.
F2 — workflows/README.md:52 = claim STALE đang CHE Sàn 1. Nguyên-văn: "Anti-bypass detector: SE TAILORED-OUT — SE chạy workflow qua Anthropic Workflow tool (KHÔNG có CLI-launcher để lách) → bypass-surface ~N/A". BỊ BÁC ×2: (i) feedback_harness10_run_trace.md:20 — "RECURRED S72: chạy REVIEW qua RAW Workflow tool (KHÔNG qua hmw.js) → KHÔNG inject writeGuard → reviewer tự ghi MEMORY +2850B over-cap → git-status BẮT @session-end + revert", kết-luận nguyên-văn "dùng RAW Workflow tool = MẤT governance của project-wrapper"; (ii) S118 raw-Agent 7-spawn; (iii) chính run S119 này dùng raw Workflow tool.
⇒ Đồ-thị lời-gọi THẬT của SE = 3 đường: hmw.js (đường DUY-NHẤT SE gate được) · raw Workflow tool · raw Agent tool. Hai đường sau thuộc harness Anthropic ⇒ SE KHÔNG gate được = kẽ CÒN-LẠI (đúng như broadcast §5 tự khai).
⇒ 🔴 PHẢI sửa README.md:52 TRƯỚC khi adopt Sàn 1 — nếu không, cớ "tailored-out" sẽ (sai) biện-minh cho việc skip luôn Sàn 1.
F3 — Sàn 3 wire thẳng = bão dương-giả ngay lượt đầu (đúng cảnh-báo Sàn 2 "báo-động-giả lặp còn hại hơn kẽ gốc"). Folder-scan theo authority README.md:20 → 8/27 orphan, 7 = tồn-đọng cũ (S112 ×4, S113, S114, pe-negative-quote), 1 = S119 đang bay hợp-lệ.
⇒ PHẢI baseline TRƯỚC khi wire: dọn/đóng 7 folder HOẶC scope scan theo mtime > closeout cuối.
1.5 🔴 Positive-control SỐNG — KHÔNG ĐƯỢC VÁ TRƯỚC (lane D)
permission-matrix/SKILL.md last-touch 2abbc1d 2026-04-30 (Session 6) — H1 phiên này bắt, lead verify độc-lập từ code:
| Skill ghi | Thật (đo từ code) | Lệnh |
|---|---|---|
:3 "~60 menu key" |
54 | grep -c "public const string" MenuKeys.cs |
:3 "~240 policy" · :81 "48 policy" (tự mâu-thuẫn) |
216 = 54×4 | Program.cs:82-88 foreach All×Actions |
:3/:23 liệt-kê Bg_* |
chết từ S61 Mig 50 | 0 live const |
:159 chỉ có chiều-ngược của #82 |
thiếu chiều-thuận | — |
Máy hiện-tại MÙ chứng-minh-được: governance-detectors.ps1 = 42 flag baseline, 0 flag trên file này (C2/B3 chỉ track 4 token mig/test/gotcha/table — menu/policy MÙ).
⇒ 🔴 CẤM vá skill này trước khi detector H24 fire. Trình-tự H24 §2(4) BẮT BUỘC: fire → cổng chứng-kiến → vá → hết-fire. Vá trước = giết chứng-nhân sống ⇒ detector "xanh từ commit đầu" = đúng thứ H24 bảo phải nghi.
(Lead đã đề-xuất vá ngay ở Phase-3 REPORT — RÚT LẠI, ghi ở đây làm audit-trail.)
1.6 🔴 Bẫy mega-line (lane D — SE là ca NẶNG NHẤT)
docs/STATUS.md:6 = 63,104 ký-tự / 1 dòng vật-lý, 37 date-token. docs/HANDOFF.md:5 = 46,735.
| Cách parse | Ra | Hậu-quả |
|---|---|---|
date max |
2026-08-01 (hạn audit tháng tới) |
🔴 TƯƠNG-LAI ⇒ detector KHÔNG BAO GIỜ kêu ⇒ TỰ GIẾT positive-control — đúng y broadcast:62 |
date min |
1987-03-07 |
🔴 ngày-ma từ chữ-số trong pqhuy1987 ⇒ luôn kêu = nhiễu thuần |
lexical max |
2026-20-42 |
không phải ngày ⇒ crash |
NEO-PHẠM-VI \*\*Last updated:\*\*\s*(\d{4}-\d{2}-\d{2}) |
2026-07-14 ✅ |
ĐÚNG |
⇒ detector độ-tươi BẮT BUỘC parse neo-phạm-vi, cấm regex-bất-kỳ-đâu.
② CÁCH IMPLEMENT
2.0 🔴 W0 — PRE-FLIGHT (em-main SOLO, KHÔNG fan-out, KHÔNG push) — PHẢI ĐẦU TIÊN
Vì sao trước: (a) worktree đang sạch = cửa-sổ an-toàn DUY-NHẤT; session-end sẽ ghi
STATUS.md/HANDOFF.md/docs/CLAUDE.md/agent-memory/{implementer-backend,reviewer}/MEMORY.md/.mfe-state.json— 6 file này NẰM TRONG 188 ⇒ lúc đógit checkoutmù = HỦY việc chưa-commit (= đúngE-029hub đã trả giá: "verify-mốc-sai ca-fold-uncommitted → reflog-recover"). (b)n=4=Klúc này chưa kẹp; commit thường đầu tiên ⇒ kẹp ⇒ n>0 vĩnh-viễn.
| # | Việc | Chi-tiết | Acceptance |
|---|---|---|---|
| W0.1 | .gitattributes theo CLASS |
Thêm * text=auto eol=lf + khai binary THẬT (*.zip *.exe *.dll *.docx *.xlsx *.pptx *.pdf *.png *.jpg *.jpeg *.ico *.woff *.woff2 binary) + giữ 2 rule cũ. 🔴 CẤM vá theo đuôi-file-vừa-cắn (bẫy lặp). ⚠️ Kiểm *.ps1/*.bat/*.cmd có cần CRLF? → PowerShell chạy LF OK; nếu giữ CRLF cố-ý ⇒ -text |
git check-attr text eol -- .claude/agents/reviewer.md → text: auto, eol: lf (nay: unspecified) |
| W0.2 | Re-smudge CÓ PHÂN-LOẠI | git ls-files --eol đo: 1267 i/lf · 25 i/none · 19 i/-text · 0 i/crlf ⇒ git add --renormalize . = diff RỖNG ⇒ 0 commit ⇒ 0 CI. File sạch → rm + git checkout --. 🔴 File dirty → rewrite byte tại chỗ, CẤM git checkout. Hiện dirty = 0 (chỉ 7 broadcast untracked) ⇒ cửa-sổ sạch |
git ls-files --eol | grep -c 'i/lf.*w/crlf' = 0 · git status --short KHÔNG mất file nào đang edit · git diff --stat sau renormalize = rỗng |
| W0.3 | Sửa §5.0 "chỉ-đuôi" → "toàn-bộ chưa-đẩy" | session-end.md:111-115. Hợp-pháp 100%: wal: bị-kẹp chưa-push ⇒ fold KHÔNG vi-phạm N.4. ⚠️ git rebase -i BỊ CHẶN trong harness (Bash: "Interactive flags not supported") ⇒ GIT_SEQUENCE_EDITOR trỏ script PS1 rewrite pick <sha> wal: → fixup. 🔴 fixup KHÔNG drop — drop = mất nội-dung WAL/agent-memory/runs (khác hub: hub dùng drop + tree-identical verify; SE dùng fixup = an-toàn hơn, KHÔNG cần tree-verify vì fixup bảo-toàn content). Biên: wal: ở đáy range (0 commit thường bên dưới để fixup vào) ⇒ giữ nhánh reset --soft HEAD~K sẵn có — ca n=4=K hôm nay rơi ĐÚNG biên này |
Phiên có ≥2 commit thường xen wal: ⇒ n=0. Tree identical trước/sau (kiểm phụ, không phải gate) |
| W0.4 | Sửa workflows/README.md:52 |
Gỡ claim "bypass-surface ~N/A"; ghi đúng 3 đường (hmw.js gate được · raw Workflow · raw Agent) + khai kẽ CÒN-LẠI |
grep -c "TAILORED-OUT.*bypass" README.md = 0 · có dòng khai 3-đường |
| W0.5 | Baseline 7 orphan-folder | Đóng (thêm *-synthesis.md) HOẶC scope scan mtime > closeout cuối |
Sàn-3 chạy trên phiên sạch ⇒ trả đúng {run đang bay}, tồn-đọng 0 |
2.1 Sàn H22 (5) — SE-tailored
| Sàn | Đối ứng | Acceptance ĐO ĐƯỢC |
|---|---|---|
| 1 đăng-ký-dương @launch | hmw.js thêm tripwire input-only cạnh checkpointApproved:83-85: if (A.taskList.length >= 3 && !(A.run?.dir && A.run?.name)) throw. CÙNG COMMIT truyền cờ 3 wrapper: fable-clone.md:15 · ultra-on.md:18/33 · /hmw — thiếu = vỡ đường đang chạy (broadcast §4 nửa-(ii)). 🔴 Khai thật: chỉ phủ hmw.js; raw Workflow/Agent = kẽ còn-lại KHÔNG gate được (F2) |
Phóng 3-task không args.run → throw. git grep -c "args.run" .claude/commands/ ≥ 3 |
| 2 closeout-sentinel | Ghi closing: S<nn> @<ts> vào WAL ở session-end BƯỚC 0 (trước mọi flush); xoá ở §6.4:143 — §6.4 đã là đường LUÔN-CHẠY sẵn ⇒ xoá-dấu-không-tồn-tại = net-zero. Self-heal: 0.7 gặp closing: + ground-truth sạch ⇒ dọn 1 lần, đi tiếp |
Cắt session-end giữa chừng ⇒ phiên kế thấy closing:. Chạy no-op ⇒ grep -c '^closing:' WAL.md = 0 |
| 3 ground-truth khi sổ trống | Định-nghĩa MỘT chỗ = tiep.md §0; session-start.md:51 XOÁ logic → chỉ TRỎ (:54 đã tự tuyên "CHỈ LÀ CON-TRỎ" — nay làm cho đúng lời). 3 bậc SE-tailored vá điểm-mù hook (hook auto-commit 3 path ⇒ "dirty"+"chưa-đẩy" MÙ đúng 3 vùng): MẠNH = ① runs/<id>/ có run.md mà *-synthesis.md vắng/0-byte (git-independent, miễn-nhiễm hook — đã có ở session-start.md:97 nhưng nằm SAU điểm quyết-định + skippable :98 ⇒ chỉ cần hoist lên 0.7) · ② origin/main..HEAD có commit KHÔNG phải wal: (hook không sinh loại này ⇒ không mù) · ③ closing: treo · 🆕 ④ wal:-commit chưa-đẩy có đụng .claude/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 (git log --name-only --format='%s' origin/main..HEAD | grep -q 'workflows/runs/' — đo sống: aab817b touch run.md). TRUNG-BÌNH = >N file bẩn ngoài 3 path persist (🔴 PHẢI loại nhiễu EOL trước — 188 file ⇒ nếu không sẽ luôn kêu) · YẾU = bẩn thô |
2/2 điểm-vào (/tiep + 0.7) gọi CÙNG 1 định-nghĩa. Dựng "WAL trống + 1 run-folder mở" ⇒ cả 2 hỏi-lại. grep -c "chain rỗng" session-start.md = 0 |
| 4 test-suite 3 lớp | scripts/wal-recovery-test.ps1 — mẫu -RepoRoot cây-tạm đã proven S95 (fault-injection). 4 ca: dừng-sạch (kỳ-vọng im) · đứt-giữa-run (bắt) · đóng-phiên-bị-cắt (bắt) · dấu-treo-nhưng-thực-sạch (self-heal) |
4 verdict ghi ra FILE, KHÔNG gạch-đầu-dòng. 🔴 Anti-Goodhart: inject-lỗi phải FLAG, không chỉ happy-path PASS |
| 5 hậu-kiểm cờ-vs-nội-dung | Gấp vào §L.b(f) 1 dòng: mọi runs/<id>/ mtime-trong-phiên ↔ có dòng wf: … run=<id> trong WAL/session-log? Lệch ⇒ NÊU (informational, KHÔNG chặn) |
Chênh-lệch 0, hoặc in được danh-sách lệch |
| push-guard | Chuyển phép đếm vào chính khối §5.2, chained ngay trước git push origin main. 🔴 Đặt ở §5.0 = KHÔNG đủ (hook fire turn-boundary NẰM SAU §5.0/§5.1). (a) so-sánh SỐ, cấm exit-code — grep -c trả exit 1 khi đếm 0 = ca SẠCH bị chặn (⚠️ .claude/WAL.md:15 verify: lead viết sáng nay đang dính idiom này) ⇒ n=$(…); [ "$n" -eq 0 ]. (b) precheck ref = N/A (origin/main EXISTS) nhưng giữ else vô-hại. (c) origin/main = tên thật ✅ §5.0 đã đúng |
(i) §5.0-mới trên phiên ≥2 commit thường xen wal: ⇒ n=0; (ii) đếm ngay trước push = 0 trong CÙNG transcript-turn với git push; (iii) sau push git log --format='%s' origin/main -20 | grep -c '^wal:' không tăng so với 57 |
2.2 EOL (4 khối) — SE-tailored
| Khối | Đối ứng | Acceptance |
|---|---|---|
| ① SELF-CHECK | ĐÃ CHẠY (§1.1). 🔴 Metric phải i/lf KÈM w/crlf — w/crlf trần gộp file cố-ý-CRLF = dương-giả (hub tự báo-động-giả vì metric lỏng) |
— |
| ③ FIX | W0.1 + W0.2 (§2.0). ③(c) quote description = N/A (block-scalar, chứng tầng mã-nguồn L3) | git check-attr + count=0 |
| ④(a) validator đọc BYTES | scripts/agent-frontmatter-eol-check.ps1 — đọc byte, KHÔNG text-mode (splitlines nuốt CR ⇒ PASS-giả trên chính file đã chết = tệ hơn không có). Verdict FAIL = (CRLF trong frontmatter). 🔴 SE KHÔNG có file-đã-chết làm positive-control (hub bảo hiệu-chỉnh bằng byte file-đã-chết, snapshot TRƯỚC fix) ⇒ phải synthesize control (CRLF-hoá 1 bản COPY trong cây-tạm -RepoRoot) + KHAI THẬT nấc yếu hơn hub |
Validator trên copy-CRLF ⇒ FAIL; trên 12 agent thật ⇒ PASS. 🔴 Khai: "control = synthetic, KHÔNG phải file-đã-chết" |
| ④(b)(c)(d) | (b) wire validator vào session-end · (c) EOL-assert DÍNH LIỀN push, CÙNG khối với push-guard · (d) LOAD-VERIFY khi onboard agent — SE đã làm de-facto (S107 office-document spawn-test cùng phiên) ⇒ codify thành checklist, không phải build mới | (c) đọc khối push ⇒ EOL-assert cùng khối. (d) checklist tồn tại agents/README.md |
| 🔴 SCOPE (L2) | Acceptance count==0 toàn-repo = dương-giả (188 = dotnet ef/VS sinh, không phải squash-fallout) ⇒ gate scope = .claude/agents/** + .claude/commands/** + .claude/skills/** (3 class frontmatter); Migrations/ = INFORM-only |
git ls-files --eol .claude/agents .claude/commands .claude/skills | grep -c 'i/lf.*w/crlf' = 0 (gate) · toàn-repo = INFORM |
2.3 H23 — PA-1 Tailor tối-thiểu (lane C nghiêng; 4 file .md, 0 frontmatter, 0 config, 0 số, H8 NGUYÊN-VẸN)
| # | Việc | Acceptance |
|---|---|---|
| (a) | Vá GAP #6: thêm tier:'opus' 🔴-BẮT-BUỘC-khi-Fable-UP vào fable-clone.md (TRỎ runbook:431, KHÔNG lặp nội-dung) |
Grep tool (⚠️ KHÔNG Bash-grep — pattern |+quote cho false-negative; lane C tự dính) tier:'opus' trong fable-clone.md ⇒ ≥1 hit (nay 0) |
| (b) | Nhân form ghi-chú-đầu-cây — SE đã có bản mẫu đúng chuẩn hmw.js:32-42 (khối comment H8 ngay trên resolveModel:43-51, phủ mọi lane, KHÔNG lặp inline) ⇒ nhân sang 3 chỗ: agents/README.md:~75 (đầu decision-tree — note :3 hiện ở đầu FILE, cách 72 dòng, khác heading ⇒ KHÔNG phủ cây) · session-start.md:~96 · session-end.md:~49 |
3 note tồn tại ≤5 dòng trên dòng spawn đầu-tiên; nội-dung nêu "mọi spawn dưới = model: inherit (H8 S66) = top-tier lead per-session; giá-trị SỐNG → BƯỚC 0.6 probe" |
| (c) | Checklist kết-nạp-sub 3-việc (frontmatter inherit + hmw.js VALID_ROLES + spawn-site) vào agents/README.md — SE có đủ 3 chỗ + đã chạy đúng (office-document S107 9→10; 2 monitor S110 10→12) nhưng chưa viết thành checklist ⇒ gap = quy-trình |
roster = VALID_ROLES = danh-sách (fable-clone.md:19 = fable-real.md:20 = engine:345) |
| (d) | §2(5) kỷ-luật động-từ = n-a ĐÃ THOẢ — grep 0 mis-nấc (engine:348 "KHÔNG code-enforced" · :353 "mechanized = 0" · fable-real.md:22 · G-015 ×3) |
re-grep enforce-verb quanh model/tier ⇒ giữ 0 |
| 🔸 | PA-2 (neo full-id cho tier:'opus') = QUYỀN ANH — con-số/policy mới; em KHÔNG tự đặt. Không chọn ⇒ alias-drift Opus-đời-sau ở lại (khai ở adap-report) |
— |
2.4 H24 — adopt đủ 5 điểm
| # | Việc | Acceptance |
|---|---|---|
| (1) | 2 vai MỚI .claude/agents/lead-view-auditor.md + lead-omission-auditor.md (cookie-cutter frontmatter 2 monitor sẵn: model: inherit · memory: project · maxTurns: 18 · tools 4-RAG-read + Read/Grep/Glob/Bash, NO Write/Edit, propose-only). 🔴 KHÔNG gộp vào H1/H2. ⚠️ VA-CHẠM TỪ-VỰNG: governance-detectors.ps1:15 đã sở-hữu derived-staleness ⇒ cấm tên "vai-STALE"; GAP quá-tải (session-end.md:48 "build-gap vs floor-rot" · memory-selfimprove-audit.ps1 "CRITERIA+GAP") ⇒ dùng view/omission. Treo session-start.md §2.1.1:92 (2→4 monitor) + session-end.md §L.b |
(a) ls .claude/agents/*.md = 14; (b) mỗi FLAG khớp ^[A-Z0-9-]+ | <class> |, class ∈ enum ĐÓNG trong config; (c) 🔴 phép-thử-xoá-carry: xoá thử 1 dòng carry đã-hứa khỏi HANDOFF.md:5 ⇒ lead-omission-auditor PHẢI kêu carry-dropped, máy im (đúng — caveat (b)) |
| (2) | 2 detector máy vào governance-detectors.ps1 (điểm cắm: Write-Flag:43-53 · Write-Section:55 · Get-GovernanceMd:118-127 · summary tail). độ-tươi-tiêu-đề: mốc-phải = ngày mới nhất dấu-mốc governance; mốc-trái = anchor "Last updated"; tài-liệu KHÔNG anchor ⇒ BỎ QUA (cấm bịa độ-phủ); flag khi trái<phải. 🔴 PARSE NEO-PHẠM-VI \*\*Last updated:\*\*\s*(\d{4}-\d{2}-\d{2}) — cấm regex-bất-kỳ-đâu (§1.6). tuổi-carry: khoá sống qua ≥M dòng-carry LIÊN-TIẾP; chuỗi tính trên dòng CÓ carry, phiên vắng KHÔNG phá chuỗi; reset CHỈ khi khoá vắng trên dòng CÓ carry; cụm owner chủ-động giữ ⇒ INFORM-only. GAP-2: carry SE = văn-xuôi KHÔNG khoá ⇒ cần quy-ước khoá (anh quyết format); **định-nghĩa "dòng-carry" = đoạn LOGIC `NEXT anh |
NEXT em BÊN TRONG mega-line, KHÔNG phải dòng vật-lý**. **GAP-3:** C2/B3 chỉ track 4 token (:154-157) ⇒ menu/policy` MÙ ⇒ +2 token |
| (3) | Scheduler = NET-NEW (grep session[_-]?count|counter|tick = 0 hit). State .claude/governance/.session-counter.json (mẫu sẵn .archive-strikes.json/.mfe-state.json). Tick @session-start 0.7-bis; display 2 đầu. Idempotent-key = HEAD commit-sha @tick (resume cùng sha ⇒ KHÔNG tick 2). Số LÙI = fail-loud. Fire >= KHÔNG =. fire-guard chống bắn-trùng + lịch-sử fire có cap. 🔴 cadence-triggered, LEAD tự thực-thi, KHÔNG hook. ⚠️ Stop-hook auto-commit agent-memory/ mỗi turn ⇒ nếu để counter trong memory-budget.json phải content-based last_ticked_session:"S119", cấm blind-increment |
(a) /session-start 2 lần cùng HEAD ⇒ +1 (không +2); (b) sửa counter LÙI ⇒ fail-loud; (c) bỏ 1 phiên đúng ngưỡng ⇒ phiên kế in OVERDUE (chứng >=); (d) 2 lớp cross-check |
| (4) | Positive-control SỐNG = permission-matrix/SKILL.md (§1.5). 🔴 CẤM vá trước. Chuỗi: fire → reviewer chứng-kiến → vá → hết-fire |
(1) detector MỚI chạy TRƯỚC vá ⇒ PHẢI in permission-matrix/SKILL.md; (2) reviewer chứng-kiến output; (3) vá; (4) chạy lại ⇒ dòng BIẾN MẤT, TOTAL giảm đúng số đã vá |
| (5) | Kết-nạp 3 việc — SE all-inherit ⇒ (a) rút gọn = frontmatter inherit (không pin full-id). hmw.js:22 VALID_ROLES 12→14 (⚠️ :104 STOP-HARD nếu vai ∉ list). GỘP 1 EDIT với (2)+Sàn-1 |
(a) VALID_ROLES = 14; (b) spawn vai mới qua hmw ⇒ KHÔNG throw :104; (c) grep 12-agent|12 sub ⇒ 0 hit sót (5 chỗ) |
2.5 owner-sign — 0 hành-động adopt
SE đã stamp H21+MTv3 (RC-…11-07-2026-20-42-01) + H22 (RC-…12-07-2026-11-43-45) TRƯỚC owner-sign hub (RC-pqhuy1987-14-07-2026-10-05-50, 07-14) ⇒ ledger SE đã current. Hub ghi nhận SE = dự-án đầu tiên fleet adopt trọn H22. ⇒ chỉ báo nấc ở adap-report.
③ CHECKLIST + WAVE
3.1 Đồ-thị phụ-thuộc
[W0] PRE-FLIGHT em-main SOLO ──PHẢI TRƯỚC TẤT CẢ──┐
├─ W0.1 .gitattributes ──PHẢI TRƯỚC── W0.2 re-smudge (checkout materialize theo attr mới)
├─ W0.2 re-smudge=0 ──PHẢI TRƯỚC── ④c EOL-assert cắm push (ngược = CHẶN MỌI PUSH phiên này)
├─ W0.3 §5.0 fix ──PHẢI TRƯỚC── commit thường ĐẦU TIÊN (n>0 vĩnh viễn nếu ngược)
├─ W0.4 README:52 ──PHẢI TRƯỚC── Sàn-1 (cớ "tailored-out" sẽ biện-minh skip)
└─ W0.5 baseline orphan ──PHẢI TRƯỚC── Sàn-3 (bão dương-giả)
[D-anh] 4 owner-decision ──PHẢI TRƯỚC── W2/W3 (số + policy)
[D7] Sàn-3 canonical @tiep.md ──PHẢI TRƯỚC── session-start 0.7 (chỉ TRỎ, B1)
[D6] 2 agent MỚI ──ĐỒNG-THỜI── hmw.js VALID_ROLES 12→14 ⇒ GỘP 1 owner (H24§5)
[D8] mọi edit code/cmd XONG ──PHẢI TRƯỚC── harness-11-engine.md (canonical tả cái ĐÃ làm)
[D9] chạy THẬT xong ──PHẢI TRƯỚC── stamp mark (H18: cấm stamp run-id chưa chạy) + adap-report
3.2 🔴 Bảng xung-đột file — quyết-định wave
| File | # chạm | Hạng-mục | Xử-lý |
|---|---|---|---|
session-end.md |
7 | push-guard §5.2 · EOL-assert (cùng khối push) · Sàn-2 sentinel set+clear · Sàn-5 hậu-kiểm · ④b wire validator · H24 counter-display · H24 spawn-note | 🔴 SERIAL, 1 owner = em-main, 1 EDIT PASS. Fan-out = race chắc-chắn |
session-start.md |
4 | Sàn-3 :51 · H24 counter-display · H24 2 vai :92 · H23 note :96 |
🔴 SERIAL em-main, SAU tiep.md |
hmw.js |
3 | Sàn-1 gate · VALID_ROLES 12→14 · H23 note-đầu-cây | 🔴 GỘP 1 EDIT |
governance-detectors.ps1 |
2 | 2 detector H24 | 🟢 1 agent owner, disjoint |
harness-11-engine.md |
~5 | PHẦN N ext · §K/§O H24 · H23 · EOL floor | 🔴 SERIAL em-main CUỐI (D8) |
tiep.md |
2 | Sàn-3 canonical · Sàn-2 sentinel-read | 🔴 em-main TRƯỚC session-start |
memory-budget.json |
2 | nhịp H24 · counter | 🟡 số = anh. ⚠️ hook auto-commit path này ⇒ content-based key |
.gitattributes · validator.ps1 · 2 agent MỚI · wal-recovery-test.ps1 |
1 mỗi | — | 🟢 disjoint |
| 188 file worktree | 1 | re-smudge | 🟢 0 commit ⇒ 0 race git; race ở tầng worktree-dirty |
3.3 WAVE
| Wave | Song-song? | Task | Vai | File |
|---|---|---|---|---|
| W0 PRE-FLIGHT | 🔴 SOLO, KHÔNG fan-out | W0.1→W0.5 (§2.0) | 👤 em-main | .gitattributes · 188 worktree · session-end.md:111-115 · README.md:52 · 7 orphan |
| W1 disjoint build | ✅ 3 lane song-song | ① governance-detectors.ps1 +2 detector (neo-phạm-vi + carry-age) · ② scripts/agent-frontmatter-eol-check.ps1 (byte-reader + synthetic control) · ③ scripts/wal-recovery-test.ps1 (4 ca) |
🟨 impl-be ×1 · 🟪 test-spec ×2 | 3 file disjoint hoàn-toàn |
| W2 gộp-1-owner | ⚠️ 2 lane (khoá cứng D6) | ① hmw.js 1 EDIT: Sàn-1 gate + VALID_ROLES→14 + H23 note · ② 2 agent MỚI lead-view-auditor + lead-omission-auditor |
🟨 impl-be (gộp ①②) | hmw.js + 2 .md mới |
| W3 SERIAL command | 🔴 SERIAL em-main, thứ-tự cứng | tiep.md §0 → session-start.md (0.7 trỏ + counter + 2 vai + H23 note) → session-end.md 1 PASS 7 hạng-mục → fable-clone.md GAP#6 → agents/README.md (checklist + note) |
👤 em-main | 5 file, 1 file 1 lần |
| W4 positive-control | 🔴 SERIAL, sau W1① | fire detector ⇒ PHẢI in permission-matrix/SKILL.md → 🟥 reviewer chứng-kiến → RỒI MỚI vá skill (54/216/bỏ Bg_*/+#82) → chạy lại ⇒ hết-fire |
🟥 reviewer + 👤 em-main | permission-matrix/SKILL.md |
| W5 canonical | 🔴 SERIAL CUỐI (D8) | harness-11-engine.md PHẦN N ext + §K/§O · rules.md nếu cần |
👤 em-main | engine |
| W6 đóng | 🔴 SERIAL | push-guard CÙNG LƯỢT với push → adap-report ×N → adap-request ×N → send-email | 👤 em-main | broadcasts/ |
3.4 🔴 QUYỀN ANH — 4 owner-decision (em KHÔNG tự quyết)
| # | Quyết-định | Đề-xuất em | Trạng-thái |
|---|---|---|---|
| O1 | H23 mức-độ adopt — PA-1 (tailor tối-thiểu, 4 .md, H8 nguyên-vẹn) / PA-2 (PA-1 + neo full-id cho tier:'opus' ⇒ chặn alias-drift Opus-đời-sau) / PA-3 (n-a ⇒ GAP#6 ở lại) |
PA-1 (lane C nghiêng). PA-2 chỉ khi anh muốn neo phiên-bản = policy mới = quyền anh | ⚪ chờ |
| O2 | Số nhịp H24 — rà-nhẹ mỗi ? phiên · rà-sâu mỗi ? phiên · jump-K khi 1 class lặp ? lần. (Nguồn hub: 6/15/3 — hub bảo ĐỪNG CHÉP, đặt số của mình) | 6 / 15 / 3 (khởi-điểm = số hub, điều-chỉnh sau chu-kỳ-2). 🔴 role_boundary_note: số = quyền anh |
⚪ chờ (anh đã "OK đồng ý" adopt H24; số vẫn cần ký) |
| O3 | Quy-ước khoá carry (GAP-2) — carry SE hiện là văn-xuôi KHÔNG khoá ⇒ detector tuổi-carry không chạy được. Cần format khoá bền | [carry:<slug>] gắn cuối mỗi mục NEXT (vd [carry:binh-le-decision]) — bền, grep được, không phá mega-line |
⚪ chờ |
| O4 | 57 wal: đã lọt | 🔴 KHÔNG DỌN — xem §3.5 | ✅ anh đã đồng ý (#3 "OK đồng ý") — ghi lại làm audit-trail |
3.5 57 wal: — KHÔNG DỌN (3 lý-do xếp theo sức nặng)
- Vi-phạm floor.
harness-11-engine.md:408(N.4) +session-end.md:113: "KHÔNG BAO GIỜ rewrite commit đã-push" = 🔴 FUNCTION-FLOOR, hard-safety có chủ-đích. Dọn = tự phá điều-khoản mình vừa adopt. - Blast-radius phá chuỗi bằng-chứng của CHÍNH H22. Range từ wal: cũ nhất (
ec81c5c) = 78 commit, 21 commit THẬT đổi SHA. Citation đo được:12071c5→ cited 12 file ·67be443→ 10 file — chính là 2 commit chứng-minh hook-FIRE ởengine:407(N.3) + adopt-report ĐÃ GỬI AI_INFRA. Rewrite = tự vô-hiệu-hoá bằng-chứng VERIFIED-RUNTIME của H22 + phá§6.3"SERVER-VERIFIABLE chain" + bắn cờ C1 hàng loạt + adap-report thành không đối-chứng được. Đây là cái giá đắt nhất. - Hại thực-tế = 0. Commit nội-dung hợp-lệ, không corrupt, chỉ ồn
git log. Cộng: force-push remote dùng chung + Gitea runner (CI #388/#389 tham-chiếu) + repo trong Dropbox (rewrite + cloud-sync ⇒ rủi-roindex.lock, đã ghi N.7(e)).
Khung đúng: 57 = tổn-thất chìm, cách-ly bằng chính-sách. Giá-trị push-guard ở SE = cầm máu ~10/phiên, KHÔNG phải dọn quá-khứ. Muốn "sạch mắt" ⇒ cosmetic 0-rewrite: alias git log --invert-grep --grep='^wal:', hoặc note rules.md §5.2 (wal: pre-S119 = noise đã-đóng-băng).
3.6 adap-request — 4 ứng-viên (anh-directed: report để hub tổng-hợp + broadcast sister)
| # | Nội-dung | Nấc |
|---|---|---|
| R1 | 🔴 H8 ⟂ pin-simple ⟂ H23 = 3 phát-biểu KHÔNG tương-thích trên cùng 1 trục. H23 §1 tả form riêng hub như sàn đã chốt, mâu-thuẫn pin-simple ("form mỗi đội tự quyết", "cả hai đều đạt sàn"); H8 ("BẮT BUỘC mọi sister") chưa từng retract tường-minh. Bằng-chứng: hub tự PIN 17/17 claude-opus-4-8 trong khi broadcast all-inherit cho sister. Sister đọc H23 nghĩa-đen ⇒ tự tháo H8. → Đề-nghị hub reconcile + re-broadcast |
evidenced, đo được |
| R2 | 🔴 KHUNG push-guard giả-định SAI: "squash phủ được mọi wal: chưa-đẩy" — sai với mọi repo có hook per-turn + closeout >1 commit. Hub tự soi 9-chưa-đẩy + 1 lọt; SE = 57 (57×). Đề-xuất (α) KHUNG nói rõ squash phải phủ toàn range chưa-đẩy, không chỉ đuôi | evidenced 57 vs 1 |
| R3 | 🔸 Đề-xuất căn-cơ (vượt khung ⇒ PHẢI request): hook commit vào side-ref (refs/wal/snapshot qua commit-tree+update-ref) thay nhánh chính ⇒ nhánh không bao giờ có wal: ⇒ n≡0 trivially, durability giữ (ref trong .git, Dropbox sync). Lệch N.2 floor ("git add 3 path + git commit") ⇒ KHÔNG tự làm. 🔸 CHƯA VERIFY thực-nghiệm — mới là lập-luận plumbing |
proposal, khai chưa-verify |
| R4 | 🔴 EOL broadcast: nhân-quả sai + mô-hình thiếu. (a) squash lật EOL — sai với SE (§5.0 = reset --soft = worktree-neutral; 188 = dotnet ef/VS). (b) Mô-hình "CRLF VÀ ': '" THIẾU — lane B đọc mã-nguồn (js-yaml 4.1.1 trong claude.exe): readLineBreak CRLF-safe ⇒ ': ' N/A cho block-scalar; NHƯNG regex delimiter LF-only ^---[ \t]*\n ×2 song song bản vá \r?\n ×2 ⇒ CRLF ĐƠN-ĐỘC có thể đủ giết. (c) acceptance count==0 toàn-repo = dương-giả factory ⇒ phải scope. Hub tự khai chưa đọc mã-nguồn — SE đọc được và bổ-sung |
evidenced tầng mã-nguồn |
3.7 n-a hợp-lệ (khai ở adap-report)
| Mục | Nấc |
|---|---|
| EOL ③(c) quote description | n-a THẬT — 12/12 block-scalar, js-yaml 4.1.1 chứng tầng mã-nguồn |
| H23 (2)(3) alias-vs-full-id | rút gọn theo §4 project-fit (SE = một-model-cho-mọi-sub) — nhưng chỉ đúng Class A; Class B (2) SỐNG ⇒ GAP#6 |
| H23 §2(5) kỷ-luật động-từ | n-a ĐÃ THOẢ — grep 0 mis-nấc |
| H23 §2(4) bộ-soát trợ-kiểm | n-a: chưa dựng (§4 cho phép "n-a: chưa dựng bộ-soát", giữ phòng-thủ) |
| Sàn-1 nửa-(ii) truyền cờ nội-bộ | ≈n-a — không có lời-gọi engine→engine trong hmw.js |
| push-guard (b) precheck ref | n-a — origin/main EXISTS (giữ else vô-hại) |
| push-guard (c) remote-branch | ĐÃ ĐẠT SẴN — §5.0 dùng đúng origin/main..HEAD |
| owner-sign | 0 adopt — SE stamp trước hub-sign |
3.8 Rủi-ro + cách chặn
| Rủi-ro | Chặn |
|---|---|
🔴 git checkout mù trên file dirty ⇒ hủy việc (= E-029 hub) |
W0.2 phân-loại trước; chạy khi worktree sạch; git status gate |
🔴 push-guard -eq 0 chép nguyên ⇒ DEADLOCK push (§5.0 không squash kẹp-sâu) |
W0.3 PHẢI trước — sửa §5.0 = tiền-đề |
🔴 grep -c exit-1-khi-0 ⇒ ca sạch bị chặn |
n=$(…); [ "$n" -eq 0 ]. Sửa luôn WAL.md:15 verify: |
🔴 Vá permission-matrix sớm ⇒ giết positive-control |
W4 sau W1①; reviewer chứng-kiến fire trước |
| 🔴 Sàn-3 wire thẳng ⇒ bão dương-giả (8/27 orphan) | W0.5 baseline trước |
🔴 Detector độ-tươi parse ngây-thơ ⇒ tự giết (2026-08-01 tương-lai) |
neo-phạm-vi BẮT BUỘC; test-vector STATUS.md:6 ⇒ 2026-07-14 |
🔴 rebase -i bị chặn harness |
GIT_SEQUENCE_EDITOR + fixup (KHÔNG drop) |
| 🟡 gotcha #53 return-garble (~21 lần) | RETURN-FORMAT VERDICT-header + schema-nhỏ; garble ⇒ recover-from-disk |
| 🟡 gotcha #68 IDE diagnostic giữa background-agent = snapshot dở | Chỉ tin build SẠCH chạy SAU agent |
🟡 CI trigger — AS-6 (từ #495): .claude/agent-memory/** + runs/** KHÔNG trigger; scripts/*.ps1 + .json + .gitattributes THÌ CÓ |
W1/W2 sẽ trigger CI ⇒ cicd-monitor verify; KHÔNG dùng paths-ignore để né (che drift) |
🟡 Restart CLI — command .md no hot-reload (fable-clone.md:8) |
Khai nấc "executed → restart-then-verify"; 2 agent MỚI = ADD ⇒ S107 hot-reload OK nhưng ENV-DEPENDENT ⇒ restart = default |
3.9 Acceptance TỔNG (gate đóng spec)
[ ] W0.2 git ls-files --eol .claude/agents .claude/commands .claude/skills | grep -c 'i/lf.*w/crlf' → 0
[ ] W0.3 phiên ≥2 commit thường xen wal: → n=0 (KHÔNG deadlock)
[ ] Sàn1 phóng 3-task thiếu args.run → throw
[ ] Sàn2 cắt session-end → phiên kế thấy `closing:` ; no-op → grep -c '^closing:' = 0
[ ] Sàn3 "WAL trống + run-folder mở" → CẢ /tiep VÀ 0.7 hỏi-lại ; grep -c "chain rỗng" session-start.md = 0
[ ] Sàn4 4 verdict ghi FILE (không gạch-đầu-dòng) ; inject-lỗi → FLAG
[ ] Sàn5 chênh cờ-vs-nội-dung = 0 hoặc in danh-sách
[ ] push đếm=0 CÙNG transcript-turn với git push ; sau push wal: trên origin/main KHÔNG tăng (giữ 57)
[ ] H23 Grep tool `tier:'opus'` trong fable-clone.md ≥1 ; 3 note-đầu-cây ≤5 dòng trên spawn đầu
[ ] H24 ls .claude/agents/*.md = 14 ; VALID_ROLES = 14 ; detector in 2026-07-14 (không 2026-08-01)
[ ] H24 TOTAL FLAGS ≥ 46 VÀ có dòng permission-matrix/SKILL.md ← fire TRƯỚC vá
[ ] H24 /session-start 2× cùng HEAD → counter +1 ; counter lùi → fail-loud ; bỏ phiên → OVERDUE
[ ] EOL validator FAIL trên copy-CRLF cây-tạm ; PASS trên 12 agent thật ; khai control = synthetic
[ ] cicd CI PASS sau push (scripts/*.ps1 + .gitattributes CÓ trigger)
Nấc trung-thực (giữ nguyên khi adap-report)
- Provenance:
/fable-clone investigator-codebase5-lane ensemblewf_1f6bd5e2-478(Opus, 5/5 return, 0-garble) + lead soi hub trực-tiếp (lead-evidence-hub-inspect.md). Lead refute + synthesize; 4 cú lật bác cả tiền-đề của chính lead (§1.2). - Nấc SE sau adopt:
executed → restart-then-verify(command.mdno hot-reload). - KHÔNG overclaim: Sàn-1 chỉ phủ
hmw.js; raw Workflow/Agent tool = kẽ CÒN-LẠI KHÔNG gate được (F2 — chính run này đi đường đó). Validator PHÁT-HIỆN không NGĂN-CHẶN. Toàn tầng H24 = quy-ước lead-executes, KHÔNG hook, KHÔNG enforce — cấm viết "cơ-giới-hoá". - Control yếu hơn hub: SE không có file-đã-chết ⇒ synthetic control (khai thật).
- H24 dogfood n=1 tại hub (mốc-0), chưa chu-kỳ-2 ⇒ cấm bán "đã chứng-minh hiệu-quả". Flag TĂNG khi thêm detector-class = mở-rộng-thiết-bị, KHÔNG phải governance mục-ruỗng (caveat (d)).
- CHƯA VERIFY: R3 side-ref (lập-luận plumbing, chưa thực-nghiệm) · hub
spawn_model_audit(ls scripts/|grep -i spawn|model= rỗng dù commit9bb5701nhắc "LIVE 29-dispatch") ·fable-clone.mdtừng cótier:'opus'trước S110 hay chưa (hiện-trạng vắng = VERIFIED). - E-030 hub defer EXECUTE CRLF sang s95 ⇒ SE đi TRƯỚC hub ở khối EOL; không có mẫu chạy sẵn để chép.