# _mind-s-13 — SESSION-MODEL lớp MỀM (trí-nhớ suy-nghĩ 4 tầng) > **sID (LOGIC-session) = 13.** 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-13/_mind-s-13.md`. > ts-mốc khởi-tạo = **2026-08-07T23:37:36+07:00** (nguồn: `git log -1 --format=%cI @ HEAD 936d1aed`) — 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 13` 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 ``, 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//…`) — **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ý-do đo được:* verbatim lời anh có **nguồn-duy-nhất** = `_context` FLOW (`### PAUSE-` → 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-`. 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- @ `. *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-/_*` 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 13 --draft `. *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-/` 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ó. ## MIND-0 — 2026-08-07T23:37:36+07:00 @ 936d1aed (window 1) ### A. Gói-turn - Bootstrap `/session-start` trọn: Sàn-3 5/5 im · `session-13` mở · counter 55→56 · test 645 PASS · **spawn-probe 5/5 ALIVE ⇒ slot (73) đóng bằng vật, không bằng static-check**. - Bookend @open V1+V2 đủ 6 vai. Verdict → xem `.claude/workflows/runs/2026-08-07-S182-bookend-open/bookend-open-synthesis.md`. - Anh hỏi giữa chừng *"ring-3 và ring-4?"* — đo đĩa ra: ring3 **cố ý không tồn tại** (V3 dùng `harness-audit`), ring4 **NO-OP đúng luật**, **ring5 là GAP thật**. ### B. Hướng-tiếp + nhánh-đã-loại **Hướng:** chờ anh chốt **slot (67) · VK-5 · deep-sweep · (72) · `ring5-audit` slot (41)** *(🔴 viết thẳng tên slot thay vì đếm "4 câu" — `ctx-audit` FLAG-5: cụm "4 câu số" khớp nhầm vào `HANDOFF:6`, nơi 4 câu **đã trả lời + thi hành @S181** mà bảng chưa lật ⇒ cửa-sổ sau sẽ hỏi lại anh 4 câu đã chết)*; rồi vá lớp tự-quy-chiếu (`session-start.md:161/:162` + `HANDOFF:58` + `ring2-audit/MEMORY.md:28`) vì cả 3 đang **lây vào brief của chính lead**. **Nhánh đã LOẠI:** - (a) **Lật slot 71 theo đề-xuất H2** — LOẠI. `ring1` chứng `HANDOFF:60` slot đã gạch ✅ ĐÓNG @S179, số nằm trong `🧊 nguyên-văn slot cũ:` ⇒ lật = **sơn lại ảnh chụp**, đúng lớp R-1 bắt @S181. - (b) **Sweep `"roster 23"` ở `STATUS:478` theo dòng** — LOẠI. Dòng 15.804 ký tự chứa **2** chuỗi; (b) là ảnh-chụp S149 ĐÚNG và tự khép kín. Neo theo char/đoạn. - (c) **Ghi "16/17 đích gist" làm baseline** — LOẠI. `ring1` chạy cùng lệnh ra **19**; 2 engine cãi nhau chưa tìm ra engine hỏng ⇒ **không chọn số nào**. - (d) **Hạ số "12 root" ở `permission-matrix:3`** — LOẠI, đây là bẫy: 12 là **ĐÚNG SỐ**; chỗ sai là **cây `:44-77`** vẽ 8. Sửa = bồi cây, không hạ số. ### C. Kế-hoạch (delta suy-nghĩ) Delta lớn nhất phiên này: **lỗi bề-mặt không nằm yên — nó lây vào brief mà lead viết cho vai đo.** Ba ca độc lập cùng chiều trong một phiên (enum ma ở file LỆNH → brief `lead-stale` · `HANDOFF:58` → brief `ring2` · `MEMORY.md:28` auto-inject → chính vai KIỂM). ⇒ **vá bề-mặt điều-khiển phải ưu tiên trên vá bề-mặt kể-chuyện**, vì chỉ loại đầu mới nhân bản. Và hệ quả kỷ luật: **brief lead viết ra là một artifact CẦN ĐƯỢC KIỂM**, không phải kênh miễn nhiễm — lượt này `ring2` BROKE đúng tiền-đề tao giao nó. Delta thứ hai: **17/17 ĐẠT đọc dễ thành "sạch"**, nhưng đó là **độ chính xác ⟂ độ phủ**. `ring2` mở đúng một chỗ ngoài vùng 2 vai đã chạm là ra ngay 1 FLAG sót cùng class ⇒ mọi TOTAL lượt này phải mang nhãn **SÀN**. ### D. Đang-thảo-luận - `{treo-chờ-anh}` slot (67) người SOẠN có được upload file khi duyệt KHKK — policy rộng hơn ý định, im 9 nhãn phiên, sắp bị archive. - `{đang-cãi}` VK-5 — **3 bề mặt lệch nhau** (`ctx-audit` FLAG-3): `_mind` treo ⟂ `owner-decisions-…-dot-2.md:49` "✅ CHỐT GIỮ PHỤ LỤC @S181" ⟂ `sub-lead-gap-auditor.md:95` "ĐÃ CHỐT". Không tự phán bên nào: nếu lead đúng thì ledger **ngân một chữ OK quá tay**; nếu ledger đúng thì §D đang giữ câu đã trả lời ⇒ **hỏi anh lần 2 = vi phạm A5**. Fail-safe: hạ `owner-decisions:49` xuống nấc *"lead đọc là chốt, chưa có chữ chỉ nhánh"*. - `{gần-chốt}` deep-sweep H24 — 🔴 **`ctx-audit` FLAG-4: đổi nhãn KHÔNG đổi kết quả.** @S181 lead bị bắt vì **hạ** xuống NEXT-em; @S182 lead **nâng** lên `treo-chờ-anh` — hai nước ngược chiều, **cùng kết quả: không chạy**, 15/15 → **16/15**. `treo-chờ-anh` còn tệ hơn: khoá món sau cánh cửa chỉ anh mở được ⇒ nợ trôi tiếp **với lý do trông chính đáng**. Nhãn hạ về `gần-chốt` = việc của em, không đẩy sang anh. - `{mới-nêu}` **V-5 vị-từ mã-hoá chưa cắm** — `ctx-audit` FLAG-2: RƠI THẬT, và `lead-gap` FLAG-6 **SÓT** nó ⇒ số món rơi ≥ **3**. Nhà duy nhất còn sống = `bao-cao-cuoi.md:79` = artifact **đã đóng + đã gửi hub**, không phải hàng đợi. Control dương cùng dòng `:79`: `W3b` đi tiếp tới `HANDOFF:7`, V-5 cùng câu **không đi đâu**. - `{treo-chờ-anh}` (72) bật `mfe-eval` vào nhịp closeout thường xuyên không. - `{mới-nêu}` `ring5-audit` build SE-form ngay hay chờ nhịp adopt chung VIPIX — slot (41), V5 đang chạy 64 FLAG mà **0 vai chấm lại**. - ~~`{đang-cãi}` 7 baseline `-Expect`~~ 🔴 **ERRATA @open, `ctx-audit` FLAG-1 bắt — dòng này SAI cả 2 vế, giữ gạch làm vết.** Anh **ĐÃ CHỐT** phương án (b) tách-file-dữ-liệu (`so-yeu-cau-chu-du-an.md:40` `YC-007` `"6 -> b"`, trạng thái **đóng**) **VÀ đã SHIP**: `scripts/naming-baseline.json` 1.354 B + `naming-scan.ps1:63,71,90,121,177` đọc thật, land `a3776eaa`. Đường lây 3 tầng: `lead-gap` FLAG-6(a) grep **TÊN CŨ** `-Expect` → 0 hit → kết "rơi" (quyết định land dưới tên **"baseline"** trong `.json`+`.ps1`, ngoài tập grep) → `ring2` chấm `lead-gap` 6/6 ĐẠT nhưng G-6 chỉ kiểm vế tự-rút → lead promote vào §D. **Bài: 0-hit theo TÊN đọc thành "đã rơi".** - `{mới-nêu}` đề-nghị `ring2` *"đòi phép đo trước khi vào tally"* — luật về chính bộ đếm H24; **carry từ `_mind-s-12:84`, cũng đã rơi**. - `{gần-chốt}` W3b cắm mã thoát — phân loại 64/64 xong, chỉ chờ soak (tự tan). - `{mới-nêu}` `ring1-audit` persona ghi *"CẤM tự chạy ở open"* mà lead giao @open 5 phiên liền — sửa persona hay sửa vận hành. ### E. Dòng-sống spawn/engine-run - `front-end-reviewer-style` · `back-end-reviewer-style` · `database-reviewer-style` · `score-counter` · `score-count-auditor` → **5/5 `ALIVE`** → `.claude/workflows/runs/2026-08-07-S182-bookend-open/spawn-probe-registry.md` - `tooling-auditor` → `PASS_WITH_FLAGS — 4` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-tooling-auditor.md` - `harvest-curator` → `GATE-FAIL — 7` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-harvest-curator.md` - `lead-stale-auditor` → `11 FLAG` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-lead-stale-auditor.md` - `lead-gap-auditor` → `6 FLAG` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-lead-gap-auditor.md` - `ring1-audit` → `41 ĐẠT / 7 TRƯỢT / 8 KC` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-ring1-audit.md` - `ring2-audit` → `17 ĐẠT / 0 TRƯỢT` + 2 errata + 1 FLAG SÓT → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-ring2-audit.md` - `ring4-audit` → **NO-OP có khai** (SHARD-PROBE `pending=3 / ngưỡng=15 ⇒ IM`, pin missing) → không spawn - `ctx-audit` → `TRUOT — 7 FLAG` → `.claude/workflows/runs/2026-08-07-S182-bookend-open/sub-ctx-audit-open.md` *(🔴 dòng này thêm SAU khi vai trả — `ctx-audit` FLAG-7: block-0 ghi ở Phase 3.5 còn `ctx-audit` spawn ở 3.5(iii) ⇒ §E luôn ghi **một nhịp trước** lượt cuối nó phải kể. **Cùng HÌNH với FLAG-6** `mind-blocks`. Tiền lệ vá @S173: §E có dòng cho vai ĐANG chạy)* - 🔴 **6/6 vai bookend garble first-return, recover 6/6 bằng resume, mất 0 byte.** Hai câu garble **chứa finding thật** ⇒ đừng vứt câu garble.