# sub-task-1 — LANE W-B (detector H24-5 + fault-inject + carve-out + stamp + draft-fix)

**Vong-2 CAT-GON** (vong-1 chet @S141). Co Write/Edit → **ghi TRUC TIEP file nay** (anti-#53).
**Hang muc:** B2 · B3 · B4 · B5(i)(ii)+verify · B6 (B1 + B5(iii) DA LAND vong-1 — CAM dung lai).

## Tien-do (🔴 TICK NGAY sau MOI file — dung doi cuoi)

- [x] B2 — `governance-detectors.ps1`: detector H24-5 `counter-ancestor-classify` (read-only, `-RepoRoot`, INFORM-sink KHONG vao TOTAL) + nhanh counter-regress DEFAULT-ON [M1]
- [x] B3 — Fault-inject cay tam `$env:TEMP` 3 ca: CA-1 squash-benign 0-flag · CA-2a object-missing INFORM-flag · CA-2b counter-regress INFORM-flag (cleanup sau)
- [x] B4 — `error-ledger.md` Active-Guards: note-block carve-out o3 (2 luoi dich danh + cau trio S141)
- [x] B5(i) — `check-email.md` 4(b): regex KHOAN-DUNG + CAM quote-strict + uu tien `python scripts/stamp_verify.py`
- [x] B5(ii) — `send-email.md` 6c: align cung mau + prefer script
- [x] B5-verify — 3 dang: thu quoted that (`6239dd40`) + synthetic khong-ngoac + synthetic rut-gon 8-hex → ca 3 exit 0 → xoa synthetic
- [x] B6 — `session-model-se-draft.md` §4: flip (a)+(b) → "DA VE 2026-07-18" + 1 dong K4-form-conflict; (c) GIU cho-anh; **0 wire**
- [x] TU-VERIFY AC6·AC7·AC8·AC9·AC10·AC11·AC13

## Log chi-tiet
(append sau MOI file — ghi ca lenh verify da chay + output that)

---

### B2 — H24-5 `counter-ancestor-classify` (DONE)

**Land:** `scripts/governance-detectors.ps1:1359-1476` (section moi, chen NGAY TRUOC `Write-Section 'Summary'`) + sua dong tong `:1516` them ten H24-5 vao enum "new nets".

**Thiet ke (khop SPEC v2 §B2):**
- read-only, dung `$RepoRoot` co san (param `:38`) → `git -C $RepoRoot` ⇒ fault-inject cay tam isolate duoc (mirror H25-closeout).
- truc-1 reachability: `git merge-base --is-ancestor <last_ticked_head> HEAD` exit-0 → `OK-reachable` (0 flag) · else `git cat-file -t` = `commit` → `SQUASH-BENIGN (trace)` **Write-Host, 0 flag** · else → `Write-InformFlag object-missing`.
- truc-2 [M1] counter-regress DEFAULT-ON, DOC-LAP truc-1: `counter < last_audit.light_at_counter` HOAC `< deep_at_counter` → `Write-InformFlag counter-regress`. Doc CA 2 khoa (khong dung 1).
- [M2] MOI flag di qua `Write-InformFlag` (`:74-82` co san) → dong `[DETECTOR] LOW` rieng + cong vao `$script:InformCount`, **KHONG** vao `$script:FlagCount` (=TOTAL).
- skip co LY-DO + `$h245Measured`: khi skip thi dong tong in them `-- MEASURED NOTHING ...; a 0 after a skip is not a green` (chong doc 0 = xanh).

**🔴 BUG TU-BAT trong lan chay dau (khong phai happy-path):** lan 1 detector FLAG `counter-unparseable` tren file JSON **HOAN TOAN HOP LE**.
Root-cause do bang lenh, khong doan:
```
first4bytes=EF BB BF 7B          <- UTF-8 BOM
first char codepoint=65279       <- U+FEFF con nguyen trong string
raw parse=FAIL: Invalid JSON primitive: .
BOM-trimmed parse=OK
```
`[Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes())` **KHONG nuot BOM** (khac `Get-Content` / StreamReader detectEncodingFromByteOrderMarks). Tuc la: cach doc "an-toan-encoding" bat buoc dung de tranh bug E-010 (ANSI mis-decode) lai **mo ra failure-mode THU HAI**. Fix = doc bytes UTF-8 **VA** `.TrimStart([char]0xFEFF)` (viet bang code-point → .ps1 van thuan ASCII, gotcha #30). Comment `:1420-1428` ghi nguyen van bai hoc nay.
Neu chi chay happy-path va nhin "co flag = detector co rang" thi da ship 1 duong-gia.

**Verify (lenh + output THAT):**
```
# ASCII-purity + parse (gotcha #30)
file bytes=84812 ; non-ASCII bytes=0
parse errors=0

# chay lai toan suite tren repo THAT
exit=0
===== H24-5 - counter-ancestor-classify (INFORM-only) =====
  [OK] OK-reachable: last_ticked_head 96ab2679 (session S142) is an ancestor of HEAD
  [ok] counter=16 >= last_audit.light_at_counter=14
  [ok] counter=16 >= last_audit.deep_at_counter=3
  H24-5 counter-ancestor flags = 0 [INFORM-only, LOW, NOT folded into TOTAL baseline]

TOTAL FLAGS: 46
INFORM-ONLY (new nets C6 cite-2-tier + H24-4 pending-flip + H24-5 counter-ancestor-classify): 0
```
**TOTAL khong doi (anti-Goodhart, kiem 2 lop):** baseline TRUOC khi sua = `TOTAL FLAGS: 46`; sau khi sua = `46`. Khong chi so tong — so-sanh TUNG DONG:
```
baseline DETECTOR lines=46 ; after DETECTOR lines=46
DIFF: none - flag-line sets are IDENTICAL byte-for-byte     (Compare-Object)
```
⇒ 0 flag MOI, 0 flag MAT. So doc file (`counter=16`, `S142`, head `96ab2679`), khong hardcode.

---

### B3 — Fault-inject 3 ca (DONE, 3/3 PASS)

Cay tam `$env:TEMP\h245-fi-{ca1,ca2a,ca2b}`, moi ca = 1 repo git THAT (`git init` + commit that), chay detector bang `-RepoRoot <cay tam>`.
🔴 MOI ca deu **kiem-chung TIEN-DE bang git TRUOC** khi chay detector — neu tien-de sai thi ket qua detector vo nghia.

#### CA-1 — squash-benign (KY VONG: trace, **0 flag**)
Dung ke-hoach: `base commit(A)` → `wal: flush(B)` → tick json tro vao B → `git reset --soft A` + `git commit "[CLAUDE] Docs: S142 closeout"` (=C) ⇒ B thanh dangling.
```
A=50217bb3619bc5bfeae41144befaef7f04472f09
B(wal, se bi squash)=8a369c4720a32cdade625febc81f72cac30953bc
C(closeout squash)=069dee539e7c23550b5d21cbc28ec3fd8eb41503
--- kiem chung tien-de cua ca-1 ---
is-ancestor(B)=1 NOT-reachable (dung tien-de)
cat-file -t B = commit
```
Detector:
```
  [trace] SQUASH-BENIGN: last_ticked_head 8a369c47 (session S142) is NOT reachable from HEAD but the object EXISTS (cat-file -t = commit) - expected closeout-squash drift, 0 flag (contract v2)
  [ok] counter=16 >= last_audit.light_at_counter=14
  [ok] counter=16 >= last_audit.deep_at_counter=3
  H24-5 counter-ancestor flags = 0
```
**PASS** — dung `SQUASH-BENIGN`, 0 flag.

#### CA-2a — object-missing (KY VONG: **INFORM-flag**)
`last_ticked_head = 000...0` (40 hex), counter=16 KHONG lui ⇒ chi truc-1 duoc phep flag.
```
--- tien-de ---
is-ancestor exit=128
cat-file exit=128 (object MISSING - dung tien-de)
```
Detector:
```
[DETECTOR] LOW  | .claude/governance/.session-counter.json | object-missing: last_ticked_head 000...0 (session S142) is neither reachable from HEAD nor present as an object (cat-file -t failed) - NOT the benign squash class
  [ok] counter=16 >= last_audit.light_at_counter=14
  [ok] counter=16 >= last_audit.deep_at_counter=3
  H24-5 counter-ancestor flags = 1
```
**PASS** — dung 1 flag, dung LOAI (`object-missing`), truc-2 im dung.

#### CA-2b — counter-regress (KY VONG: **INFORM-flag**)
`counter=5`, `light_at_counter=14`, `deep_at_counter=3`, head = HEAD that (reachable).
```
--- tien-de ---
is-ancestor=0 REACHABLE (dung tien-de)   <- truc-1 PHAI im
```
Detector:
```
  [OK] OK-reachable: last_ticked_head ef8ceda1 (session S142) is an ancestor of HEAD
[DETECTOR] LOW  | ... | counter-regress: counter=5 sits BELOW last_audit.light_at_counter=14 - an audit already ran at a HIGHER counter, so this file was rolled back or hand-edited
  [ok] counter=5 >= last_audit.deep_at_counter=3
  H24-5 counter-ancestor flags = 1
```
**PASS** — dung 1 flag `counter-regress`. Bonus 2-chieu TRONG cung 1 ca: nhanh `light` (5<14) **KEU**, nhanh `deep` (5>=3) **IM**, truc-1 **IM** ⇒ khong phai "flag bua", no phan-biet dung tung khoa.

#### 2 CHIEU (bay #3) — chung ca FLAG-dung-khi-loi VA IM-dung-khi-khong-loi
| Tinh huong | Ky vong | Thuc te | Verdict |
|---|---|---|---|
| repo THAT, head reachable, counter 16>=14/3 | IM (0 flag) | 0 flag, `[OK] OK-reachable` | PASS (chieu IM) |
| CA-1 dangling-but-exists | IM (0 flag, co trace) | 0 flag + trace SQUASH-BENIGN | PASS (chieu IM, ca kho) |
| CA-2a object bien mat | KEU | 1 flag `object-missing` | PASS (chieu KEU) |
| CA-2b counter lui | KEU | 1 flag `counter-regress` | PASS (chieu KEU) |
| CA-2b nhanh `deep` (5>=3) | IM | im | PASS (chieu IM, cung ca) |

#### [M2] chung INFORM **KHONG** vao TOTAL — do bang so, khong bang loi hua
Ca 3 cay tam co cung cau-truc file ⇒ TOTAL cua cac detector khac la HANG SO:
```
CA-1  (H24-5 flags=0) -> TOTAL FLAGS: 2 ; INFORM-ONLY: 0
CA-2a (H24-5 flags=1) -> TOTAL FLAGS: 2 ; INFORM-ONLY: 1
CA-2b (H24-5 flags=1) -> TOTAL FLAGS: 2 ; INFORM-ONLY: 1
```
H24-5 di tu 0→1 flag ma **TOTAL dung yen o 2**, chi INFORM-ONLY nhuc nhich ⇒ sink tach that su, khong phai chi ghi trong comment.

#### Ghi chu them (khong phai ky vong, nhung do duoc)
JSON trong cay tam viet **no-BOM**, repo that **co BOM** ⇒ ca 2 duong doc deu parse OK sau fix `TrimStart([char]0xFEFF)` — phu ca 2 dang encoding, khong chi dang minh vua vap.

#### Cleanup
```
removed: h245-fi-ca1 / h245-fi-ca2a / h245-fi-ca2b
0 cay tam h245-fi-* con lai
```

---

### B4 — carve-out o3 note-block (DONE)

**Land:** `docs/governance/error-ledger.md:44-64` — note-block `> ### 🪤 Carve-out ô3 — điều-kiện SỐNG`, chen NGAY TRUOC bang Active-Guards (sau note K6.2), dung dang blockquote khop 2 note co san `:41-42`.

**Noi dung (khong doan — keo tu basis THAT):** doc `broadcasts/inbox/2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2.md` (`content_sha256: 9a35405b...` xac nhan o `:10`), khoi-2 nam `:25-36`. 2 luoi lay NGUYEN VAN hub `:31-32`:
```
- (a) dòng-nợ chỉ-đọc vẫn in công-khai ở mọi điểm dừng, và
- (b) cái dò "closeout-thiếu-nghi-thức" vẫn được nối.
```
→ dich sang ten-file DICH DANH cua SE: (a) `scripts/nhip-no-probe.ps1` · (b) section `H25-closeout-ritual (GAP-2)` trong `scripts/governance-detectors.ps1`.
Luat 1-luoi-chet lay tu hub `:34`: *"Một trong hai tắt → carve-out mất lớp tự-minh-bạch → phải đánh-giá-lại nấc (khi đó nên tụt về chạy vô-điều-kiện cho tới khi lưới sống lại)"*. Live-evidence S139→S140 lay tu hub `:36` (light 8/6 → gat → chay → cờ THAT → 0/6).

**Them (SPEC yeu cau 1 cau, em viet 1 doan cho du nghia):** trio-consent S141 = CUNG CLASS carve-out, chiu CHUNG luat; luoi cua no = proposal-line in CA khi Light + vet-skip WAL `trio: skipped S<nn>`.

**Kiem 2 luoi CON SONG tai S142 (khong khai suong — cham dia):**
```
-rw-r--r-- 1 pqhuy 197609 7253 Jul 17 17:02 scripts/nhip-no-probe.ps1     <- (a) song
948:Write-Section 'H25-closeout-ritual (GAP-2)'                            <- (b) wired
```
+ section H25 co chay ra output that trong moi lan chay suite o tren. ⇒ nac `PASS-với-carve-out` dung vung, CHUA phai re-eval. (Neu 1 trong 2 chet thi note nay tu no la lenh tut ve chay-vo-dieu-kien.)

**Verify khong sinh flag moi** (error-ledger.md NAM TRONG scope C6 cite-2-tier ⇒ phai kiem, khong duoc doan):
```
TOTAL FLAGS: 46          (baseline 46, KHONG DOI)
INFORM-ONLY: 0           (C6 khong bat cite nao trong note moi — moi path deu trong backtick = mention)
```
Compare-Object flag-lines vs baseline ra **DUNG 1 delta, KHONG PHAI cua em**:
```
=> .claude/commands/session-end.md:148 | derived-stale: writes 2 test but canonical=528
<= .claude/commands/session-end.md:138 | derived-stale: writes 2 test but canonical=528
```
= 1 flag CU (pre-existing) bi **doi so dong 138→148** do **Lane W-A dang sua `session-end.md` song song** (file-set cua ho, khong phai cua em). Noi dung flag y het, khong phai flag moi. 🔴 Khai ro de nguoi doc sau khong quy nham cho lane W-B.

---

### B5(i)(ii) — stamp-decode dau-doc KHOAN-DUNG (DONE)

**B5(i) `.claude/commands/check-email.md` buoc 4:** tach 4(b) thanh sub-block `**4(b) — đầu-đọc stamp KHOAN-DUNG (adopt S141, ghim S142)**` gom 5 bullet:
1. UU TIEN chay `python scripts/stamp_verify.py <file>` — **ban port LOCAL**, khong tro `AI_INFRA/scripts/...` nua (hub-path chi con la nguon **re-pull** khi §N canon doi). Ghi ro exit 0 = OK / exit 1 = MISMATCH + script tach duoc `WRONG-METHOD` khoi `MISMATCH`.
2. PIN mau khoan-dung `content_sha256:\s*"?([0-9a-fA-F]{8,64})"?` + liet ke 3 dang (co-ngoac · khong-ngoac · rut-gon ≥8-hex so bang **tien-to**).
3. 🔴 CAM quote-strict `content_sha256:\s*([0-9a-fA-F]+)` + ly-do (whiff dau `"` → rut rong → doc thanh khong-khop → **false-tamper**) + ca that S141 suyt oan 3/3. Them 1 cau chong hieu-nham: *mau chat hon KHONG an-toan hon — no chi doi loi "bo sot" thanh loi "vu oan"*.
4. Body canonical giu NGUYEN (`ReadAllBytes`+UTF8, strip \r, split-3, strip-1-newline) + giu nguyen CAM `Get-Content -Raw` (S125).
5. Nhanh ✗ → nghi VERIFIER TRUOC, doi lenh doi-chung sang script LOCAL.

**B5(ii) `.claude/commands/send-email.md`:**
- **buoc 4**: `khớp \`stamp_verify.py\` hub` → `khớp \`scripts/stamp_verify.py\` **bản port LOCAL** — KHÔNG trỏ hub-path nữa`.
- **6c**: them 2 bullet — (a) uu tien `python scripts/stamp_verify.py broadcasts/outbox/<to>/<id>.md`, exit 0 = PASS, exit 1 doc verdict (`WRONG-METHOD` re-stamp ≠ `MISMATCH` nghi sua-sau-stamp — **2 lop loi khac cach xu, dung gop**); (b) CUNG mau khoan-dung nhu `/check-email` 4(b) + CAM quote-strict, kem ly-do doi-xung: dau gui whiff thi **ABORT oan chinh thu minh vua ghi dung**; *"dau-doc gui va dau-doc nhan PHAI cung mot mau, lech mau = hai ben cai nhau ve mot file lanh"*.

### B5-verify — 3 dang, ca 3 EXIT 0 (DONE)

Chay `python scripts/stamp_verify.py` (Python 3.11.3 co san — khong phai lay regex-pin lam chinh).

| # | Dang | File | declared | verdict | exit |
|---|---|---|---|---|---|
| 1 | **co-ngoac (THAT)** | `broadcasts/inbox/2026-07-17-Governance-chuan-hoa-stamp-decode.md:11` | `6239dd40...c72d19` (64 hex trong `"`) | `OK (canonical match)` | **0** |
| 2 | **khong-ngoac** (synthetic) | `$TEMP/synth-unquoted.md` | `9c8f557c...a20037` (64 hex tran) | `OK (canonical match)` | **0** |
| 3 | **rut-gon 8-hex** (synthetic) | `$TEMP/synth-short8.md` | `9c8f557c` | `OK (canonical match)` | **0** |

Output that (ca 3):
```
== 2026-07-17-Governance-chuan-hoa-stamp-decode.md
   declared : 6239dd4037925d24feb5baa648aa586fecc6d104a54a66608fa7c6ed86c72d19
   canonical: 6239dd4037925d24feb5baa648aa586fecc6d104a54a66608fa7c6ed86c72d19
   verdict  : OK (canonical match)                       EXIT=0
== synth-unquoted.md
   declared : 9c8f557c4800d3db62c15b85b12b159f586827fa4308eca377fd0bf234a20037
   canonical: 9c8f557c4800d3db62c15b85b12b159f586827fa4308eca377fd0bf234a20037
   verdict  : OK (canonical match)                       EXIT=0
== synth-short8.md
   declared : 9c8f557c
   canonical: 9c8f557c4800d3db62c15b85b12b159f586827fa4308eca377fd0bf234a20037
   verdict  : OK (canonical match)                       EXIT=0
```

**🔴 THEM (khong co trong SPEC nhung phai co): CHUNG mau CAM that su whiff — 2 chieu, khong noi suong.**
Em vua PIN vao 2 command cau *"quote-strict gay false-tamper"*. Neu chi khai ma khong do thi no la niem tin, khong phai bang chung. Do that:
```
dang                     KHOAN-DUNG (pin)       quote-strict (CAM)
----------------------------------------------------------------------
QUOTED (that)            6239dd403792...        *** WHIFF (None) ***
KHONG-NGOAC (synth)      9c8f557c4800...        9c8f557c4800...
RUT-GON 8hex (synth)     9c8f557c...            9c8f557c...
```
⇒ quote-strict **whiff DUNG o dang co-ngoac** — tuc dang cua thu THAT tu hub — trong khi 2 dang kia no van chay ngon. Day chinh la ly do no nguy hiem: **no khong hong deu, no chi hong dung cho thuc-te dang dung** ⇒ nhin qua tuong on. Mau khoan-dung bat 3/3.

**Cleanup:** `removed: synth-unquoted.md / synth-short8.md` + `0 file synthetic con lai`. 2 file synthetic dat o `$TEMP` (KHONG dat trong repo) ⇒ 0 rui ro ban git-status.

---

### B6 — draft §4 prereq flip (DONE, **0 WIRE**)

**Land:** `docs/governance/session-model-se-draft.md:45-56` (§4) — doi 1 doan van gach-ngang thanh **3 bullet (a)(b)(c) + 1 khoi 3 khoan cho-anh**. 🔴 **KHONG dong nao ra ngoai draft** — 0 file cau-hinh, 0 hook, 0 command, 0 wire.

**[M7] (a) FLIP ✅:** "hub phát mẫu áp dụng" → **DA VE (dot 2026-07-18)** `101e69d6` kit+manifest + caveat: **Q4 van-nguong CHUA tra loi** va **hub co-y bo counter**.
**[M7] (b) FLIP ✅:** "khuôn bộ-ba SUB" → **DA VE 2026-07-18** `58e28bae` khoi B → SE adopt trio @S141.
**(c) GIU nguyen:** "anh duyệt bảng VC-1/2/3" = **DIEU-KIEN CUOI**, them 1 cau *"gio la dieu-kien duy nhat con dung chan"*.

**Them khoi 3 khoan CHO-ANH-DUYET-CUNG-BANG-VC** (SPEC yeu cau 1 dong, em tach 3 y cho soi duoc tung cai):
1. **K4 form-conflict** — hub `.claude/sessions/session-<N>/` (thu-muc-per-phien) vs draft VC-3 `.claude/logic-sessions/L<mm>.md` (mot-tep-per-phien): khac CA ten LAN hinh.
2. **`session_ctx_kb`** — manifest ghi `64` (KB, nhan 1024); SE chua co khoa, **chua do** ⇒ muon so hub ma chua do = dung thu K6.2 cam.
3. **meld-forward-gap (hook 3→4 path)** — hub dua vao meld-forward de lich-su phien khong rot luc squash, nhung hook SE quet DUNG 3 path ⇒ thu-muc phien la path **thu 4** hien KHONG duoc quet.

**🔴 KHONG doan — moi khang dinh deu cham dia 1 lenh (bai hoc S121/S130):**
| Khang dinh viet vao draft | Lenh | Ket qua THAT |
|---|---|---|
| thu `101e69d6` co that | `grep -rln` broadcasts/ | `inbox/2026-07-17-Governance-session-model-phien-logic-manifest.md`, `content_sha256: "101e69d6..."` |
| thu `58e28bae` co that | `grep -rln` broadcasts/ | `inbox/2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan.md` |
| Q4 van-nguong CHUA tra loi | grep `ngưỡng\|nguong` trong thu 101e69d6 | **0 hit** |
| hub co-y bo counter | grep `counter\|đếm` trong thu 101e69d6 | **0 hit** |
| hub dung `sessions/session-<N>` | grep | `:25` *"Một thư mục quy-ước chung cho mỗi phiên-LOGIC: `.claude/sessions/session-<N>/`"* |
| `session_ctx_kb: 64` | grep | `:73  session_ctx_kb: 64  # đơn vị KB (đọc code nhân 1024)` |
| meld-forward ton tai | grep | `:42` *"Meld-forward khi gộp sổ — các commit mang thư-mục phiên được nhập-tiến về trước khi squash"* |
| hook quet DUNG 3 path | grep `.claude/hooks/wal-flush.ps1` | `:13  $paths = @(".claude/WAL.md", ".claude/agent-memory/", ".claude/workflows/runs/")` |

**⚠️ 1 diem em KHONG viet y nguyen SPEC — khai thang:** SPEC ghi *(a) "DA VE 2026-07-18"*, nhung thu `101e69d6` **tu de ngay 2026-07-17** (ten file cung 07-17); 07-18 la **dot pull**, con **ve repo** thi ca 2 thu deu o commit `a458102` **2026-07-20** (`git log --diff-filter=A`). Em giu y SPEC nhung viet *"DA VE (dot 2026-07-18) ... thu de ngay 2026-07-17, pull trong dot 07-18"* de khong ai doc nham ngay. Thu `58e28bae` de ngay 07-18 dung y SPEC, giu nguyen.

---

## TU-VERIFY — tung AC kem lenh + output THAT

### AC6 — contract v2 + `_tick_invariant_note` (B1 vong-1; em **CHI DOC**, KHONG sua)
```
ConvertFrom-Json = OK (exit 0)
chua 'SQUASH-BENIGN' : True
chua 'transient'     : True
co khoa _tick_invariant_note : True
```
🔴 Doc bang `[IO.File]::ReadAllBytes` + UTF8 + `TrimStart([char]0xFEFF)` (file NAY co BOM — xem B2).

### AC7 — H24-5 (4 phan, PASS het)
| Phan | Ky vong | Do duoc |
|---|---|---|
| repo THAT | `OK-reachable`, 0 flag | `[OK] OK-reachable ... 96ab2679 (session S142)` + `counter=16 >= 14` + `>= 3` → **0 flag** |
| FI 3 ca | 3/3 PASS | CA-1 SQUASH-BENIGN 0-flag · CA-2a object-missing 1-flag · CA-2b counter-regress 1-flag |
| dong INFORM-ONLY rieng | co | `H24-5 counter-ancestor flags = N [INFORM-only, LOW, NOT folded into TOTAL baseline]` + ten H24-5 vao dong tong cuoi |
| TOTAL khong doi | 46 = 46 | `baseline=46 final=46` + Compare-Object 0 delta noi-dung |

### AC8 — carve-out note (error-ledger)
```
'Carve-out'            : True
'nhip-no-probe.ps1'    : True      <- luoi (a) dich danh
'H25-closeout-ritual'  : True      <- luoi (b) dich danh
'9a35405b'             : True      <- basis khoi-2
'RE-EVAL'              : True      <- luat 1-luoi-chet
'trio-consent'         : True      <- cau trio S141
'trio: skipped'        : True      <- vet-skip WAL
```

### AC9 — stamp
`stamp_verify.py` exit **0** tren ca 3 dang (quoted THAT `6239dd40` · synthetic khong-ngoac · synthetic 8-hex). Mau khoan-dung pin trong CA 2 command (`check-email.md` 4(b) + `send-email.md` 6c/buoc 4). Bang do 2-regex chung quote-strict whiff dung dang co-ngoac.

### AC10 — draft prereq + **0 WIRE**
```
'101e69d6' True · '58e28bae' True · 'session_ctx_kb' True · 'meld-forward-gap' True · 'K4 form-conflict' True
so lan 'ĐÃ VỀ' = 2        <- dung (a) va (b)
(c) con 'CHỜ ANH' : True
```
Chung 0-wire (khong chi noi suong):
```
.claude/hooks/wal-flush.ps1 -> KHONG DOI (boi lane W-B)
.claude/sessions/       CHUA tao
.claude/logic-sessions/ CHUA tao
```

### AC11 — suite exit 0 + giai thich TUNG flag moi
`suite exit=0`. **0 flag MOI.** Compare-Object baseline↔final ra dung 1 delta va **KHONG phai cua lane W-B**:
```
=> .claude/commands/session-end.md:148 | derived-stale: writes 2 test but canonical=528
<= .claude/commands/session-end.md:138 | derived-stale: writes 2 test but canonical=528
```
= 1 flag CU doi so dong (138→148) do **Lane W-A** sua `session-end.md` song song. Noi dung y het ⇒ khong phai flag moi, khong phai flag mat.
🔴 **Anti-Goodhart:** em KHONG "vá" bang cach lam flag bien mat. TOTAL giu **nguyen 46** ca truoc lan sau; thu duy nhat nhuc nhich la INFORM-ONLY (0 tren repo that, 1 khi co loi that trong cay tam). Khong co chung-nhan nao bi mat.

### AC13 — isolation git-status
6 file lane W-B doi (dung file-set duoc phep, khong hon):
```
M scripts/governance-detectors.ps1
M docs/governance/error-ledger.md
M .claude/commands/check-email.md
M .claude/commands/send-email.md
M docs/governance/session-model-se-draft.md
M .claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/sub-task-1.md
```
Cac file khac trong `git status` (`agents/*`, `hmw.js`, `session-start/end.md`, `agents/README.md`, `workflows/README.md`, `harness-11-engine.md`, `vocab-alias-map.md`, `memory-budget.json`, `fable-*.md`, 3 persona `??`) = **Lane W-A**, em khong cham.

**🔴 2 canh-bao tu guard-check cua chinh em — DA TRUY, CA HAI KHONG PHAI EM:**
1. `.claude/governance/.session-counter.json` hien ` M` → `git diff` cho thay **dung 4 dong = 4 truong tick**:
   `counter 15→16 · S141→S142 · 4c43d747→96ab2679 · 2026-07-20→2026-07-22` ⇒ **tick cua /session-start phien nay** (chinh de-bai da bao truoc), KHONG phai em sua. `1 file changed, 4 insertions(+), 4 deletions(-)` — khong co dong nao khac.
2. `scripts/stamp_verify.py` hien `??` → mtime **2026-07-20 18:31:49** (= vong-1, TRUOC phien nay 2 ngay) va da nam trong git-status snapshot luc phien bat dau ⇒ pre-existing. Em chi `Read`, khong ghi.
   ⚠️ **PHAT HIEN PHU cho em-main @closeout:** file nay **da LAND nhung CHUA duoc commit** (`??` chu khong phai tracked). SPEC ghi B5(iii) "DA LAND vong-1" — dung ve DIA, nhung neu closeout khong `git add scripts/stamp_verify.py` thi **ban port mat**, va CA 2 command em vua sua deu tro vao no ⇒ 2 command se tro vao file khong ton tai tren remote. **Can add o commit toi.**

### Cleanup tong
```
0 cay tam h245-fi-* con lai
0 file synthetic con lai
0 file tam con lai trong $TEMP
```
(script phu `mk_synth.py` trong scratchpad cung da xoa.)
