# _mind-s-8 — SESSION-MODEL lớp MỀM (trí-nhớ suy-nghĩ 4 tầng)

<!-- SCAFFOLD-META: sID=8 | ts-moc=2026-07-28T20:57:15+07:00 | nguon-ts=git log -1 --format=%cI @ HEAD bbc39be | render=lead Write @session-start Phase 3.5 (session-scaffold.ps1 KHONG render tep nay) -->

<!-- MIND-RULES-START -->

> **sID (LOGIC-session) = 8.** Tệp này giữ 4 thứ KHÔNG nằm ở WAL / HANDOFF / `_context`: **(A)** gói-turn · **(B)** hướng-tiếp · **(C)** kế-hoạch delta-suy-nghĩ · **(D)** đang-thảo-luận (+ **(E)** dòng-sống spawn). Nhà: `.claude/sessions/session-8/_mind-s-8.md`.
> ts-mốc khởi-tạo = **2026-07-28T20:57:15+07:00** (nguồn: `git log -1 --format=%cI @ HEAD bbc39be`) — mốc git-committer, KHÔNG phải wall-clock tuỳ-tiện.
>
> **GHI = lead (single-writer)** @4 nhịp: block-0 cuối bootstrap · refresh @`/pause` · đọc + đối-chiếu @`/tiep` · mục E gom MỌI spawn/engine-run. **KIỂM = máy + vai** (tách khỏi ghi): `python scripts/session_ctx.py mind-check --session 8` mỗi cửa (~$0) + vai `ctx-audit` @2 bookend (INFORM-only, quyền phán TRƯỢT).
> **Trần tệp** = khoá `mind_ctx_kb` trong `.claude/agent-memory/memory-budget.json` — **B1: trỏ khoá, CẤM chép số vào tệp này.**

### 🔴 CHIỀU CHÈN — NGƯỢC với `_context` (đọc trước khi chèn block đầu tiên)

- **`_mind` = MỚI-NHẤT-Ở-TRÊN.** Block mới chèn NGAY DƯỚI **dòng marker điểm-chèn** (dòng comment nằm ngay trên block top, dưới khối luật này).
- **3 dòng comment marker của tệp** (mở khối luật · đóng khối luật · điểm-chèn) xuất hiện **ĐÚNG 1 LẦN** mỗi cái. Vì vậy phần chữ ở dưới CHỈ gọi chúng bằng **mô-tả**, KHÔNG viết lại tên marker — máy/người tìm-chuỗi sẽ không bắt nhầm anchor rồi chèn vào giữa khối luật. Máy khớp anchor bằng **token** trên dòng bắt đầu `<!--` (KHÔNG kèm `-->`, vì marker có chú-thích viết cùng dòng — mirror `FLOW-START` của `session-context-template.md`).
- **`_context` FLOW = MỚI-NHẤT-Ở-CUỐI** (`.claude/templates/session-context-template.md`, dòng `FLOW-START`). **HAI TỆP NGƯỢC CHIỀU NHAU** — CẤM "adopt verbatim" khuôn bên kia sang đây. Lý-do: `_mind` đọc để **nạp lại trạng-thái** ⇒ thứ mới nhất phải ở màn hình đầu; `_context` là **biên-niên-sử durable** ⇒ đọc xuôi thời-gian.
- **Số hiệu = ĐẾM số block hiện có TRƯỚC KHI chèn** (block-0 chiếm số 0 ⇒ đang có n block thì block mới là `MIND-n`). Máy chỉ đòi *số duy-nhất* + *block top ≥ mọi số dưới* — KHÔNG neo công-thức đếm, nhà đổi công-thức vẫn kiểm được.
- **Block cũ BẤT BIẾN** (append-only, không rewrite / không tự-tóm). **Ngoại lệ DUY NHẤT**: nén khi vượt trần — nén block CŨ NHẤT **trừ block-0 và block top**, verbatim vẫn còn trong git; **<3 block ⇒ TỪ-CHỐI nén**, giương cờ vượt trần (nợ hiển thị, không xoá chứng-nhân).
- **Việc ĐÃ-CHỐT ⇒ chỉ con-trỏ** (`.claude/WAL.md` · `docs/HANDOFF.md` · `.claude/workflows/runs/<id>/…`) — **CẤM chép nội-dung** (2-sự-thật + phình trần).
- **Mục trống ⇒ ghi đúng chuỗi `(trống — khai)`** trên 1 dòng riêng, KHÔNG thêm chữ, KHÔNG bọc dấu nhấn (máy so chuỗi). CẤM bỏ heading — vắng-mặt trông giống ổn.
- **5 heading trong mỗi block = `### A.` … `### E.`** (thứ tự A→E cố định) — đây là hợp-đồng hình-dạng cho máy `mind-check` và vai `ctx-audit`.
- **Mục D: mỗi ý 1 dòng + BẮT BUỘC nhãn**, viết **đúng chuỗi CÓ DẤU**: `{mới-nêu | đang-cãi | gần-chốt | treo-chờ-anh}`. Máy so chuỗi ⇒ viết không dấu = **trượt-cấu-trúc**. (Phần chữ hướng-dẫn trong khối luật này theo khuôn nhà có thể không dấu, nhưng **token máy đọc thì giữ dấu** — đừng chép ngược.)

### 3 RÀO NỘI-DUNG (máy `mind-check` phép 1-3 — mỗi rào kèm LÝ-DO ĐO ĐƯỢC)

1. **Rào-1 — CẤM verbatim lời anh.** Dạng bị bắt = dòng blockquote mở đầu bằng `anh` + hai chấm, ví-dụ:
   > anh: <lời anh nguyên-văn — dòng NÀY hợp-lệ vì nằm TRONG khối luật, xem mục enclosure>

   *Lý-do đo được:* verbatim lời anh có **nguồn-duy-nhất** = `_context` FLOW (`### PAUSE-<k>` → dòng quote). `_mind` là lớp mềm bị nén/diễn-giải mỗi cửa ⇒ chép verbatim vào đây tạo bản-thứ-2, và khi 2 bản lệch thì bản mềm (đọc trước, giàu ngữ-cảnh hơn) sẽ thắng bản durable. Trong `_mind` chỉ được TRỎ: `xem PAUSE-<k>`.
2. **Rào-2 — CẤM khoá `ts:` ở ĐẦU DÒNG** (mọi biến thể: thụt space/tab, hoa/thường, có khoảng trắng trước dấu hai chấm). Mốc thời-gian sống **trong dòng heading, sau em-dash**: `## MIND-<k> — <ISO-8601> @ <HEAD>`.
   *Lý-do đo được:* marker nhà (`_pause-*` · `_tiep-*` · `_snapshot-*`) mang khoá đó ở đầu dòng **by-design**; reader-mốc TƯƠNG-LAI (gap C10-LATENESS của `scripts/governance-detectors.ps1` — C10 tự khai "no reliable source" cho ts-compare) sẽ quét cả `session-<N>/_*` mà **không lọc theo tên tệp** ⇒ một dòng khoá trong `_mind` đủ để nó lấy sai "mốc gần nhất". Regex canonical = `_TS_KEY_RE` trong `scripts/session_ctx.py`; **CẤM cài bản thứ 2** ở bất kỳ máy nào (2-sự-thật chính là thứ rào này chặn).
3. **Rào-3 — CẤM secret, KỂ CẢ dưới dạng ví-dụ.** Tập tiền-tố cấm = `SECRET_PATTERNS` trong `scripts/session_ctx.py` — **trỏ nguồn, KHÔNG chép mẫu vào tệp này**. Ngoại lệ DUY NHẤT: nhãn đã che `[đã che <8-hex>]`. Bắt buộc quét NHÁP **trước** khi chèn: `mind-check --session 8 --draft <tệp-nháp-scratchpad>`.
   *Lý-do đo được, 2 tầng:* (i) block BẤT BIẾN ⇒ secret lọt là **vĩnh viễn** (còn trong git dù xoá sau); (ii) ⚠️ **enclosure KHÔNG đối-xứng giữa 2 lưới**: `mind-check` chỉ soi DƯỚI marker đóng khối luật, còn `secrets-sweep` (cùng `session_ctx.py`, chạy ở auto-snapshot mỗi `/pause`) **rglob TRỌN `session-<N>/` và không biết khối luật này** ⇒ một mẫu secret viết làm ví-dụ ngay tại đây sẽ **chặn commit ở MỌI cửa pause**. Vì thế rào-2 và rào-3 ở trên **cố ý KHÔNG có ví-dụ literal**; chỉ rào-1 có, vì rào-1 chỉ `mind-check` đọc và nó enclosure-aware.

### Enclosure use ⟂ mention

Máy chỉ quét phần **DƯỚI** marker đóng khối luật (dòng comment cuối cùng của phần luật này). Khối luật được phép chứa chuỗi bị cấm để **giải thích** (citation-trap: doc định-nghĩa anti-pattern tất-yếu chứa chính mẫu đó). Hệ quả 2 chiều: **đừng** dịch ví-dụ xuống dưới marker đóng, và **đừng** viết nội-dung thật lên trên nó.

<!-- BLOCK-SCHEMA (guidance, KHONG phai block that — /pause dien; parser real-block match `^## MIND-\d+`, placeholder `<k>` khong false-match).
     Prose huong-dan duoi day khong dau theo khuon nha; TOKEN may so chuoi thi GIU DAU: nhan muc D + chuoi muc trong `(trống — khai)`.

## MIND-<k> — <ISO-8601> @ <HEAD ngan> (window <w>)

### A. Goi-turn
<1-3 gach dau dong: turn vua roi lam gi, ket qua gi — GOI lai, khong ke lai>

### B. Huong-tiep + nhanh-da-loai
<di dau tiep VA nhanh nao da LOAI + vi sao loai (chong dao lai vong cu)>

### C. Ke-hoach (delta suy-nghi)
<phan SUY-NGHI doi so lan truoc — CAM chep checklist/todo (cho o WAL/HANDOFF)>

### D. Dang-thao-luan
<moi y 1 dong + nhan CO DAU: {mới-nêu | đang-cãi | gần-chốt | treo-chờ-anh}>

### E. Dong-song spawn/engine-run
<1 dong / spawn hoac engine-run: <vai> — <verdict> — <con-tro path (run-folder / sub-file / commit)>>
<muc trong ⇒ dung chuoi: (trống — khai)>
-->

<!-- MIND-RULES-END -->

<!-- diem-chen: block MOI chen NGAY DUOI dong marker duoi day (moi-nhat-o-TREN -- NGUOC chieu _context FLOW).
     Marker duoi day phai giu NGUYEN-VAN, KHONG viet chu-thich cung dong: may khop chuoi DAY-DU
     (`_MIND_TOP_MARKER` trong scripts/session_ctx.py) -- khac khuon `FLOW-START` cua _context (khong may nao doc). -->
<!-- MIND-TOP -->

## MIND-1 — 2026-07-29T09:25:15+07:00 @ d79ddaf (window 1)

### A. Gói-turn

- Anh chốt 2 việc: chạy **đủ 5 vòng** bookend @open · arc L8 = **vá 2 chỗ hở spec KHKK**. Cả hai đã thi hành.
- Bookend chạy thật: **9 lượt spawn + 6 lượt resume**. Kết quả nặng nhất = **D-4** (`ring2` chặn lead trước một nước **xoá lịch-sử** tally 7→3 do lẫn đơn-vị trong-phiên vs consecutive-audit) và **REGRESSION diary** (11 vai đóng băng đúng 1 commit; khâu hỏng là **APPEND**, không phải phát hiện).
- Lead nhận **5 lỗi của chính mình**, đều do vai độc lập bắt: bỏ-im-lặng V4 khỏi bảng vòng · dừng đọc HANDOFF ở dòng 55/58 · phân-loại RAG sai class · errata-của-errata (`531` = task-id chứ không phải test-count) · **ghi block-0 SAI THỨ TỰ** (xem mục C).

### B. Hướng-tiếp + nhánh-đã-loại

Tiếp = chờ `harness-audit` (nấc 3/3, đang resume) → hợp nhất FLAG → trình anh **bảng disposition TỪNG DÒNG** (cấm số tổng, luật meta-count S119) + các khoản cần anh quyết.
**Nhánh đã LOẠI:** ① chép `gap-carry-dropped = 3` vào tally — loại vì `ring2` D-4 chứng minh đó là **đơn-vị khác**, chép vào là xoá 7 vòng lịch sử. ② tin `git status` làm phép kiểm dư-lượng — loại vì nó **mù cấu-trúc với thư-mục rỗng**; phải chạy `find -type d -empty` riêng. ③ bỏ nghi ngờ `last_indexed_at` theo lời H1 — loại NGƯỢC LẠI: `ring1` T-2 chứng nó **đáng tin**, nên nghi ngờ của H1 mới là cái bị bỏ.

### C. Kế-hoạch (delta suy-nghĩ)

🔴 **Delta lớn nhất, và nó về chính nghi-thức:** `ctx-audit` chứng minh bằng mtime rằng lead ghi block-0 lúc **08:32:27** trong khi vòng đo đầu 08:46:03 / cuối 09:26:54 ⇒ **chạy NGƯỢC luật** `session-start.md:358` (block-0 phải ở **CUỐI** nghi-thức mở). Đó là **1 nguyên-nhân gốc sinh 4 triệu-chứng** (E phủ 0/9 · nhãn D lệch · B lệch · C lệch). Block này chính là bản vá.
Delta thứ hai: H6 chốt **4 site** (không phải 3 như MIND-0 ghi) — site-4 `spec:313` `DbInitializer` do lead tìm sau, `ctx-audit` xác minh độc lập.
Delta thứ ba: nghi `#53` là chuyện của từng vai — sai. **7/7 first-return garble, 6/6 resume sạch, mất 0 B** ⇒ đây là **thuộc-tính của kênh return**, và thứ gánh được là **artifact**, không phải prompt.

### D. Đang-thảo-luận

- Vá GỐC thứ tự Phase 3.5: thêm bước refresh `_mind` sau §2.1.9 ở `session-start.md` — lỗ nay đo được ở **CẢ HAI** bookend, không riêng @close như L7 kê — mới-nêu
- `governance-detectors.ps1:1095`/`:1760` lọc `sub-*.md` nên bỏ sót 3 return trio tên `harness-*-return.md` ⇒ ai điền mục E bằng glob đó ra 6 thay vì 9 — trùng đúng carry `C11(b) filter` đang treo — gần-chốt
- Cơ-chế đặt-chỗ diary hỏng: 6/6 đề-xuất của `harness-refine` qua 3 phiên chưa từng thi hành, và diary đóng băng làm chính nó đọc sổ chốt-dừng sai 2 vòng — treo-chờ-anh
- Slot (45) trần `_mind` = **báo động giả** (đo trên `_mind-s-7` đã đóng băng; file sống 37,9%) ⇒ đề rút khỏi hàng chờ quyết của anh — gần-chốt
- `cicd-monitor/_INDEX` 95,14% còn 996 B, 2 lối thoát trong budget đều đã tiêu (gist tiêu @S152, split bị header chặn) ⇒ hết lối trong tầm AI — treo-chờ-anh

### E. Dòng-sống spawn/engine-run

- `tooling-auditor` — PASS_WITH_FLAGS 7 finding (2 TRƯỢT khi bị `ring1` chấm) — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-tooling-auditor-open-S159.md`
- `harvest-curator` — GATE-FAIL 9 finding (5 TRƯỢT khi bị `ring1` chấm) — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-harvest-curator-open-S159.md`
- `lead-stale-auditor` — 5 FLAG (3H/2M), **chết #53, 0 END ⇒ "5" là SÀN không phải TỔNG** — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-lead-stale-open-S159.md`
- `lead-gap-auditor` — 8 FLAG (3H/5M) — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-lead-gap-open-S159.md`
- `ring1-audit` — 40Đ/7T, falsify 5 phép (3 HELD/2 BROKE) — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-ring1-audit-open-S159.md`
- `ring2-audit` — 13Đ/0T, 4 khuyết-tật gồm D-4 — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-ring2-audit-open-S159.md`
- `harness-eval` — MIXED, 4 trục REGRESSION — `.claude/workflows/runs/2026-07-29-S159-bookend-open/harness-eval-return.md`
- `harness-refine` — 2 action / 1 ESCALATE-block / 10 BÁC / 5 NHƯỜNG — `.claude/workflows/runs/2026-07-29-S159-bookend-open/harness-refine-return.md`
- `harness-audit` — đang resume nốt §4 + verdict — `.claude/workflows/runs/2026-07-29-S159-bookend-open/harness-audit-return.md`
- `ctx-audit` — **TRUOT 6 FLAG** (bắt đúng lỗi thứ-tự Phase 3.5 của lead) — `.claude/workflows/runs/2026-07-29-S159-bookend-open/sub-ctx-audit-open-S159.md`
- engine-run máy-$0: `session-scaffold` · `session-counter-tick` (32→33) · `governance-detectors` (43+8) · `distill-shard-probe` (IM 15/15) · `nhip-no-probe` · `crystallized-backfill` · `memory-selfimprove-audit` (GAPS none) · `session_ctx.py mind-check` (đạt=10)

## MIND-0 — 2026-07-28T20:57:15+07:00 @ bbc39be (window 1)

### A. Gói-turn

- Bootstrap L8 mở bằng một **ngoại-lệ chờ**: WAL sổ trống nhưng Sàn-3 ① kêu ×2 (orphan run-folder S155 + S157). Đối chứng đĩa TRƯỚC khi hỏi ⇒ phân loại được là **nợ thu-hoạch**, không phải mất việc.
- Anh chọn nối cho xong hẳn ⇒ retro-harvest 2 file synthesis (9.590 B + 10.650 B), tick lại 2 ledger khớp đĩa. Detector im, và `nhip-no-probe` xác nhận độc lập `run-chua-gom 0`.
- Máy đo chạy đủ: scaffold `session-8` · counter 32→33 (`squash-benign`) · detectors 43+8 · shard-probe IM · RAG sống.

### B. Hướng-tiếp + nhánh-đã-loại

Tiếp = trình anh MASTER-CHECKLIST + xin quyết 2 việc: (1) có bắn 5 vòng bookend @open không (xung đột luật, xem mục D) · (2) chọn arc sản-phẩm cho L8 giữa **vá 2 chỗ hở spec KHKK** vs **W1 KHKK** vs backlog UAT.
**Nhánh đã LOẠI:** ① tự bootstrap bỏ qua Sàn-3 — loại vì bậc MẠNH kêu thì đó đúng là ngoại-lệ chờ duy-nhất, và anh đã chốt ngược lại. ② gõ `/tiep` — loại vì WAL bị reset **có chủ đích** @S158 nên `/tiep` sẽ chỉ chạy lại đúng Sàn-3 vừa chạy, 0 chain để nối. ③ ghi miễn-trừ vào `_ledger.md` cho 2 folder — loại vì việc thật đã land, viết synthesis rẻ hơn và giữ được chứng-nhân.

### C. Kế-hoạch (delta suy-nghĩ)

Đổi so với giả-định vào phiên: tưởng bootstrap là đường thẳng READ→AUDIT→REPORT, hoá ra **cửa Sàn-3 chặn trước Phase 1** và đó là thiết-kế đúng — chặn sớm tiết kiệm cả read-set nếu anh chọn `/tiep`.
Delta thứ hai: định viết synthesis theo `run.md`, nhưng đo ra ledger **stale 2 chiều** (S155 khai cicd chưa chạy khi đã chạy; S157 khai S6 chưa chạy khi 4 file lăng kính nằm sờ sờ). ⇒ đổi nguồn sang **đĩa + prod-hash + HANDOFF**, coi `run.md` là *đối tượng cần kiểm* chứ không phải nguồn.
Delta thứ ba: khi verify H5 thì lộ ra nó là ca **vá-một-nửa cùng lớp** (`:284` vá, `:353` sót) và H6 rộng **3 site** chứ không phải 1 như HANDOFF ghi — tức bản disposition của phiên trước **đếm thiếu phạm vi**, đúng họ lỗi `meta-count-self-coverage`.

### D. Đang-thảo-luận

- Xung đột luật: nghi-thức bookend đòi AUTO-spawn 5 vòng, guidance phiên lại cấm gọi AgentTool khi anh chưa yêu-cầu — chọn báo anh thay vì tự quyết một mình — treo-chờ-anh
- Arc sản-phẩm cho L8: vá 2 chỗ hở spec KHKK (H5/H6) trước W1, hay chuyển hẳn sang việc khác — treo-chờ-anh
- STATUS ghi RAG DOWN nhưng đo được service sống + 5 repo khác index sáng nay, riêng SE cũ 2 tháng ⇒ nên tách "service chết" khỏi "SE không được re-index" — mới-nêu
- H6 rộng 3 site (`:224` `:252` `:443`) chứ không phải 1 như HANDOFF ghi ⇒ khi vá phải grep cùng-lớp, đừng sửa đúng dòng được chỉ — gần-chốt
- 8 slot NEXT-anh đang mở từ L7 (42)…(48) cộng slot cũ — cần biết anh muốn xử slot nào trước hay để nguyên — treo-chờ-anh

### E. Dòng-sống spawn/engine-run

- (chưa spawn vai nào — 5 vòng bookend @open đang treo chờ anh quyết, xem mục D dòng 1)
- máy-$0 đã chạy: `session-scaffold.ps1 -New` → session-8 · `session-counter-tick.ps1 -Session S159` → 32→33 squash-benign · `governance-detectors.ps1` → 43 + 8 INFORM · `distill-shard-probe.ps1` → IM (15/15) · `nhip-no-probe.ps1` → light 5/6 deep 7/15
- retro-harvest (lead solo, 0 spawn): `.claude/workflows/runs/2026-07-27-S155-pe-delete-approver/implement-synthesis.md` · `.claude/workflows/runs/2026-07-28-S157-ke-hoach-ky-ket-hd/review-synthesis.md`
