Files
solution-erp/.claude/workflows/runs/2026-07-15-S119-adap-6-broadcast/spec-adap-6-broadcast-15-07-2026.md
pqhuy1987 4727d16178 [CLAUDE] Docs: S119 adap 6 broadcast AI_INFRA - dieu tra chieu rong + spec v3 (dung truoc wave)
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>
2026-07-15 11:20:29 +07:00

40 KiB
Raw Blame History

SPEC — SE đối ứng 6 broadcast AI_INFRA (S119, 2026-07-15)

H21 spec-file 3-mục. Engine propose (/fable-clone investigator-codebase 5-lane ensemble wf_1f6bd5e2-478, 5/5 clean 0-garble) → lead verify + refute + synthesizelead 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 reviewer chố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 ×2CRLF một mình có thể đủ giết, KHÔNG cần ': '. ⇒ Mô-hình broadcast ("CRLF : ") 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ế leadcơ-chế đạt tier-2 VẮNG HẲN. Fable UP ⇒ N lane inherit = N×Fabletrá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:208/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.json6 file này NẰM TRONG 188 ⇒ lúc đó git checkout mù = HỦY việc chưa-commit (= đúng E-029 hub đã trả giá: "verify-mốc-sai ca-fold-uncommitted → reflog-recover"). (b) n=4=K lú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.mdtext: 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/crlfgit 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.runthrow. 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>/run.md*-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-codegrep -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/crlfw/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-stalenesscấ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:5lead-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 sub0 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ụcfable-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ếnRỒ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)

  1. 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.
  2. 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 · 67be44310 filechính là 2 commit chứng-minh hook-FIREengine: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.
  3. 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-ro index.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 EOLsai với SE (§5.0 = reset --soft = worktree-neutral; 188 = dotnet ef/VS). (b) Mô-hình "CRLF ': '" 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-aorigin/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:
🔴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:62026-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-codebase 5-lane ensemble wf_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 .md no 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ỳ-2cấ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ù commit 9bb5701 nhắc "LIVE 29-dispatch") · fable-clone.md từng có tier:'opus' trước S110 hay chưa (hiện-trạng vắng = VERIFIED).
  • E-030 hub defer EXECUTE CRLF sang s95SE đi TRƯỚC hub ở khối EOL; không có mẫu chạy sẵn để chép.