# sub-task-1 — LANE W-B (CONTRACT v2 + H24-5 + STAMP + CARVE-OUT + DRAFT-FIX)

> Role: implementer (Write/Edit). Run: 2026-07-20-S141-adap-dot-9-10-bo-ba-sub. Self-writes directly (anti-#53, ghi-dia-trong-luc-lam).

## FILE-SET (chi cac file nay)
- `.claude/governance/.session-counter.json` (B1)
- `scripts/governance-detectors.ps1` (B2)
- `docs/governance/error-ledger.md` (B4)
- `.claude/commands/check-email.md` (B5 i)
- `.claude/commands/send-email.md` (B5 ii)
- `scripts/stamp_verify.py` (B5 iii — MOI port)
- `docs/governance/session-model-se-draft.md` (B6)
- cay tam $env:TEMP (B3 fault-inject, cleanup cuoi)

## PLAN / STATUS

> 🔴 **RECONCILED @S142 `/tiep` — ground-truth-tu-DIA.** Lane chet luc ~18:31 20-07. B1 da commit that (`a458102 wal: pause`); B5(iii) port da land (untracked). Cac o con lai do lead xac minh bang grep tren dia, KHONG tin diary.

- [x] B1 — .session-counter.json: contract v2 + _tick_invariant_note — PASS, **DA COMMIT** `a458102`; grep "SQUASH-BENIGN":7 + "transient":12 OK; ConvertFrom-Json/json.load exit 0
- [ ] B2 — governance-detectors.ps1: H24-5 counter-ancestor-classify (INFORM-only) — grep "H24-5|counter-ancestor" = **0 hit, CHUA LAM**
- [ ] B3 — Fault-inject 3 ca (CA-1 squash-benign · CA-2a object-missing · CA-2b counter-regress) — phu thuoc B2
- [ ] B4 — error-ledger.md: Carve-out o3 note-block — grep "carve-out" = **0 hit, CHUA LAM**
- [x] B5(iii) — PORT `scripts/stamp_verify.py` 2378B ĐÃ LAND (untracked, mtime 18:31), header-note "mirror-of AI_INFRA ... ported S141" co
- [ ] B5(i) — check-email.md 4(b) KHOAN-DUNG: file **CHUA sua** (van tro `AI_INFRA\scripts\stamp_verify.py` hub-path, chua co regex khoan-dung `"?...{8,64}"?`)
- [ ] B5(ii) — send-email.md 6c align + prefer script — **CHUA sua**
- [ ] B5 — verify 3-dang (quoted that + synthetic khong-ngoac + rut-gon 8-hex)
- [ ] B6 — session-model-se-draft.md: flip §4 (a)(b) + dong cuoi — file mtime **18-07 (nguyen ban S140), CHUA sua**

## Detector baseline (measure before/after B2 for AC7)
- TBD

---

## Work log (append per file)

### B1 — .session-counter.json — PASS
- Edit1: replaced `_contract.fail_loud_on_regress` value with contract-v2 "Two triggers, two verdicts" EN string (58e28bae C-1). Now .session-counter.json:7.
- Edit2: inserted top-level key `_tick_invariant_note` (dede7ec5 Delta-1 verbatim) right after `_contract` block, before `_seed_honesty`. Now .session-counter.json:12.
- Verify: `ConvertFrom-Json` PARSE-OK exit0. Fields intact: counter=15, last_ticked_head=4c43d747..., light_at_counter=14, deep_at_counter=3.
- grep `SQUASH-BENIGN` = match line 7 (fail_loud value). grep `transient` = match line 12 (_tick_invariant_note "transiently +0").
- Chars literal `<`,`>`,`=>` used (valid JSON, ConvertFrom-Json accepts); no `"`/`\` in new strings so no escaping needed.

