[CLAUDE] Docs: S143 closeout — §L.a E-012/AS-16 + vá 4 drift H1 + harvest GATE-PASS-5
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m35s

§L.a RCA:
- E-012 + AS-16 NEW "bằng-chứng-tự-huỷ-sau-squash": outward artifact cite sha
  chưa-push / stamp trước khi git status sạch. Root = tiêu-chí verify chọn theo
  cái MÌNH đo được, không theo cái NGƯỜI NHẬN sẽ đo (cùng lớp E-010).
  Đối chứng: wave trước cite commit đích -> sống hết.

§L.b:
- (c) memory-triple: do exit 0 · de-xuat A7 251/251 · kiem reviewer FAIL 1C/4M/4m/1nit
  · do-record TOTAL 47 + nhip-no 4-vế. sleep-check 4d < 7d -> không INFORM.
- (d)(f) harvest-curator GATE-PASS-5, 5-trục PASS, Fidelity on-behalf PASS STRONG
  0-fabrication, C5 dạng-1 đủ, orphan 0/40, Sàn-5 khớp. Spawn-record 5 sub.
- (g) tooling-auditor DRIFT-FOUND(4) -> vá hết: F-A doc "3-vế" vs script 4-vế
  (7 site prescriptive; giữ 15 file frozen) · F-B ghost-enum HIGH (mở enum 10->11
  mà quên chính vai dùng nó + 2 site số) · F-C lead-model pin chưa ghi sổ
  (thêm dòng Lead row S143; cell canonical để owner quyết) · F-D marketplace.
- (j) H24: class_repeat cập theo 2 vai · last_audit light/deep = 17 · history +S143
  (khai rõ force-fire SỚM 1 nhịp theo lệnh owner, KHÔNG tới-hạn tự-nhiên).
- (k) trio SKIP có vết (cần restart CLI) -> ghi CẢ session-log vì §6.4 reset WAL.

Sửa-một-phía bắt được 4 lần trong phiên (tool-grant · enum · sổ đếm garble · _note
counter) -> bài: đổi một con số thì grep con số đó repo-wide trước khi đóng.

#53: 5/5 sub garble, 0 mất dữ-liệu nhờ ghi-đĩa. Tally ×20 -> ×25, +path-4
lead-on-behalf khi resume không cứu được diary.

Test 528 kế-thừa (0 file src/fe/tests bị đụng, verify bằng diff). Bundle FROZEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-22 14:05:48 +07:00
parent c4903dd041
commit a1e2416f37
20 changed files with 394 additions and 79 deletions

View File

@ -2,7 +2,7 @@
> **Tiering rule (S40):** giữ **2-3 session gần nhất**. Cũ hơn → `docs/changelog/sessions/`. Full brief history pre-S40 → `docs/_archive/HANDOFF-preS40-fullhistory.md`.
**Last updated:** 2026-07-22 (S141S143 — **Wave adap đợt-9/10 ĐÓNG TRỌN (7 thư) + closeout OUTWARD đã push `2757e41`/`3f4310f` — governance-only: 0 prod-code/0 mig, test 528 giữ, bundle FROZEN. Roster 14→17.** S141 vòng-1 `wf_3e1ade40-704` CHẾT giữa chừng → reconcile-từ-ĐĨA + đóng orphan partial-honest 5/13; S142 vòng-2 CẮT-GỌT `wf_1e936b16-30c` 2/2 lane 0-garble land trio `harness-{eval,refine,audit}` + contract-v2 ①a + stamp-decode + annex phép-8 + sweep 13 site; **S143 `/tiep` closeout OUTWARD anh gật**: adap-report 7/7 · email hub `6c94873f72e0` selftest exit 0 · STAGE-2 0-pending cross-check 2 chiều · squash K=8 push 0-`wal:`-lọt (12==12) · vá skill-matrix 15→17 · **+vế-4 `pull-cach`** cho `nhip-no-probe` (fault-inject 7 ca 2 chiều). **Contract v2 chạy runtime LẦN ĐẦU** (tick 16→17, `OK-reachable`). 🔴 **Nấc = `executed-file/verified-pending-restart` — trio CHƯA spawn lần nào.**)
**Last updated:** 2026-07-22 (S141S143 — **Wave adap đợt-9/10 ĐÓNG TRỌN (7 thư) + closeout OUTWARD đã push `2757e41`/`3f4310f` — governance-only: 0 prod-code/0 mig, test 528 giữ, bundle FROZEN. Roster 14→17.** S141 vòng-1 `wf_3e1ade40-704` CHẾT giữa chừng → reconcile-từ-ĐĨA + đóng orphan partial-honest 5/13; S142 vòng-2 CẮT-GỌT `wf_1e936b16-30c` 2/2 lane 0-garble land trio `harness-{eval,refine,audit}` + contract-v2 ①a + stamp-decode + annex phép-8 + sweep 13 site; **S143 `/tiep` closeout OUTWARD anh gật**: adap-report 7/7 · email hub `6c94873f72e0` selftest exit 0 · STAGE-2 0-pending cross-check 2 chiều · squash K=8 push 0-`wal:`-lọt (12==12) · vá skill-matrix 15→17 · **+vế-4 `pull-cach`** cho `nhip-no-probe` (fault-inject 7 ca 2 chiều). **Contract v2 chạy runtime LẦN ĐẦU** — và trong CÙNG phiên chạy **cả 2 nhánh lành**: `OK-reachable` (tick 16→17) rồi `squash-benign` (sau closeout). 🔴 **Nấc = `executed-file/verified-pending-restart` — trio CHƯA spawn lần nào.** **Vòng audit anh gật "làm hết": `reviewer` FAIL 1C/4M/4m/1nit + `lead-view` 3 FLAG + `lead-omission` 3 FLAG/3 INFORM → lead re-đo độc-lập từng cái, vá 9/9.** CRITICAL = **E-012/AS-16 `bằng-chứng-tự-huỷ-sau-squash`**: 7 report + email neo sha `wal:` chưa-push, squash phá đúng sha đó ⇒ re-anchor `2757e41` + **errata `e43484cef10f`** gửi hub. Kèm: "TRIPLE" chọn enum DỄ (2 site liệt-kê-TÊN lọt AC4 grep-theo-SỐ) · `TOTAL 46 "==baseline"` sai (ghi=45, live=47) · 4 site khai "NO Write/Edit" như cơ-chế chặn → sửa (nay có **nhân-chứng first-person**: `reviewer` frontmatter 0 Write/Edit mà **đã Write+Edit thật**; **9 vai** không phải 6). **3/3 sub garble #53** cả 3 resume, 0 mất dữ-liệu nhờ ghi-đĩa (sổ đếm ×20/S118 → **×23/S143**). `flag_classes` **10→11** (+`gap-incident-unrecorded` anh duyệt). Test **528 kế-thừa** (0 file `src/`·`fe-*`·`tests/` bị đụng cả 5 commit — verify bằng diff, KHÔNG khai từ trí-nhớ), bundle FROZEN. 5 commit: `2757e41`·`3f4310f`·`36cefcc`·`39cc060`·`c4903dd`.)
**Carry MỞ re-stamp (14):** (1) carry-age design-question `[carry:carry-age-vacuous]` — vacuous-GỐC đã chết @S140, anh xem đóng? (2) hook-vs-budget-cap — **S143 đo tươi: `investigator-codebase` 26.624B vượt soft-cap** (`l1_over_30kb=false`, chưa chạm trần auto-inject); probe đếm `tran-bo-nho 1 over-cap` `[carry:hook-vs-budget-cap]` (3) UAT S117 incognito `[carry:uat-s117]` (4) PE phân-quyền số-phiếu+user `[carry:pe-phanquyen]` (5) BVAAU `[carry:bvaau]` (6) quyết-định Bình/Lê `[carry:binh-le-decision]` (7) Trà/Bùi re-login `[carry:tra-bui-relogin]` (8) account trùng `[carry:account-trung]` (9) UAT freeze-NS S133 `[carry:uat-s133-budget-freeze]` (10) UAT lũy-kế tạm-tính S134 `[carry:uat-s134-luyke]` (11) 🆕 **tools-whitelist KHÔNG chặn ghi runtime** — 6 vai read-only bị append `Write/Edit`; cơ-chế CHƯA kiểm; đã báo hub §3(b), chờ hub xác nhận + anh quyết có hardening không `[carry:tools-whitelist-no-teeth]` (12) 🆕 **ngưỡng `pull_warn_days`** — vế-4 đang INFORM trần, em CỐ Ý không tự đặt số (quyền anh) `[carry:pull-warn-threshold]` (13) 🔁 **session-model adopt** — draft `docs/governance/session-model-se-draft.md`; (a) hub phát mẫu ✅ + (b) khuôn bộ-ba SUB ✅ **đã mở khoá trong wave này**, chỉ còn **(c) anh duyệt bảng VC-1/2/3**; CẤM wire trước (c) `[carry:session-model-adopt]` — 🔴 **carry này BỊ RƠI khỏi khối S143 bản đầu** (khai 13 trong khi đúng là 14; lead-omission-auditor bắt @S143 class `gap-carry-dropped`), nay trả về (14) chờ-HUB reply: `b9ef5ede` (session-model **5 câu**) + `6c94873f` (báo-nấc wave 9/10) + errata `[carry:hub-review-wave-1807]`. ✅ **ĐÓNG @S143 (1):** `[carry:dangling-head]` — hub APPROVE khuôn ①a (`58e28bae`), SE land contract v2 + chạy runtime 1 lần nhánh `OK-reachable`; 3 ca lịch-sử S127/S133/S139 reclassify đúng `squash-benign`.
**🔴 NEXT anh (đánh số — trả lời bằng số):** (1) ⚑ **trio first-run** — cần anh **restart CLI** rồi gật, em chạy spawn-probe 3/3 TUẦN TỰ (đây là thứ duy nhất chặn nấc lên `verified-runtime`); (2) ⚑ ngưỡng `pull_warn_days` — đặt số hay giữ INFORM trần `[carry:pull-warn-threshold]`; (3) ⚑ tools-whitelist no-teeth — chờ hub xác nhận cơ-chế, anh có muốn em thử hardening (hook chặn sub-write path tracked) không `[carry:tools-whitelist-no-teeth]`; (4) UAT lũy-kế tạm-tính S134 `[carry:uat-s134-luyke]`; (5) UAT freeze-NS S133 `[carry:uat-s133-budget-freeze]`; (6) ⚑ D1 nháp-không-cộng-tiền — gật giữ hay đổi (1 predicate); (7) hook-vs-budget-cap — chốt hướng (S143: inv-cb 26.6K over-cap) `[carry:hook-vs-budget-cap]`; (8) session-model — duyệt bảng VC-1/2/3 `[carry:session-model-adopt]`; (9) close-sweep cụm 7-carry đồng-tuổi S117/S118; **⬇️ 3 mục dưới CHÌM từ `spec:68` suốt S141→S143 (0 hit trên cả 4 bề mặt owner — `gap-decision-sunk` @S143), nay kéo lên:** (10) ⚑ **ratify ranh `refine ⟂ lead-omission`** — 🔴 ranh này **đã wire** vào `harness-refine.md:22-30` TRƯỚC khi được anh/hub ratify; anh gật giữ hay sửa ranh; (11) ⚑ **5 câu session-model** (mới mang 1/5 lên bảng): `session_ctx_kb`=64? · map N↔L + folder-form (`sessions/session-<N>` hub vs `S<nn>` SE) · VC từng dòng · hook 3→4-path? · prereq unblock — 🔴 `session_ctx_kb` **0 hit** mọi bề mặt dù em khai "❌ treo"; (12) ⚑ **consent-form trio dài hạn** — mỗi phiên gật hay thành luật đứng (hub `58e28bae` Câu-3 đá về SE, câu hỏi còn nguyên cho anh).
**NEXT em (phiên kế):** 🔴 **KHÔNG watch `broadcasts/inbox` nữa** — inbox chỉ có thư ĐÃ kéo nên nó mù với thư chưa kéo (đúng lỗi S143); thay bằng **đọc vế-4 `pull-cach` trong dòng-nợ** rồi `/check-email` khi số tăng bất thường. Trio first-run ngay sau anh restart+gật; **H24 deep tới hạn** (S143 đã chạy sớm 1 nhịp theo direction anh — xem kết-quả trong log phiên); monthly combined audit **2026-08-01** (kèm full re-sync measured-block); MFE GOODHART-WARN strikes 21→23 theo dõi; nếu anh đổi D1 → predicate `ComputePendingAsync` + test C3 flip + deploy.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,76 @@
# S143 — 2026-07-22 · `/tiep` nối S142 → closeout OUTWARD → audit 3 lane → vá 9 finding → errata hub
**Nhãn:** S143 (conversation MỚI vào bằng `/tiep`, nhãn mới per label-convention — CẤM reuse S142)
**Lead:** Claude Opus 4.8 · **Loại:** governance-only — **0 prod-code · 0 migration · 0 file `src/`·`fe-*`·`tests/`** (verify bằng `git diff --name-only b146e2b..HEAD`)
**Test:** **528 kế-thừa** (không chạy lại; căn-cứ = 0 file test/prod bị đụng, KHÔNG khai từ trí-nhớ) · **bundle FROZEN** `BVCukFP5`/`DoxyEOxh`
**Commit (5, đã push):** `2757e41` · `3f4310f` · `36cefcc` · `39cc060` · `c4903dd` — tổng **68 file, +3042/89**
## wf run-id (Sàn-5 marker — sổ cái hậu-kiểm)
- `wf: audit-3-lane run=2026-07-22-S143-closeout-audit` — 3 lane (`reviewer` + `lead-view-auditor` + `lead-omission-auditor`), 🔴 **3/3 garble #53, cả 3 resume**, đóng dạng-1 `audit-synthesis.md`.
- *(Kế thừa từ S142, không sinh phiên này: `2026-07-22-S142-adap-9-10-vong-2` · `2026-07-20-S141-adap-dot-9-10-bo-ba-sub`.)*
## memory-triple artifact (§L.b(c) — run-record 3-stage + do-record)
```
memory-triple: do=scripts/measure-agent-memory.ps1 · exit 0
memory-triple: de-xuat=scripts/memory-archive-gate.ps1 DRY · exit 0 · A7 GATE PASS 251/251 pointer resolved, 0 failed
memory-triple: kiem=reviewer · verdict FAIL 1C/4M/4m/1nit (9 finding, lead re-đo độc-lập 9/9, vá hết)
memory-triple: do-record=governance-detectors TOTAL=47 (đỉnh 48 khi WAL chạm 41 dòng → trim → 47)
memory-triple: do-record=nhip-no 4-vế → kiem light 0/6 deep 0/15 ok | tran-bo-nho 1 over-cap | run-chua-gom 0 | pull-cach 2 ngay
```
*(lệnh `/session-end` KHÔNG kèm `eval` ⇒ skip `mfe-eval.ps1` + `memory-selfimprove-audit.ps1` đúng luật; `kiem` lấy từ reviewer-gate đã chạy trong phiên.)*
*(sleep-check: `last_sleep_at` = 2026-07-18, **4 ngày** < ngưỡng 7d KHÔNG INFORM, không đề-xuất `/sleep-recovery-memory-l2`.)*
## trio-memory §L.b(k) — vết SKIP
```
trio: skipped S143 (khong-the-chay: 3 persona harness-{eval,refine,audit} chua tung spawn;
agent .md khong hot-reload => BUOC restart CLI + owner consent. Nac giu executed-file/verified-pending-restart)
```
🔴 **Gap phát hiện khi ghi vết này:** M4 quy-định ghi vết skip vào `.claude/WAL.md`, nhưng **§6.4 reset WAL về template rỗng cuối phiên** vết chết ngay trong phiên sinh ra , không bao giờ tạo được **chuỗi** skip nhìn-thấy-được qua nhiều phiên. **Cùng class với bug-2 của Sàn-5** (soi WAL để tìm dấu vốn được thiết-kế để xoá). vết được ghi **CẢ ở đây** (session-log = append-only, sổ cái). Đề-xuất sửa M4: vết skip session-log, WAL chỉ giữ bản tạm trong phiên.
## Diễn biến
**1. `/tiep` — Sàn-3 + nối mạch.** orphan 0 · non-`wal:` 0 · `closing:` không · wal-commit đụng `runs/` **CÓ** mạch thật. Ground-truth **KHỚP** chain S142; 1 lệch literal hại (verify đếm 8 `README.md` lọt glob, thư thật 7). TICK **16→17**, 3-điều-kiện `OK-reachable`.
**2. Owner gật lượt-1 "OK làm đi" = 6 mục** adap-report 7/7 (5 trường LOCK) · email hub `6c94873f72e0` selftest exit 0 · STAGE-2 7 thư `inbox/ai_infra/` (0 pending, cross-check 2 chiều) · squash K=8 push (0 `wal:` lọt remote, 12==12) · skill-matrix 1517 row · *(mục trio first-run KHÔNG làm được — cần restart CLI)*.
**3. Owner gật lượt-2 "OK làm hết đi" = 4 mục** reviewer-gate độc-lập · re-stamp STATUS/HANDOFF · deep-audit H24 (force-fire **sớm 1 nhịp** 17/18 theo lệnh owner, KHÔNG tới-hạn tự-nhiên) · **+vế-4 `pull-cach`** cho `nhip-no-probe.ps1` (fault-inject **7 ca 2 chiều**; ngưỡng CỐ Ý để trống = quyền owner).
**4. Audit trả về 9 finding — lead re-đo ĐỘC-LẬP từng cái trước khi vá.**
| Vai | Verdict |
|---|---|
| `reviewer` | **FAIL 1C/4M/4m/1nit** + 19 số tự re-đo (15/17 khớp) |
| `lead-view-auditor` | **3 FLAG** cả 3 `view-residual-asym` |
| `lead-omission-auditor` | **3 FLAG / 3 INFORM** + honest-zero |
**5. Vá 9/9 + errata.** Chi tiết nấc `docs/governance/adap-reports/` (7 file) + errata `e43484cef10f`.
## 🔴 Bài học chính
**E-012 / AS-16 `bằng-chứng-tự-huỷ-sau-squash` (CRITICAL).** 7 report + email neo sha `wal:` **chưa push**; closeout `reset --soft HEAD~8` phá đúng những sha đó `is-ancestor <sha> origin/main` = exit 1 cho cả 5 **hub clone về không resolve nổi**, nội dung nguyên vẹn trong `2757e41`.
**Root (5-why):** tiêu-chí verify được chọn theo **cái mình đo được** (máy lead còn reflog `cat-file` xanh), không theo **cái người nhận sẽ đo**. Cùng class E-010.
**Đối chứng chứng minh là CLASS:** wave trước cite `7760cdf`/`da349fc` (commit đích) sống hết. Khác đúng một điểm: **thời-điểm viết report so với thời-điểm push**.
3 luật: cite outward = **commit sống sau squash** · `git status` bước **ĐẦU** outward-gate · tách **claim-DELTA** (bền) khỏi **claim-TUYỆT-ĐỐI** (phải neo commit+thời-điểm).
**"0 hit" sạch.** AC4 của wave grep theo **CON SỐ** (`roster 14|14/14|…`) 0 hit tuyên bố sweep sạch. Nhưng 2 site tự xưng bản gốc về roster (`README:27` "Roster THẬT" · `:225` "VALID_ROLES ĐỦ roster") **liệt kê TÊN, không chứa số nào** lọt nguyên wave, giữ 14 vai. acceptance phải **ĐẾM PHẦN TỬ rồi so canonical**, đừng so hình-dạng chuỗi.
**Tool-grant: whitelist ≠ enforcement — nay có nhân-chứng first-person.** 9 vai read-only (không phải 6 như bản đầu khai) không khai `Write/Edit` trong frontmatter, runtime vẫn cấp (append cuối tool-list). Nhân chứng: **`reviewer` đã Write+Edit thật**. Backstop THẬT = git-diff commit-gate + single-writer.
**#53 lần thứ 3 liên tiếp: prompt KHÔNG chặn được, ghi-đĩa mới cứu.** 3/3 sub garble prompt đã cấm bẫy "trả verdict trước, làm sau" ngay từ đầu cho cả 3. Vớt trọn từ `sub-*.md`. Sổ đếm ×20/S118 **×23/S143**.
**Enum mở đúng luật.** `lead-omission-auditor` gặp sự-cố không xếp được vào enum ĐÓNG, **từ chối tự chế class**, escalate owner duyệt `gap-incident-unrecorded` (1011). Escape-hatch của CLOSED-enum vận hành đúng thiết kế.
**Blanket-replace làm sai NGHĨA (lead tự bắt).** `sed` toàn-file đổi sha an toàn khi mọi lần xuất hiện **cùng vai trò**; một chỗ sha mang vai "commit pause đã dời HEAD" bị đổi thành commit closeout sai nghĩa, không lỗi pháp, chỉ đọc lại mới thấy.
**Citation-trap tái hiện.** Câu *(thay câu "Unpushed lúc ghi"…)* chứa chính literal vừa gỡ detector grep sẽ bắt đúng bản . Chữa bằng **bỏ literal**, không thêm ngoại lệ.
## Trạng thái cuối
- **Còn chặn:** trio first-run spawn-probe 3/3 **cần owner RESTART CLI** + consent. Nấc giữ `executed-file / verified-pending-restart`.
- **Nhịp:** light 3/6 · **deep 14/15** (phiên sau OVERDUE thật) · tràn-bộ-nhớ 1 over-cap (`investigator-codebase` 26.624B) · run-chưa-gom 0 · pull-cách 2 ngày.
- **Carry:** 14 mở (1 đóng: `[carry:dangling-head]`), `NEXT anh` **12 mục** (3 mục mới kéo lên từ chỗ chìm 2 nhãn phiên).

View File

@ -34,6 +34,7 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
| AS-13 | **custom Workflow script (≠ hmw.js DEFAULT-mode)** chạy parallel **same-role** agents giữ Write → agents tự-ghi shared `agent-memory/<role>/MEMORY.md` → "file modified since read" race + verbose-append over-cap | E-009 — hmw.js DEFAULT có return-delta-guard, custom script KHÔNG kế-thừa | RCA + curate L1→L2 + custom workflow PHẢI copy return-delta-guard HOẶC file-disjoint 1-sub/file |
| AS-14 | phép ĐO text (length/char-count/so-sánh) qua `Get-Content`/console-pipe **KHÔNG ép encoding** trên file **no-BOM** (PS5.1 default = ANSI → ký-tự Việt đếm ×2-3) | đo-phải-chạm-đĩa-ĐÚNG-CÁCH (E-010; anh em với bẫy `grep -c``feedback_resume_premise_reverify`) | RCA + re-đo `[System.Text.UTF8Encoding]` tường-minh; số đã báo owner → đính-chính NGAY |
| AS-15 | **điểm-đóng-thật** (chốt-đợt commit+push HOẶC session-end) **KHÔNG kèm** delta diary monitor (H1/H2) **và KHÔNG** dòng counter §L.b(j) | session-end §L.b "(a)→(j) đủ HẾT, KHÔNG skip" (E-011 — nghi-thức chạy tắt; máy mù lớp "nghi-thức có chạy không") | RCA + spawn DỒN H1+H2 re-report phủ khoảng bị bỏ + harvest hồi-tố + đọc counter bù |
| **AS-16** | artifact **OUTWARD** (adap-report · email hub · broadcast) **cite sha CHƯA-push**, HOẶC được **stamp trước khi `git status --porcelain` sạch** | E-012 — closeout-squash phá đúng sha vừa cite ⇒ con-trỏ chết với người ngoài; và file sửa sau khi stamp làm câu trong bản đã-niêm thành sai. **Cite outward = commit SẼ SỐNG sau squash.** `git status` là bước **ĐẦU** của outward-gate, không phải bước cuối | RCA + re-anchor sang commit đã-push + **errata rời** (CẤM sửa file đã stamp — vỡ hash) |
## 🛡️ Active-Guards index (2-strike promote: episodic → procedural)
@ -83,6 +84,15 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
> Format: `E-NNN | date | rule | what | 5-why root | fix (prod-bug = 2-fix: code + guard) | prevention | tags[TYPE/ACTOR/COMPONENT]`
### E-012 — AS-16 bằng-chứng-tự-huỷ-sau-squash: 7 adap-report + 1 email hub neo vào sha `wal:` chưa-push, closeout-squash phá đúng sha đó (S143, reviewer-gate độc-lập bắt SAU khi thư đã gửi)
- **rule (AS-16 NEW):** artifact OUTWARD phải cite **commit SẼ SỐNG sau squash**, và phải qua `git status --porcelain` **TRƯỚC** khi stamp. Vi-phạm nền: `/adap-report` §3 *"evidence: commit-sha · file path · byte/dòng (đo THẬT)"* — đo thật nhưng **neo vào con-trỏ sắp chết**; và `/send-email` 6c selftest-stamp chỉ kiểm **hash khớp thân-thư**, KHÔNG kiểm **thân-thư có còn đúng sự-thật** lúc phát.
- **what:** (1) 7 adap-report cite `1a0fa59`/`a458102`/`96ab2679`/`c3708e9`/`b1d92b9` (đều `wal:`-commit local). Closeout §5.0 `reset --soft HEAD~8` gộp chúng vào `2757e41` ⇒ cả 5 thành **dangling**: `cat-file -t` = `commit` (sống nhờ reflog LOCAL) nhưng `merge-base --is-ancestor <sha> origin/main` = **exit 1** ⇒ hub clone repo về `git show 1a0fa59` = **object missing**. Nội-dung nguyên vẹn trong `2757e41`**chết con-trỏ, không chết việc**. (2) Cùng gốc: report + email khai `is-ancestor 96ab2679 HEAD = exit 0 → OK-reachable` làm bằng-chứng "contract v2 chạy runtime" — squash **cùng phiên** lật nó thành `exit 1`/`SQUASH-BENIGN`**phép đo tự huỷ trong chính phiên phát-biểu nó**. (3) Biến-thể thứ ba: email `:47` khai *"vế pull-age **chưa làm**, chờ owner"* — owner gật ngay sau đó, lead làm, `scripts/nhip-no-probe.ps1` sửa **sau** khi thư đã stamp ⇒ bản đã-niêm khai sai hiện-trạng, và **không sửa được** (sửa = vỡ hash).
- **5-why root:** (1) vì sao sha chết? — squash rewrite history. (2) vì sao squash sau khi cite? — report viết **trước** push, đúng thứ-tự tự-nhiên của việc ("làm xong thì ghi lại"). (3) vì sao thứ-tự đó sai? — vì với artifact OUTWARD, *người đọc ở repo KHÁC*, nên tham-chiếu chỉ có nghĩa nếu nó tồn tại **trên remote**, không phải trên đĩa mình. (4) vì sao không ai bắt lúc viết? — mọi phép verify của lead chạy **trên máy lead**, nơi reflog còn giữ sha ⇒ `cat-file -t` xanh ⇒ **kiểm bằng góc nhìn người-trong-nhà cho một artifact gửi người-ngoài**. (5) 🔴 **root:** *tiêu-chí verify được chọn theo cái mình đo được, không theo cái người nhận sẽ đo.* Cùng class với E-010 (đo bằng công-cụ tiện tay) và với "TRIPLE chọn enum DỄ" cũng bắt trong phiên này.
- **fix (KHÔNG prod-bug — artifact-only, vẫn 2 lớp):** *(a) lớp artifact:* re-anchor toàn bộ 7 report sang `2757e41` + thêm caveat ghi rõ sha cũ chỉ còn giá-trị local; phát **errata rời** `e43484cef10f` cho hub (CẤM sửa bản đã stamp). *(b) lớp luật:* AS-16 + 3 luật đọc-được ghi vào report/errata — **cite outward = commit sống sau squash** · **`git status` là bước ĐẦU của outward-gate** · **tách claim-DELTA (bền) khỏi claim-TUYỆT-ĐỐI (phải neo commit+thời-điểm)**.
- **prevention/guard:** *episodic → chờ strike-2.* Guard đề-xuất khi tái: chèn vào `/send-email` bước 6c một phép **`git status --porcelain` = rỗng** + **`merge-base --is-ancestor <mọi sha cite> origin/main`** trước khi stamp; fail ⇒ ABORT. 🔴 **Chưa wire** — vì guard này cần định-nghĩa "sha cite" (parse thân-thư) và có thể dương-giả với sha của repo KHÁC (hub sha như `58e28bae` KHÔNG nằm trong repo SE). Ghi làm nợ, không tự dựng cổng nửa vời.
- **Đối chứng (chứng đây là class, không phải xui):** wave TRƯỚC (S138S139) cite `7760cdf`/`da349fc` = commit **đích** sau squash → **sống hết tới nay**. Cùng người, cùng nghi-thức, khác đúng một điểm: thời-điểm viết report so với thời-điểm push.
- **tags:** `[GOVERNANCE/lead/outward-artifact · evidence-self-destruct-squash · cite-post-squash-commit · git-status-first · verify-tu-goc-nhin-nguoi-nhan]`
### E-011 — AS-15 nghi-thức chạy tắt: 3 closeout liên-tiếp S128-S130 KHÔNG spawn monitor H1/H2 + bỏ §L.b(j) — máy im suốt, lộ nhờ 1 câu hỏi của anh (S131 phát-hiện, S132 xử)
- **rule (AS-15 NEW):** session-end §L.b (session-end.md:52) *"auto-maintain (a)→(j) đủ HẾT, KHÔNG skip — thiếu = ledger thối"*; (d)(f) = H2 harvest-curator · (g) = H1 tooling-auditor · (j) = đọc counter/OVERDUE. **Điểm-đóng-thật** (chốt-đợt + push) đi qua mà nghi-thức không chạy = closeout chạy tắt, dù phiên kết thúc bằng `/pause` chứ không phải `/session-end`.
- **what:** 3 closeout liên-tiếp — S128 `289ba96` 20:57 · S129 `295c70c` 23:16 · S130 `71757fc` 00:26 — commit + push xong mà KHÔNG spawn H1/H2 (mtime diary 2 monitor đứng 2026-07-16 15:18; commit cuối chạm diary = `e9124fc` 15:19; S130 Recently-Done còn tự ghi *"0 sub spawn"*) + bỏ luôn §L.b(j) — cả lớp ĐỌC counter cuối phiên không chạy. Không detector nào đo lớp "nghi-thức có chạy không" → im lặng trông y hệt sạch; chỉ lộ khi anh hỏi *"sao không thấy lead-view/lead-omission/harvest chạy?"*. Họ-hàng cùng đợt (GAP-1, email `e46863c8`): mạch pause→`/tiep` không tick counter H24 → S128·S129·S130 không tick → counter dưới-đếm ~37% trên cửa-sổ 8 nhãn (5 tick/3 không).

View File

@ -31,7 +31,7 @@ Luật hiện hành: *"mỗi conversation MỚI = một nhãn-phiên `S<nn>` M
| Phase 1 READ full read-set | mỗi `/session-start` | **per-L** (1 lần đầu phiên-logic) |
| Monitor re-report H1/H2 | đầu phiên (skip được) | **per-L** mở + đóng |
| H24 tick counter | mỗi cửa (mỗi S) | **GIỮ per-S** (content-addressed — đo nhịp thật) |
| NHIP-NO probe 3-vế | 4 điểm lệnh | GIỮ per-điểm-dừng (per-S) |
| NHIP-NO probe 4-vế | 4 điểm lệnh | GIỮ per-điểm-dừng (per-S) |
| Sàn-3 WAL-check | mỗi `/tiep` + `/session-start` | GIỮ per-cửa (an toàn nối mạch) |
| governance-detectors + H17 + M.B | mỗi `/session-start` (skip light) | **per-L** mở (giữa phiên chỉ khi nghi drift) |
| Master-checklist 2-tầng | 4 cửa (in @mỗi cửa) | GIỮ per-cửa (rẻ, chống rơi việc) |