[CLAUDE] Docs: S123 citation-trap guard + H24-3 + DUAL-ACCEPT + luat retire-legacy
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m22s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m22s
Anh chot 4 viec governance. Detector 46->45 = DOI THANH-PHAN (-2 duong-gia +1 duong-THAT), khong phai "flag giam". Mark moi RC-pqhuy1987-15-07-2026-17-23-10. - backtick-guard H24-1: discriminator = ENCLOSURE (use vs mention), KHONG port duoc charset-guard cua H24-2 vi vi-du byte-identical voi claim. Helper DUY-NHAT Test-Quoted. Fault-inject 5/5 (2 anti-Goodhart). - H24-3 session-label lag (MED, moi): va am-gia CHUNG-MINH-DUOC cua H24-1 (so NGAY ma ngay = moi nhat => 0 flag trong khi nhan lui 3 phien; tai-phat lan 4). Fault-inject 6/6 + 6/6 sau fix. - DUAL-ACCEPT (dang-3 RETIRED) + LUAT RETIRE LEGACY: go nhanh legacy khi tap di-san RONG, giu khi CON nguoi thu-huong. Repo that 0 orphan/26. Fault-inject 7/7. - tiep.md:66 stale-at-birth + sweep view-residual-asym 6/6 be-mat LUAT sach. Reviewer PASS_WITH_FIXES bat 6 loi that, lead verify 4/4 doc-lap: gen-2 citation-trap (lead viet 30 dong chung-minh dinh-luat roi de H24-3 KHONG guard) - greedy .* lay CUOI khong phai MAX - ly-do retire ap cho dang-2 thi giet C8 - "retire HOAN-THANH mark" = nguy-bien - "5/5" = 4/4. Goodhart DO DUOC (ngoai diff): W4/S122 "va" permission-matrix:16 bang doi FORMAT anchor => khop 0 pattern => H24-1 mat chinh positive-control no dung quanh; flag-count GIAM nen trong nhu thanh-cong. Outward: addendum R5 (DUNG adopt TRI-ACCEPT) + email hub ed3786a10f12 (selftest-stamp MATCH x2). _index reconcile: 2 email S122 gui ma chua log. #53 garble x4/3 agent - harvest-curator ghi diary TRONG luc lam nen vot duoc tu dia ngay; reviewer tu rut luat "ghi diary TRUOC return" tu garble-1 va nho dung no ma garble-2 vot duoc. Prompt-dung KHONG chan duoc #53. Lead sai 4 ca tron o truc dem-ve-minh: "25"!=26 - "5/5"!=4/4 - viet "7/7 PASS" TRUOC khi chay - "0 proxy" sai. State GIU NGUYEN: Mig 66 - 89 bang - 509 test - gotcha 82 - menu 54. Con no: STATUS:6 CO Y chua bump (H24-3 dang FLAG, giu cho hien ra). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
@ -32,6 +32,24 @@
|
||||
|
||||
---
|
||||
|
||||
## ✅ Recently Done (S123 — 2026-07-15)
|
||||
|
||||
**4 việc governance anh chốt + mark MỚI + đính chính hub.** Session-log → [`2026-07-15-S123-citation-trap-dual-accept.md`](changelog/sessions/2026-07-15-S123-citation-trap-dual-accept.md). Mark **`RC-pqhuy1987-15-07-2026-17-23-10`** (Active-High, supersede-partial `…15-32-20` điều-khoản (2)).
|
||||
|
||||
- **Detector 46 → 45 = ĐỔI THÀNH PHẦN, không phải "flag giảm":** **−2 dương-giả** (citation-trap) **+1 dương-THẬT** (`STATUS:6`, trước giờ **H24-1 không thể thấy**). Đo bằng `comm`, `comm -13` rỗng.
|
||||
- 🔴 **Citation-trap = CLASS, lây qua trích-dẫn, 3 đời THẬT trong 1 wave:** `permission-matrix:16` (defect thật) → `lead-view-auditor:45` (trích làm ví-dụ) → `adap-report…h24…:78` (trích **khi đang giải-thích FP đời-2**). Guard = **enclosure (use ⟂ mention)**, KHÔNG phải hình-dạng — helper DUY-NHẤT `Test-Quoted`, mọi matcher prose phải gọi.
|
||||
- 🔴 **Gen-2 xảy ra THẬT ngay trong diff vá nó:** lead viết 30 dòng chứng-minh định-luật rồi **đẻ H24-3 KHÔNG guard**. Reviewer bắt. ⇒ **vá 1 CLASS ⇒ grep MỌI matcher cùng-lớp TRONG diff đó.**
|
||||
- **H24-3 session-label lag (MED, mới):** vá **âm-giả CHỨNG-MINH-ĐƯỢC** của H24-1 (nó so NGÀY, mà ngày = mới nhất ⇒ 0 flag trong khi nhãn lùi 3 phiên; tái-phát **lần 4** S116/S117/S118/S123 — 3 lần trước vá bằng bump số ⇒ quay lại).
|
||||
- **DUAL-ACCEPT (dạng-3 RETIRED)** + 🔴 **LUẬT RETIRE LEGACY (mới, tổng-quát):** *gỡ nhánh legacy khi **tập di-sản RỖNG**; giữ khi **CÒN người thụ-hưởng***. dạng-3 → 0 folder ⇒ gỡ; dạng-2 → 5 folder S71 ⇒ giữ. Repo thật **0 orphan/26** sau retire.
|
||||
- 🔴 **Goodhart ĐO ĐƯỢC (ngoài diff):** W4/S122 "vá" `permission-matrix:16` bằng **đổi FORMAT anchor** ⇒ khớp 0 pattern ⇒ **H24-1 mất chính positive-control nó được dựng quanh**; flag-count GIẢM nên **trông như thành-công** ⇒ *"5 FLAG→0"* của W4 **có phần đạt nhờ một file thoát khỏi thước**.
|
||||
- **Fault-inject 4 bộ 24/24** (5/5 + 6/6 + 7/7 + 6/6-trục-mới). 🔴 **Reviewer bác 3 lập-luận của lead và bác ĐÚNG:** "retire HOÀN-THÀNH mark" = **nguỵ-biện** · "MED vì 0 proxy" = **sai** · "5/5" = **4/4**.
|
||||
- **`_index` reconcile:** 2 email S122 **đã gửi mà chưa log** (0 row cho 07-15 / 3 file trên đĩa) — vá + ghi bài học.
|
||||
- **Email hub `ed3786a10f12`** (selftest-stamp MATCH ×2) + **addendum R5**: 🔴 *đừng adopt TRI-ACCEPT* → thay bằng LUẬT RETIRE LEGACY + 2 cảnh-báo fleet.
|
||||
- ⚠️ **#53 garble ×4 / 3 agent** (tooling ×1 · harvest ×1 · reviewer ×2). **harvest-curator là vai DUY-NHẤT ghi diary TRONG lúc làm ⇒ vớt được từ đĩa ngay**; 2 vai kia phải resume. Reviewer **tự rút luật "ghi diary TRƯỚC return"** từ lần garble đầu và **nhờ đúng luật đó mà lần 2 vớt được** — vòng khép trong 1 phiên. Khớp MED-3 mà H2 bắt sáng cùng ngày (reviewer 5-spawn/0-dòng).
|
||||
- 🔴 **Lead sai 4 ca, TRỌN ở trục đếm-về-mình:** mẫu-số "25"≠**26** (chép narrative, H2 bắt) · "5/5"≠**4/4** (chép số sub) · viết "7/7 PASS" **TRƯỚC khi chạy** · "0 proxy" sai. **Prompt-đúng KHÔNG chặn được #53** (cấm bẫy "return trước" từ prompt đầu cho cả 3, cả 3 vẫn garble) ⇒ chặn được là nhờ **ghi-đĩa-trong-lúc-làm** + **resume**, không nhờ nhắc-nhở.
|
||||
- State GIỮ NGUYÊN: **Mig 66 · 89 bảng · 509 test · gotcha 82 · menu 54 · bundle admin `cFI7ih4a`/user `MxgooVZw`** (governance-only, 0 prod-code).
|
||||
- 🔴 **CÒN NỢ:** `STATUS:6` **CỐ Ý chưa bump** — mega-line **0 hit S122** ⇒ bump = nói dối kiểu khác; fix đúng = **bỏ nhãn phiên (B1 collapse)**, dính carry **re-tier mega-line rơi sổ từ S95** (28 phiên) · 2 vai H24 vẫn **chưa chạy** (nhịp ~S128) · H23 precedence **chờ lead=Fable**.
|
||||
|
||||
## ✅ Recently Done (S122 — 2026-07-15)
|
||||
|
||||
**Wave adap 6 broadcast AI_INFRA — W0→W6 ĐÓNG TRỌN.** Chain `4727d16..2f068c5` (**4 push**, K=0, tree clean). Session-log → [`2026-07-15-S122-adap-6-broadcast-wave.md`](changelog/sessions/2026-07-15-S122-adap-6-broadcast-wave.md).
|
||||
|
||||
@ -0,0 +1,113 @@
|
||||
# S123 (2026-07-15) — Citation-trap guard + H24-3 + DUAL-ACCEPT + luật retire-legacy
|
||||
|
||||
**Lead:** Opus 4.8 (owner-choice, KHÔNG outage — flip-9 tiếp) · **HMW-mode:** ON · **Scope:** governance-only (0 prod-code · 0 mig · 0 FE · test 509 giữ)
|
||||
**Mark MỚI:** `RC-pqhuy1987-15-07-2026-17-23-10` (Active-High · supersede-**partial** `RC-pqhuy1987-15-07-2026-15-32-20` điều-khoản (2))
|
||||
**Spawn:** 🟫 tooling-auditor · ⬜ harvest-curator · 🟥 reviewer (3 vai, **0 workflow** — đúng §0.5 *governance-authoring single-writer → solo*)
|
||||
|
||||
---
|
||||
|
||||
## 1. Bootstrap — ALL-GREEN
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| WAL | ✅ SẠCH — Sàn-3 **4/4 tín-hiệu MẠNH im** (0 orphan · 0 non-`wal:` chưa đẩy · 0 `closing:` treo · 0 `wal:` đụng `runs/`) |
|
||||
| Tests | **509 PASS** (45 Domain + 464 Infra), 0 fail/skip — chạy thật |
|
||||
| Detector | **46** (15 derived-stale + 24 wikilink + 3 vocab-fork + 4 title-stale + 0 carry-age) |
|
||||
| H17 spec-audit | **GAP = none** (A1·A2·A3·B1·B2·HCV) — A1 xác nhận **14 sub-agent** ở tầng tool-scope |
|
||||
| RAG | `proj_solution_erp` **2440 chunks**, `last_indexed 05-29` (stale đã biết) |
|
||||
| H24 counter | TICK **1→2** (content-addressed, HEAD `cefb183`; reachability PASS) · `light 2/6 · deep 2/15 · OVERDUE none` |
|
||||
| Registry-probe §0.6b | **SKIP đúng** — roster không đổi từ S122 |
|
||||
|
||||
**Sleep-check:** `last_sleep 2026-07-10` = 5 ngày < 7 ⇒ skip. **Monthly:** kế 2026-08-01 ⇒ n/a.
|
||||
|
||||
## 2. Bootstrap tự bắt 3 dương-giả cùng MỘT lớp cấu-trúc
|
||||
|
||||
`lead-view-auditor:45` · `adap-report…h24…:78` · `reinject-ledger.md:11,28` — **cả 3 bị bắt vì chúng ĐỊNH-NGHĨA chính cái mẫu đang bị dò.**
|
||||
|
||||
🔴 **Ca `reinject-ledger` suýt thành việc-ma:** `§2.1.7` bảo grep `status=escalated` → grep trả **2** → nhưng cả 2 hit nằm ở **phần định-nghĩa schema** (`:11` luật · `:28` ví-dụ); bảng ledger thật (`:34`) = **RỖNG**. Tin số 2 ⇒ bịa 2 quyết-định không tồn-tại để hỏi anh.
|
||||
|
||||
🔴 **Guard chống bẫy này CHỈ CÓ Ở MỘT CHỖ:** `governance-detectors.ps1:670-673` — H24-2 **cố ý** loại `<` khỏi charset, comment ghi rõ *"a detector that flags the sentence DEFINING its own pattern is the self-reference trap"*. Nhưng **H24-1 trong CÙNG file script không có**, và cổng `reinject-ledger` ở session-start cũng không.
|
||||
|
||||
## 3. Monitor RE-REPORT — cả 2 bắt lỗi THẬT của lead
|
||||
|
||||
**🟫 H1 (ALL-4 PASS · 1 MED · 2 LOW):**
|
||||
- 🔴 **MED — G-015 overclaim ở đúng 2 vai soi-LEAD:** `lead-view-auditor.md:77` + `lead-omission-auditor.md:68` khai *"KHÔNG Write/Edit/commit (mày không có tool đó)"* nhưng `:6` có **`Bash`** ⇒ `git commit` làm được ⇒ **sai với `commit`**. 5 vai anh em CÓ caveat G-015 (`tooling-auditor:55` viết thẳng nguyên-tắc), 2 vai mới **thiếu**. *(Lead verify: `:48` khớp "residual" chỉ vì tên class `view-residual-asym` — grep của lead mới là cái ẩu.)*
|
||||
- **15/15 derived-stale = FALSE-POSITIVE** (ratio-band làm đúng) ⇒ **đừng vá**.
|
||||
- **+1 delta 45→46 giải-thích xong:** 45 đo tại **W4 `a09dcae`**, không phải lúc đóng phiên; adap-report H24 land ở `6dcd457` (W6) bị bắt vì **trích lại ví-dụ về dương-giả**.
|
||||
|
||||
**⬜ H2 (MOSTLY-CLEAN · 0 data-loss/0 orphan/0 corruption · 1 coverage-gap + 2 placement):**
|
||||
- 🔴 **Bắt lỗi lead: mẫu-số "25" ≠ 26.** *"**Mẫu-số có NGÀY-ĐO** — hỏi 'đếm LÚC NÀO' trước khi so. **Verdict khớp ≠ mẫu-số khớp**"*. Gốc: 25 đóng băng @`48e0d26`@11:48; `22ea8c5`@14:28 — **chính việc đo** — đẻ thêm folder ⇒ mẫu-số tự lỗi-thời. Lead đo lại: **28 folder, 26 có `run.md`**.
|
||||
- 🔴 **dạng-3 = DEAD CODE** — bỏ nó ⇒ **0 folder** thành orphan (6 folder embedded đều đã có flat).
|
||||
- 🔴 **`tiep.md:66` STALE-AT-BIRTH** — khai `pe-negative-quote` *"chưa xử"* mà `22ea8c5`@14:28 đã xử, còn câu đó viết @`dfa3dae`@**14:48 = SAU 20 phút**.
|
||||
- **MED-3:** reviewer chạy **5 spawn** ở wave S119/S122 mà ghi **0 dòng** diary. *(→ trả giá THẬT vài giờ sau, xem §6.)*
|
||||
- **3 dir RỖNG git mù:** 2 vai H24 **chưa seed diary** + **1 stray mis-land** `runs/…S119…/.claude/agent-memory/reviewer` (lớp S54).
|
||||
|
||||
## 4. Bốn việc anh chốt — thực-thi + đo
|
||||
|
||||
### (1) Backtick-guard cho H24-1
|
||||
**Discriminator = ENCLOSURE, không phải hình-dạng.** Anchor trong `` `…` `` = đang **được NHẮC TỚI** (mention), không phải **được TUYÊN BỐ** (use). Đếm backtick trái match; **LẺ ⇒ skip**.
|
||||
🔴 **KHÔNG port được cơ-chế H24-2:** guard `[carry:<slug>]` ăn nhờ ký-tự `<` mà key thật không bao giờ có. Ở anchor thì **ví-dụ byte-identical với claim** — *giống hệt CHÍNH LÀ điểm của ví-dụ tốt* ⇒ phải đổi TRỤC.
|
||||
**Từ chối chồng head-N-lines** (dù cũng 5/5): vị-trí = **proxy**; backtick đã tách đúng cùng tập ⇒ chồng proxy = 0 lợi + đẻ điểm mù mới. Viện mark `RC-…10-29-11`.
|
||||
**Fault-inject 5/5** — 2 anti-Goodhart: quoted-rồi-bare **cùng dòng** → FLAG anchor thật `2026-02-02` (chứng `Matches` ≠ `Match`) · backtick **CHẴN** → FLAG (chứng odd/even ≠ "có backtick thì bỏ").
|
||||
|
||||
### (2) Detector MỚI H24-3 session-label lag (MED)
|
||||
So `(S<N>` ở `**Last updated**` với **MAX** `(S<M>` ở heading, **cùng file**. Bắt `STATUS:6` = **âm-giả CHỨNG-MINH-ĐƯỢC** của H24-1 (nó so NGÀY, mà `2026-07-15` = mới nhất ⇒ 0 flag; đo: S119 ×3 hit, S120/S121/S122 = **0 hit**). **Tái-phát lần 4** (S116/S117/S118) — 3 lần trước vá bằng **bump số** ⇒ quay lại.
|
||||
**Fault-inject 6/6** — anti-Goodhart: **MAX không đứng đầu/cuối** (S110·S122·S117) → lấy đúng S122; 2 bản cài sai *"lấy đầu"*/*"lấy cuối"* **đều PASS trên repo thật** vì ở đó MAX tình cờ đứng đầu.
|
||||
|
||||
### (3) Retire dạng-3 → DUAL-ACCEPT
|
||||
**Đo trước khi gỡ (2 phép độc-lập, khớp):** 0 folder thành orphan; 6 folder từng dựa đều có flat sau `22ea8c5`. **Fault-inject 7/7** gồm ca chốt `## Synthesis`-no-flat: **S122 IM → S123 FLAG** = hiệu-lực retire. Repo thật **0 orphan/26**.
|
||||
|
||||
### (4) `tiep.md:66` + chú-thích mark
|
||||
Giữ lập-luận (dạng-4 = kẽ CÒN LẠI **vẫn đúng**), gỡ literal đã chết. Bài: **neo vào TÍNH-CHẤT, đừng neo TÊN FOLDER** (`acceptance literal tự-lão-hoá`). Thân mark **0 chữ bị sửa** (P4/P8).
|
||||
|
||||
**🔴 Sweep `view-residual-asym` (lead suýt tự đẻ đúng lỗi đang vá):** đổi thân `tiep.md` sang DUAL-ACCEPT xong thì **frontmatter vẫn ghi TRI-ACCEPT**, và `workflows/README.md:21` còn nói *"nhận **BA dạng, KHÔNG phải hai**"* — sau thay đổi thì thành **hai**, mà doc đang nhấn mạnh *không phải hai*. Sửa **6 bề-mặt LUẬT** (`tiep.md` frontmatter+`:31`+§0 · `workflows/README` · `session-end` ×5 · `session-start:79`); **đóng băng CÓ CHỦ-ĐÍCH** (lịch-sử, đúng tại thời-điểm ghi): `runs/**` · session-log S122 · adap-report · broadcast đã gửi · narrative STATUS/HANDOFF.
|
||||
|
||||
## 5. 🟥 Reviewer PASS_WITH_FIXES — tìm ra 6 lỗi thật, lead verify 4/4 độc-lập
|
||||
|
||||
| # | Finding | Lead verify |
|
||||
|---|---|---|
|
||||
| **1** | 🔴 **H24-3 lặp ĐÚNG bẫy mà cùng diff vừa vá (gen-2)** — trigger canonical = **chính adap-report S123 mô-tả H24-3** | ✅ |
|
||||
| **2** | 🔴 **greedy `.*` lấy `(S<N>` CUỐI ≠ MAX** — `## Tong hop (S122…) va lich su (S110…)` → **S110** | ✅ đo thật |
|
||||
| **3** | 🔴 **MAJOR — lý-do retire áp cho dạng-2 thì GIẾT C8** (5 folder S71 thành orphan ⇒ ép rewrite history mà C8 cấm) | ✅ |
|
||||
| **4** | 🔴 **"retire HOÀN-THÀNH mark" = NGUỴ-BIỆN** — điều-khoản (2) **cố ý tách** lưới-rộng ⟂ luật-hẹp; retire **thu lưới bằng luật** = biến nhận **=** cho-phép = **NGƯỢC** | ✅ rút lại |
|
||||
| **5** | 🔴 **"5/5" = 4/4** — `permission-matrix:16` **không còn fire** (anchor đổi format, khớp 0 pattern) | ✅ `pattern1=False pattern2=False` |
|
||||
| **6** | `node_modules/*.md` (30 file) nằm trong `$GovMd` — cùng lớp hiểm-hoạ lead tự ghi ở `:495-503` | ✅ vá |
|
||||
|
||||
**✅ Chống được soi:** 46→45 tái-hiện · fenced **"0 ca" ĐÚNG** (383 file, 6 anchor, 0 in-fence) · `Matches`-not-`Match` **cần thật** · retire 0-orphan/26/5-dạng-2 **khớp từng số** · **7/7 fault-inject TỰ tái-hiện** · **Q8 ENDORSE không-bump**.
|
||||
|
||||
**🔴 LUẬT retire (phát-biểu ĐÚNG, thay bản sai):** *gỡ nhánh legacy khi **tập di-sản RỖNG**; giữ khi **CÒN người thụ-hưởng**. Miễn-trừ C8 hết hiệu-lực đúng lúc hết di-sản để tha.*
|
||||
|
||||
**Fault-inject 2 trục reviewer chỉ ra CHƯA HỀ THỬ: 6/6** — quoted-label→IM (gen-2 fix) · 2-số-cùng-dòng→MAX cả 2 chiều · heading trích `` `(S999)` ``→bỏ qua (guard phải ở **CẢ HAI phía**, không chỉ label).
|
||||
|
||||
## 6. #53 garble ×4 / 3 agent — và bài học nó dạy
|
||||
|
||||
| Agent | tool_uses | Đĩa cứu? |
|
||||
|---|---|---|
|
||||
| 🟫 tooling-auditor | 31 / 112K | ❌ → **resume** ✅ |
|
||||
| ⬜ harvest-curator | 29 / 120K | ✅ **diary có 2 bài học S123** → đọc thẳng đĩa |
|
||||
| 🟥 reviewer ×2 | 29/140K → 54/208K | ❌ lần 1 → **resume** → ✅ lần 2 **vớt được từ đĩa** |
|
||||
|
||||
🔴 **Vòng khép trong 1 phiên:** reviewer **tự rút luật *"ghi diary TRƯỚC return"*** từ lần garble đầu, tự áp, và **nhờ đúng luật đó mà lần garble thứ 2 vớt được**. Nó tự ghi: *"#53 garble ×1 ở CHÍNH TAO; đĩa KHÔNG cứu được vì chưa ghi diary ⇒ **H2 MED-3 trả giá THẬT**"* — đúng cái finding H2 bắt sáng cùng ngày.
|
||||
|
||||
🔴 **Prompt-đúng KHÔNG chặn được #53:** lead cấm bẫy *"return trước, làm sau"* ngay từ prompt đầu cho **cả 3**, **cả 3 vẫn garble**. Chặn được là nhờ **ghi-đĩa-trong-lúc-làm** + **resume in-session** — không nhờ nhắc-nhở.
|
||||
🔸 `git status` **không có file lạ nào** từ 3 sub ⇒ containment G-015 giữ (chúng đề-xuất, lead single-writer).
|
||||
|
||||
## 7. 🔴 Lead sai 4 ca — TRỌN ở trục đếm-về-mình
|
||||
|
||||
1. **"0 orphan / 25 run"** — thật **26**; chép từ narrative STATUS, không đo. Verdict đúng (vòng lặp quét đĩa) nhưng **mẫu-số bịa**. H2 bắt.
|
||||
2. **"5/5 separation"** viết vào code-comment — đĩa đỡ **4/4**; **chép số của sub**, không kiểm ca-5. Reviewer bắt.
|
||||
3. **"7/7 PASS"** viết vào doc **TRƯỚC khi chạy** fault-inject. Chạy sau thì đúng — nhưng *"thiết-kế để pass" ≠ "đã verify pass"*. Lead tự bắt trước commit.
|
||||
4. **"MED vì 0 proxy"** — sai; `$labelN` = hit-regex-ĐẦU = **chính là proxy**. Reviewer bắt.
|
||||
|
||||
⇒ Khớp `feedback_meta_count_selfcoverage_blindspot`: **lead ĐO tốt, ĐẾM-VỀ-MÌNH thì sai**. File đó **tự nạp vào context đầu phiên** mà lead **vẫn mắc ngay ở báo cáo đầu tiên** ⇒ củng cố: **bài-học nằm-trong-context KHÔNG tự bật; chặn được = LUẬT soi-được**.
|
||||
|
||||
## 8. Outward — đính chính hub
|
||||
|
||||
- **Addendum R5** (thân §1–§5 giữ **0 chữ**, audit-trail): 🔴 *"ĐỪNG adopt TRI-ACCEPT"* — SE đã retire dạng-3; **TRI-ACCEPT là trạng-thái QUÁ-ĐỘ, không phải đích** (SE chạy ~1 ngày rồi gỡ). Thay bằng **LUẬT RETIRE LEGACY**. + 2 cảnh-báo fleet (citation-trap 3 đời · **Goodhart rời-tập-đo**) + 2 bài phương-pháp (*"trục nào KHÔNG có ca nào?"* · *"áp luật cho nhánh anh em — vỡ thì LUẬT sai"*) + **dự-báo falsifiable** để hub kiểm chéo.
|
||||
- **Email `ed3786a10f12`** (`type: fix` · `category: Governance`) — **selftest-stamp MATCH ×2** (re-stamp sau khi sửa frontmatter: body-hash không đổi, đúng thiết-kế canonical). `to = ai_infra` ⇒ **không cần infra-CC** (bước 6b chỉ khi `to ≠ ai_infra`).
|
||||
- 🔴 **`_index` reconcile — gap thật:** `outbox/ai_infra/` có **3 file 07-15** mà `_index` **0 row** ⇒ **2 email S122 đã gửi mà chưa log** (S122 chạy tới 6c rồi bỏ bước 7). Hash lấy **từ frontmatter trên đĩa**, không tính lại. **Bài: `_index` là sổ hub/audit đọc — gửi mà không log = hub không biết có nó; bước 7 phải cùng lượt với 6c.**
|
||||
|
||||
## 9. Còn nợ (khai thẳng)
|
||||
|
||||
- 🔴 **`STATUS:6` CỐ Ý chưa bump — H24-3 đang FLAG, GIỮ cho hiện ra.** Bump = **nói dối kiểu khác** (mega-line **0 hit S122**). Fix đúng = **bỏ nhãn phiên (B1 collapse)** — dính carry **re-tier mega-line rơi sổ từ S95** (28 phiên, **không có tag** nên carry-age vĩnh-viễn không thấy). Nó cũng là thứ làm **lead không đọc nổi HANDOFF** (`:5` = 55.447 ch > cap Read 25K/call) ⇒ lead phải grep mò suốt phiên.
|
||||
- 2 vai H24 **chưa chạy lần nào** (nhịp ~S128) · **H23 precedence CHỜ lead=Fable** (lead=Opus không phân-biệt được) · **dạng-4 orphan = kẽ CÒN LẠI** · 3 dir rỗng git-mù (2 vai H24 chưa seed + 1 stray S54).
|
||||
@ -82,3 +82,73 @@ Commit `8fa2fcc` có message khoe *"close-review run.md synthesis [H2 gate]"*
|
||||
2. **Lead báo:** *"`fable-real-runbook.md` **8 hit**"* — thật là **14**; lấy output `head -40` **đã bị cắt** làm số tổng.
|
||||
|
||||
⇒ cả hai ở **trục đếm-về-việc-mình**. Sub thì 6/6 lane neo SHA thật, **0 garble**. Khác biệt: **sub bị ép neo từng claim vào `file:line`; lead thì tự do viết văn.** Ghi vào đây vì đó là **dữ-liệu về quy-trình**, không phải lời xin lỗi.
|
||||
|
||||
---
|
||||
|
||||
# 🔺 ADDENDUM S123 (2026-07-15) — ĐÍNH CHÍNH: §3.1 ĐÃ SAI. **ĐỪNG adopt TRI-ACCEPT.**
|
||||
|
||||
- **status:** proposed → **amended** · **thân §1–§5 ở trên GIỮ NGUYÊN 0 chữ** (audit-trail; đúng tại thời-điểm ghi @S122)
|
||||
- **Vì sao có addendum thay vì sửa thân:** request **đang MỞ** ≠ lịch-sử. Bản đã gửi qua `broadcasts/outbox/` thì đóng băng; nhưng để nguyên §3.1 mà không đính chính = **hub adopt đúng cái SE vừa gỡ**.
|
||||
|
||||
## A. 🔴 Đính chính điều SAI
|
||||
|
||||
**§3.1 viết:** *"**TRI-ACCEPT** (dạng-1 + dạng-2 + dạng-3) là bản vá SE **đang chạy**"* + §3.2 xin hub adopt.
|
||||
**SAI kể từ S123.** SE đã **RETIRE dạng-3**; sàn hiện-hành = **DUAL-ACCEPT** (dạng-1 + dạng-2). Mark `RC-pqhuy1987-15-07-2026-17-23-10` (Active-High, anh chốt S123).
|
||||
⇒ **Hub adopt tri-accept = nhập-khẩu đúng nhánh SE gỡ vì nguy-hiểm.**
|
||||
|
||||
**Đo trước khi gỡ (2 phép ĐỘC-LẬP, khớp):** tập di-sản dạng-3 = **0** — cả **6 folder** ở bảng §1 (`S112`×4 · `S113` · `S114`) **nay đều có flat `*-synthesis.md`** sau chính `22ea8c5` mà §4 khoe. **Bỏ nhánh dạng-3 ⇒ 0 folder thành orphan.** Repo thật sau retire: **0 orphan / 26 run**.
|
||||
🔸 **Dạng-2 (C8) GIỮ** — tập di-sản = **5 folder S71**, chưa rỗng.
|
||||
|
||||
## B. ✅ Điều nên adopt THAY THẾ — 🔴 **LUẬT RETIRE LEGACY** (tổng-quát, đề-nghị vào KHUNG)
|
||||
|
||||
> **Gỡ một nhánh legacy khi tập di-sản của nó RỖNG; giữ khi CÒN người thụ-hưởng.**
|
||||
> **Miễn-trừ kiểu-C8 (*tha di-sản, cấm viết mới*) hết hiệu-lực ĐÚNG LÚC hết di-sản để tha — không sớm hơn, không muộn hơn.**
|
||||
|
||||
⇒ **TRI-ACCEPT là TRẠNG-THÁI QUÁ-ĐỘ, không phải đích.** SE chạy nó **~1 ngày** rồi gỡ khi di-sản cạn. Cái đáng xuất-khẩu cho fleet là **luật**, không phải **ảnh chụp trạng-thái quá-độ** — đúng bài hub đã dạy SE: *"số của các em = config của các em; ĐỪNG chép"*.
|
||||
|
||||
🔴 **§3.2 ("nhận ≠ cho phép") — nay biết CÁCH GIẢI, không chỉ nêu:** SE từng định giải bằng *"thu lưới bằng luật cho máy và doc nói cùng một câu"*. **Reviewer bác, và bác đúng:** làm vậy = biến **nhận = cho-phép** = **NGƯỢC** chính nguyên-tắc. Lời giải đúng là **luật retire ở trên** — nhận **trong khi** còn di-sản, gỡ **khi** hết. Căng-thẳng nhận⟂cho-phép **tự tan** khi tập di-sản rỗng, **không cần** ai nhớ để NÊU.
|
||||
|
||||
## C. 🔴 Cảnh-báo FLEET — nguy hơn cả R5 gốc, đo được, **ngoài phạm-vi đề-bài**
|
||||
|
||||
### C1. Dương-giả **TỰ LÂY QUA TRÍCH-DẪN** — 3 đời THẬT trong 1 wave
|
||||
| đời | file | |
|
||||
|---|---|---|
|
||||
| 1 | `permission-matrix/SKILL.md:16` | defect **THẬT** (vá W4/S122) |
|
||||
| 2 | `.claude/agents/lead-view-auditor.md:45` | **trích làm ví-dụ** cho class của chính nó → **FP** |
|
||||
| 3 | `adap-reports/2026-07-14-…harness-24….md:78` | **trích khi đang GIẢI-THÍCH FP đời-2** → **FP** |
|
||||
|
||||
⇒ **Mọi doc viết VỀ một dương-giả tự trở thành dương-giả.** **Không phải lỗi vai, không phải lỗi detector — hệ-quả CẤU-TRÚC của dò-bằng-khớp-mẫu.**
|
||||
**Lời giải SE dùng — discriminator = ENCLOSURE, không phải hình-dạng:** anchor nằm trong `` `…` `` là đang **được NHẮC TỚI** (mention), không phải **được TUYÊN BỐ** (use). Đếm backtick bên trái match; **LẺ ⇒ bỏ qua**. Đo **4/4** trên đĩa. Helper **DUY-NHẤT** `Test-Quoted`, mọi matcher prose PHẢI gọi.
|
||||
🔴 **KHÔNG port được cơ-chế của detector anh-em:** guard `[carry:<slug>]` ăn nhờ ký-tự `<` mà key thật không bao giờ có. Ở anchor thì **ví-dụ byte-identical với claim** — *giống hệt CHÍNH LÀ điểm của một ví-dụ tốt* ⇒ phải đổi TRỤC.
|
||||
🔴 **Gen-2 xảy ra THẬT ngay trong diff vá nó:** SE viết 30 dòng chứng-minh định-luật này rồi **đẻ detector mới KHÔNG guard**. Reviewer bắt. ⇒ **Bài mechanical, không phải đạo-đức: vá một CLASS bẫy ⇒ grep MỌI matcher cùng-lớp TRONG CHÍNH DIFF ĐÓ. Bài-học nằm-trong-context KHÔNG tự bật.**
|
||||
|
||||
### C2. 🔴 **Goodhart đo được: "vá" bằng cách RỜI TẬP-ĐO — và flag-count GIẢM nên trông như thành-công**
|
||||
W4/S122 "vá" `permission-matrix:16` bằng **đổi FORMAT anchor** (`**Status (post Session 6 — …):**` → `**Status (cập-nhật …):**`) thay vì refresh ngày ⇒ khớp **0 pattern** ⇒ **không fire, không cả parse** ⇒ **detector MẤT ĐÚNG positive-control nó được dựng quanh** (pattern#2 sinh ra **CHÍNH VÌ** file này).
|
||||
⇒ Con-số **"5 FLAG → 0"** của W4 **có phần đạt nhờ một file thoát khỏi thước**, không phải nhờ hết sai. **Không ai thấy, vì số giảm.**
|
||||
**Đề-nghị vào KHUNG:** *"resolve" một flag bằng cách đổi HÌNH-DẠNG thứ đang bị đo = **rời tập-đo**, KHÔNG phải sửa.* Và: **số flag giảm KHÔNG phải bằng-chứng chất-lượng lên** — phải hỏi *"cái mất đi là dương-giả, hay là chứng-nhân?"*
|
||||
|
||||
### C3. **"N/N fault-inject PASS" chỉ chứng các trục ĐÃ CHẠM**
|
||||
SE báo **6/6 PASS** cho H24-3 — reviewer vẫn tìm ra **2 bug thật**, vì cả 6 ca **chưa hề chạm** 2 trục: (a) doc **trích label người khác** (b) heading có **2 số cùng dòng** (greedy `.*` lấy **CUỐI** ≠ **MAX**). Thử lại 2 trục đó: **6/6**, cả 2 bug lộ ngay.
|
||||
**Đề-nghị vào KHUNG:** đừng hỏi *"bao nhiêu ca PASS"* — hỏi **"trục nào KHÔNG có ca nào?"**
|
||||
|
||||
### C4. **Phép thử đối-xứng cho mọi luật vừa viết**
|
||||
SE viết lý-do retire là *"doc cấm mà máy vẫn nhận ⇒ gỡ"*. Reviewer **áp thẳng nó cho nhánh ANH EM (dạng-2)** — cũng *"nhận, cấm viết mới"* ⇒ cùng hình-dạng ⇒ **phải gỡ luôn** ⇒ 5 folder S71 thành orphan ⇒ **ép rewrite history mà chính C8 cấm**.
|
||||
**Đề-nghị vào KHUNG:** **áp luật vừa viết cho nhánh anh-em. Vỡ ⇒ LUẬT sai, không phải nhánh sai.** (Lý-do viết ra ≠ lý-do thật đang vận-hành — SE **đo đúng nhưng viết sai**.)
|
||||
|
||||
## D. 📌 Dự-báo FALSIFIABLE cho hub kiểm chéo
|
||||
|
||||
Nếu hub **cũng** có doc trích-dẫn anchor-pattern của chính mình, hub sẽ thấy: **thêm 1 doc giải-thích FP ⇒ +1 FP**. SE dự-báo được trước và trúng (`45→46` khi adap-report H24 land ở `6dcd457`). **Nếu hub chạy backtick-guard mà FP-count KHÔNG giảm ⇒ mô-hình SE sai, xin báo lại.**
|
||||
|
||||
## E. §2 bảng "ĐÃ verify" — 2 dòng nay lỗi-thời
|
||||
|
||||
| Điều | @S122 | @S123 |
|
||||
|---|---|---|
|
||||
| Dạng-3 nhận bằng máy — fault-inject **9/9** | ✅ | 🧊 **hết nghĩa** — nhánh đã gỡ. **9/9 vẫn đúng với bản S122**; bản S123 = **7/7** (ca chốt: `## Synthesis`-no-flat **S122 IM → S123 FLAG**) |
|
||||
| Dạng-4 = kẽ CÒN LẠI | ✅ | ✅ **VẪN ĐÚNG** — nhưng **ví-dụ `pe-negative-quote` ĐÃ CHẾT**: `22ea8c5`@14:28 biến nó thành dạng-1, mà §1 viết @`dfa3dae`@**14:48 = SAU 20 phút** ⇒ **stale-at-birth**. **Lập-luận giữ, literal gỡ.** Bài: **neo vào TÍNH-CHẤT, đừng neo TÊN FOLDER** (`acceptance literal tự-lão-hoá`) |
|
||||
|
||||
## F. §5 "lead tự bắt" — S123 bồi thêm **2 ca cùng trục**, xin ghi tiếp
|
||||
|
||||
3. **Lead báo *"0 orphan / **25** run"*** — thật **26**. Số 25 **chép từ narrative STATUS**, không đo. Verdict (0 orphan) đúng vì vòng lặp quét đĩa; **mẫu-số thì bịa**. H2 bắt: *"**mẫu-số có NGÀY-ĐO** — hỏi 'đếm LÚC NÀO' trước khi so. **Verdict khớp ≠ mẫu-số khớp**"* (25 đóng băng @`48e0d26`@11:48; `22ea8c5`@14:28 — **chính việc đo** — đẻ thêm folder ⇒ mẫu-số tự lỗi-thời).
|
||||
4. **Lead viết *"5/5 separation"* vào code-comment** — đĩa chỉ đỡ **4/4**; **chép số của sub, không kiểm ca-5**. Reviewer bắt.
|
||||
|
||||
⇒ **4/4 ca ở trục đếm-về-việc-mình.** Củng-cố kết-luận §5: *sub bị ép neo từng claim vào `file:line`; lead tự do viết văn.* 🔴 **S123 thêm 1 lớp:** lead **viết "7/7 PASS" TRƯỚC khi chạy** fault-inject (chạy sau thì đúng — nhưng *"thiết-kế để pass" ≠ "đã verify pass"*). ⇒ **cơ-chế, không phải kỷ-luật:** chỉ có **ép-neo** mới chặn, **nhắc-nhở thì không**.
|
||||
|
||||
Reference in New Issue
Block a user