---
name: s123-governance-4change-review
description: S123 review 4 governance change (backtick-guard H24-1 + detector moi H24-3 + retire dang-3 + chu-thich mark) — PASS_WITH_FIXES, 3 bug H24-3 tai-hien + nguy-bien retire-rationale
metadata:
  type: project
---

# S123 — review 4 thay-đổi governance (pre-commit, 7 file M)

**Verdict: PASS_WITH_FIXES** (0 blocking-commit · 3 MUST-FIX trước khi tin H24-3 · 1 MAJOR logic · 3 MINOR).
Diff: `scripts/governance-detectors.ps1` (+123) · `tiep.md` · `workflows/README.md` · `session-end.md` · `session-start.md` · `ACTIVE-MARKS.md` · `.session-counter.json`. HEAD thật = `8ba0e7e` (KHÔNG phải `cefb183` như brief — 2 `wal:` flush chen vào, benign).

## 🔴 CAUGHT — H24-3 lặp ĐÚNG cái bẫy mà cùng diff vừa vá (gen-2)

`$SessLabelRx` (`governance-detectors.ps1:661`) **KHÔNG có tick-parity guard**, trong khi cùng diff bỏ 30 dòng comment chứng-minh *"mọi doc viết VỀ dương-giả tự trở thành dương-giả"*. Tái-hiện (cây tạm): doc trích `**Last updated:** … (S119` inline + có heading `## … (S123)` + KHÔNG có label riêng ⇒ `$labelN`=119 (số của NGƯỜI KHÁC) vs maxHead=123 ⇒ **FLAG MED = FP**. Trigger canonical = **chính adap-report S123 mô-tả H24-3**. Kéo theo: lý-do severity MED *"0 proxy"* SAI — `$labelN` = first-regex-hit ≠ "label của CHÍNH file" = proxy, vỡ đúng lúc file trích.

## 🔴 CAUGHT — greedy `.*` lấy `(S<N>` CUỐI dòng, không phải MAX

`$SessHeadingRx = '^#{2,}\s+.*\(S(\d+)'` (`:662`). Comment `:634` khai *"newest (S<M>) carried by a heading"* = sai. Chứng cô-lập: `## Tong hop (S122 …) va lich su (S110 …)` → regex ra **S110**, max thật **S122**. FN tái-hiện: in `[ok] label S115 >= newest heading S110` — câu sai về chính file. Fault-inject 6/6 chỉ thử MAX-across-LINES (vòng max lo được); trục **within-line CHƯA THỬ**. Corpus hôm nay 0 ca ⇒ LATENT. Mỉa: cùng diff dùng `Matches` ở `Get-AnchorDate` nhưng `Match` ở đây — **không nhất-quán**.

## 🔴 MAJOR — lý-do retire viết ra ≠ lý-do thật, áp thẳng thì GIẾT dạng-2

Khắc ở 4 mặt (`tiep.md:58` · `README.md:32` · `session-end.md:61` · `ACTIVE-MARKS.md:29`): *"doc CẤM viết mới mà máy VẪN NHẬN ⇒ cấm-bằng-trí-nhớ ⇒ gỡ"*. Áp verbatim cho dạng-2: `README.md:24` ghi dạng-2 = *"legacy C8 — nhận, **cấm viết mới**"* ⇒ cùng hình-dạng ⇒ phải gỡ ⇒ 5 folder S71 thành orphan ⇒ ép rewrite history mà C8 **cấm**. **Luật vận-hành THẬT** (em-main đo đúng nhưng viết khác): *retire khi tập di-sản RỖNG (dạng-3: 0), giữ khi CÒN (dạng-2: 5)* — miễn-trừ C8 hết hiệu-lực khi hết người thụ-hưởng.

## 🔴 Q5 — "retire HOÀN-THÀNH mark" = NGUỴ-BIỆN (nhưng FORM chú-thích vẫn đúng)

Điều-khoản (2) dựng "NHẬN ≠ CHO PHÉP" thành **nguyên-tắc** mượn C8 — **CỐ Ý tách** lưới-rộng ⟂ luật-hẹp. Retire **thu lưới bằng luật** — em-main tự khai *"luật và máy nói cùng một câu"* = biến nhận **=** cho-phép. Đó là **NGƯỢC** điều-khoản, không phải hoàn-thành nó. (Retire vẫn ĐÚNG — lý-do khác: hết di-sản.)
**Tiền-lệ:** H-15 v2 @S82 (`adap-reports/2026-06-21:37`) em-main SỬA What-cell, biện-minh *"delta TRONG mark cũ, **không phải quyết-định-governance MỚI**"* · S122 mark `…20-42-01` (`2026-07-14:26`) anh chốt chú-thích, thân nguyên = **làm-rõ Ý-ĐỊNH** (roster 12 = ảnh chụp). S123 = anh **CHỐT RETIRE** = **quyết-định MỚI** ⇒ đúng ca mà tiền-lệ H-15 loại trừ. P4/P8 (`session-start.md:149`) KHÔNG bị vi-phạm (không tự-đóng-dấu). ⇒ Form OK, nhưng **hỏi anh mark MỚI**, đừng chốt bằng lập-luận "HOÀN-THÀNH".

## Q6 — 1 biên-giới đáng cãi (outward)

`adap-requests/2026-07-15-se-r5-…:67-69` = **request ĐANG BAY tới hub**, thì-hiện-tại *"TRI-ACCEPT … là bản vá SE **đang chạy**"* + xin fleet adopt tri-accept. SE vừa retire dạng-3 ⇒ hub adopt = **xuất-khẩu đúng nhánh chết** mà SE gỡ vì nguy-hiểm. Report/broadcast đã gửi = đóng băng ĐÚNG; nhưng request đang mở ≠ lịch-sử ⇒ đề-nghị **addendum cho hub**, KHÔNG sửa bản đã gửi.

## ✅ Chống được soi (đo lại, khớp)

46→45 tái-hiện (old 46 · new 45 · H24-1 4→2 · `comm -13` = đúng 1 flag H24-3, **0 flag mới**) · fenced **"0 ca" ĐÚNG** (383 file, 6 anchor hit, 0 in-fence) · backtick-FN corpus = **0** (2 ca ODD là mention thật: 3 và 5 tick) · `Matches`-not-`Match` ở Get-AnchorDate = **cần thật** · retire: **0 orphan / 26 run / 5 dạng-2 / 6 folder dạng-3 đều có flat** — khớp từng số · **7/7 fault-inject TỰ tái-hiện** gồm ca chốt `## Synthesis`-no-flat (S122 IM → S123 FLAG) · `8249B` · `22ea8c5`@14:28:07 · `dfa3dae`@14:48:54 · **"@S122 25 run" = ĐÚNG lịch-sử** (`git ls-tree` 48e0d26=25 · 22ea8c5=26) · pointer `README.md:17`/`:19` vẫn trúng sau edit.
**Q4:** retire **KHÔNG** mất khả-năng bắt — thu hẹp tập-nhận ⇒ chỉ thêm FP, đo 0. **Q8: ENDORSE không bump** — `:6` 69.871 ch, S119×3, S120/121/122=**0**, `retro-harvest`=0, `TRI-ACCEPT`=0 ⇒ bump = dán nhãn S122 lên chuyện kể dừng ở S119. Fix đúng = **bỏ nhãn phiên** (B1 collapse, chính resolve-text gợi ý).

## MINOR

**"5/5 separation"** (`:549`) = số tự-tính, đĩa hôm nay chỉ đỡ **4/4** — case 5 (`permission-matrix:16`) KHÔNG còn trên đĩa: W4 `a09dcae` đổi anchor thành `**Status (cập-nhật …):**` **không khớp AnchorPattern nào** ⇒ *"TRUE POSITIVE, still fires"* SAI (không fire, không cả parse). **Kèm phát-hiện adjacent (W4/S122, không thuộc diff):** file thoát flag bằng cách **đổi FORMAT anchor** chứ không refresh ngày ⇒ nay **vô-hình vĩnh-viễn** với H24-1, detector **mất positive-control** = metric xanh do rời tập-đo (Goodhart).
**`docs/_user-guide/node_modules/` = 30 .md gitignored NẰM TRONG `$GovMd`** (`Get-GovernanceMd:129-138` quét docs/**+.claude/** filesystem, không đọc .gitignore). Pre-existing, 0 anchor hit ⇒ 0 impact hôm nay; nhưng **cùng lớp hiểm-hoạ** em-main tự ghi `:495-503` (1 anchor tương-lai lạc vào ⇒ set `moc-phai` ⇒ bóp chết H24-1). H24-3 mới đi thêm 30 file này.
`ACTIVE-MARKS.md:22` trỏ `README.md:19-20`; `:20` nay **rỗng** sau edit (thân mark đóng băng ⇒ ghi-nhận thôi).

## Bài học (dùng lại)

1. **Vá 1 lớp bẫy ⇒ grep MỌI detector CÙNG LỚP trong chính diff đó.** em-main viết đúng định-luật "lây qua trích-dẫn" rồi đẻ detector mới không guard — bài-học nằm trong context vẫn không tự bật (khớp `feedback_root_cause_over_symptom` S122).
2. **Fault-inject test đúng trục đang chạy được.** 6/6 PASS mà trục within-line chưa hề chạm ⇒ đếm ca PASS ≠ phủ trục. Hỏi *"trục nào KHÔNG có ca nào?"*.
3. **Lý-do viết ra phải chịu test đối-xứng:** áp luật vừa viết cho nhánh ANH EM (dạng-2) — vỡ ⇒ luật viết ≠ luật làm.
4. **Số "N/N" trộn đo-hôm-nay + dựng-lại-lịch-sử = false-specificity** (lặp S109). Đĩa đỡ 4/4 thì viết 4/4.
5. **"Fix" bằng đổi format cho khớp-mẫu trượt = rời tập-đo, không phải sửa.**
