# Run — S119 adap 6 broadcast AI_INFRA

- **run-id:** `2026-07-15-S119-adap-6-broadcast`
- **date:** 2026-07-15 · **session:** S119 · **branch:** main
- **lead:** em-main (Opus 4.8 1M Max — owner-choice per MTv3, KHÔNG outage)
- **engine:** `/fable-clone investigator-codebase` — ENSEMBLE tier-2, N=5 lane CÙNG 1 vai (multi-lens), RETURN-only
- **mode:** RUN-TRACE (sàn H22 S111 — run ≥3 task HOẶC >5' = BẮT BUỘC)
- **Sàn-1 dogfood (H22 wal-defect-fix, 2026-07-13):** marker phục-hồi ĐÃ đăng-ký ở `.claude/WAL.md` dòng `wf:` **TRƯỚC** khi phóng (positive-assertion @launch).

## Đề-bài

SE đối ứng **6 broadcast mới** (check-email S119, 7 file copy hash-verify 7/7):

| # | Broadcast | type |
|---|---|---|
| 1 | `2026-07-13-Governance-harness-23-explicit-model-at-spawn` | update |
| 2 | `2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence` | new |
| 3 | `2026-07-13-Governance-harness-22-wal-defect-fix` (5 sàn) | update |
| 4 | `2026-07-13-Governance-adap-update-harness-22-wal-push-guard` | update |
| 5 | `2026-07-15-Governance-eol-crlf-agent-registry-defect-notice` | update |
| 6 | `2026-07-14-Governance-owner-sign-3-marks-h21-mtv3-h22` | notify |

## Phơi-nhiễm SE — ĐO THẬT bởi lead trước khi phóng (ground-truth cho mọi lane)

| Trục | Số đo | Lệnh |
|---|---|---|
| push-guard chưa-đẩy | **n = 3** | `git log --format='%s' origin/main..HEAD \| grep -c '^wal:'` |
| wal: ĐÃ LỌT remote | **57** | `git log --format='%s' origin/main \| grep -c '^wal:'` |
| autocrlf | **true @ system** (`C:/Program Files/Git/etc/gitconfig`) | `git config --show-origin --get-all core.autocrlf` |
| file lật EOL | **188** (131 = Migrations) | `git ls-files --eol \| grep -c 'i/lf.*w/crlf'` |
| agent CR bytes | **0/13** (blob + worktree) | `git cat-file -p HEAD:<f> \| tr -cd '\r' \| wc -c` |
| agent description style | **12/12 block-scalar `\|`** → `: ` trigger N/A | — |
| `.gitattributes` phủ | CHỈ `broadcasts/**` + `*.sh` — agent **KHÔNG** được che | `cat .gitattributes` |
| squash cơ-chế | CÓ chạy (reflog `c808b9a reset: moving to HEAD~2` @S118) | `git reflog` |

**Kết luận lead:** SE **chưa chết** ở EOL (2 lớp may độc-lập: 0-CR + block-scalar) nhưng **mìn đã cài**; SE **dính lỗi sống** ở push-guard (57 lọt remote vs hub 1) + Sàn-3 wal-defect ("trống⇒sạch" — lead mắc chính sáng nay @BƯỚC 0.7).

## Lane (5 — cùng vai `investigator-codebase`, khác lăng-kính)

| Lane | Lăng-kính | File |
|---|---|---|
| A | H22 wal-defect-fix 5-sàn + push-guard | `sub-investigator-codebase-A.md` |
| B | EOL/CRLF + agent-registry | `sub-investigator-codebase-B.md` |
| C | H23 model-at-spawn ⟂ H8 all-inherit (xung-đột kiến-trúc) | `sub-investigator-codebase-C.md` |
| D | H24 lead-self-audit + H17 cadence | `sub-investigator-codebase-D.md` |
| E | Cross-cut: thứ-tự phụ-thuộc + wave song-song + xung-đột | `sub-investigator-codebase-E.md` |

---

## taskList snapshot — **W1 (S121, lượt phóng 2)**

> 🔴 Đây là snapshot @launch cho `/tiep` §4 (chết giữa run ⇒ relaunch ĐÃ-CẮT-GỌT chỉ task còn lại; memory-pack dẫn-xuất LẠI TƯƠI, CẤM xài lại snapshot cũ).
> **Engine:** `/hmw` (KHÔNG raw-Workflow — W0.4 vừa khai raw-Workflow = kẽ KHÔNG gate; đi lại kẽ đó ngay ở W1 = tự mâu-thuẫn).
> **role = `null` (role-less, inherit lead)** — CỐ Ý: 4 file đều `.ps1` infra, `implementer-backend` khai scope .NET-only + **auto-refuse out-of-scope** ⇒ dùng role-less tránh sub từ-chối. Đánh đổi: hmw KHÔNG bơm memoryPack cho role-less (`mem = role && memoryPack[role]`) ⇒ **ngữ-cảnh nhét TRỌN vào prompt**.

| i | Lane | File (disjoint) | Việc |
|---|---|---|---|
| 0 | **①** | `scripts/governance-detectors.ps1` (**EDIT**) | +2 detector (độ-tươi-tiêu-đề `anchor_patterns[]` ≥2 dạng · tuổi-carry `[carry:<slug>]`) + GAP-3 `+2 token` (`menu`/`policy`) |
| 1 | **②** | `scripts/agent-frontmatter-eol-check.ps1` (**NEW**) | byte-reader EOL scoped — 🔴 **HẠ GIÁ-TRỊ xuống HYGIENE** (W0.6 = CRLF-tolerant, v2:159) |
| 2 | **③** | `scripts/wal-recovery-test.ps1` (**NEW**) | 4-ca FIX #3-bis (ca0/1/2/3 theo ĐÁY range, KHÔNG theo NONWAL) |
| 3 | **W1b** | `scripts/spawn-model-audit.ps1` (**NEW**) | PA-2b resolved-vs-expected + fault-inject expected-giả PHẢI FLAG |

**Phụ-thuộc chéo đã khai với worker:** ①đọc `h24_cadence` từ `memory-budget.json` — key đó **W2 mới thêm** ⇒ ① phải **fail-loud khi thiếu key**, 🔴 CẤM hardcode số nhịp (H24 M3: *"số NHỊP đọc từ config"* — KHÔNG phải "0 số hardcode toàn file"). W1b đọc hằng `TIER2_EXPECTED_FULL_ID` — cũng **W2 mới thêm** (PA-2a) ⇒ cùng luật fail-loud.

🔴 ~~**ORPHAN MỚI @S121:** backfill `[carry:*]` chưa ai làm ⇒ detector tuổi-carry 0-fire~~ — **CLAIM NÀY SAI. LEAD RÚT @S121 sau khi lane ① đo đĩa.**

### ❌ Lỗi lead @S121 — khẳng-định sự-thật-trên-đĩa mà KHÔNG chạm đĩa (đi vào adap-report)

| Lead nói (brief + báo anh + run.md) | ĐĨA THẬT | Đo bằng |
|---|---|---|
| HANDOFF **chưa** backfill `[carry:*]` ⇒ orphan | **ĐÃ backfill 7 khoá thật** (+1 literal `[carry:<slug>]` = câu định-nghĩa), vào từ **`4727d16`** = closeout S119 **ĐÃ PUSH** | `grep -o '\[carry:[^]]*\]' docs/HANDOFF.md \| sort \| uniq -c` = 8 · `git log -S'[carry:'` = 4727d16 |
| config = `.claude/memory-budget.json` | **KHÔNG tồn tại** — thật = **`.claude/agent-memory/memory-budget.json`** (25KB) | `ls` 2 path |
| acceptance: STATUS.md:6 ⇒ in `2026-07-14` | **`2026-07-15`** — `4727d16` (11:20 hôm nay) đã đổi ⇒ literal STALE **1 commit** | `sed -n '6p' \| grep 'Last updated'` |
| HANDOFF:5 ≈ 46 735 ký-tự | 46 493 **ký-tự** = 50 665 **byte** — 🔸 KHÔNG phải lệch: `wc -c` đếm byte, `len()` đếm char, VN UTF-8 đa-byte. **Không tính lỗi cho sub.** | `wc -c` vs python `len()` |

🔴 **Cơ-chế lỗi (khác "đo nhầm" — tệ hơn):** lead rà **BẢNG 7 WAVE**, thấy không wave nào được giao việc backfill ⇒ kết-luận **việc chưa làm**. *"Không wave nào sở-hữu"* **≠** *"chưa có trên đĩa"* — S119 đã làm nó **NGOÀI** cấu-trúc wave. ⇒ lead khẳng-định một fact-trên-đĩa **mà chưa hề đo đĩa**. Cùng họ `feedback_resume_premise_reverify` (re-verify tiền-đề từ ĐĨA) — lead tự nhắc mình luật đó ở W0.6 rồi vi-phạm ngay sau đó.
🔸 **Bẫy kỹ-thuật đáng ghi:** `grep -c 'carry:'` trả **1** (đếm **DÒNG**), `grep -o … | wc -l` trả **8** (đếm **occurrence**). Trên mega-line `HANDOFF.md:5` (50 665 byte) hai lệnh lệch **8×** ⇒ ai dùng `-c` sẽ kết-luận "chỉ 1 khoá" và sai y hệt.

### ✅ GAP THẬT (lane ① tìm ra, lead đã VERIFY ĐĨA) — sâu hơn claim sai

**carry-age VACUOUS vì CẤU-TRÚC, không phải vì thiếu backfill.**
Đo: `HANDOFF logic-segments (NEXT anh/em) = 45` · **carry-lines = 1** ⇒ **mọi khoá streak = 1** ⇒ với M ∈ {6,15,3} ⇒ **0 fire VĨNH VIỄN, kể cả sau khi W2 land `h24_cadence`**.
🔬 Bằng-chứng detector đo **STREAK-ĐÓNG-DẤU** chứ không đo **TUỔI THẬT**: `[carry:tra-bui-relogin]` chỉ ở **seg#0 (S119)**; nhưng **seg#2** (block S118) nhắc **đúng việc đó** (*"tra.bui + 6 NV PRO đăng xuất → đăng nhập lại"*) mà **KHÔNG được đóng dấu** ⇒ tuổi thật **≥2 phiên**, detector đọc **1**. (lead verify độc-lập bằng python split 45 seg: seg#0 keys=[s119-wave, uat-s117] · seg#2 keys=[] nhưng nhắc tra.bui = True.)
⇒ **Lỗ THẬT = thiếu NGHI-THỨC ĐÓNG-DẤU-LẠI:** không có gì bắt phiên sau re-stamp khoá **còn mở** vào block `NEXT` mới. §Q3 đã chốt **no-retrofit** (cấm truy-ngược) ⇒ đường DUY NHẤT = re-stamp mỗi phiên ⇒ thuộc **`session-end.md` = W3**, KHÔNG phải W2.
⇒ **Giao W3** (session-end §5.2 landing). Cho tới lúc đó, detector khai đúng nấc: `M unresolved -> NO aged/not-aged verdict` (fail-loud, KHÔNG default).

## Nấc / next

- [x] Sàn-1 marker đăng-ký trước phóng
- [x] run.md scaffold @P1 (script no-fs)
- [x] 5 lane RETURN → em-main refute + synthesize (P3/P4)
- [ ] **Lead ghi** `spec-adap-6-broadcast-15-07-2026.md` (3-mục: ① đề-bài ② cách implement ③ checklist đo-được + wave)
- [ ] `/fable-clone reviewer` → `/fable-real reviewer` chốt spec
- [ ] HMW Opus MAX wave execute → push (guard `wal:`=0 CÙNG lượt)
- [ ] adap-report + request + email AI_INFRA
