[CLAUDE] Docs: S153 closeout — adopt TRỌN Ctx soft-memory + OWNER-VETO 3-vai + RENAME hub-form (squash 22 wal:)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m39s

Pipeline anh lệnh: /check-email + /adap-apply -> /fable-real invest (spec 9-task/24-checklist)
-> hmw Opus-5-MAX 2 đợt + lead-solo T6-T8 -> checklist verify.

Thư ① 9c909007 (model-default Opus 5 MAX): TRỌN — filing 2-tuyến + probe-sau-restart
2-nguồn claude-opus-5[1m] + thư hub d432f5eab5cd + caveat (e) đóng.

Thư ② 0df10df4 (pause-tiep Ctx soft-memory, sàn 7-khoản): EXECUTED
- máy mind-check: scripts/session_ctx.py +542 dòng (7 phép + 2 phụ, 4 mức, draft/closed/--root/--session PIN, exit 0/1/3)
- template .claude/templates/session-mind-template.md + wire 4 lệnh (pause C-bis+2bis+§1-carve-out, tiep §2.6+§3-ter, session-start Phase 3.5, session-end §L.b(l)+6.3-bis)
- memory-budget: mind_ctx_kb=32 + tiep_reload + ĐÓNG ghost-wire session_ctx_kb (H18 class-2 sống S146->S153)
- fault-inject 18/18 + 2 fix hậu-T4 (FI 6/6): GAP-#9 closed-mode E-0-con-trỏ CỜ->TRƯỢT (chặn gradient
  thưởng xoá-con-trỏ-trung-thực, họ bẫy F-1 của chính thư hub) · secrets-sweep +--root parity
- số ĐO THẬT pause +117ms thay ước lệch 2.2-5.4x

OWNER 2 quyết trong-phiên:
- (38) VETO: 1-vai -> hub-form 3-vai (ctx-curator @pause + carve-out pause §1 · ctx-verifier @tiep · ctx-audit @2-bookend)
- RENAME theo chuẩn hub/sisters để audit chéo: ctx-pause-check->ctx-curator, ctx-reload->ctx-verifier
  (đo đĩa 3 nhà; hub≠sister => SE theo HUB-form, tiền lệ S149). Roster 20->23, VALID_ROLES 23.
  Gap còn lại: ring5-audit (V5 truth-floor) hub CÓ, SE+VIPIX chưa -> slot (41).

Bookend 2 đầu (12 spawn) + trio auto 1 vòng:
- @open: H1 7f · H2 4f · H24 5+3 FLAG · ring1 28Đ/4T · ring2 8/8Đ + M-1 MISS thật · trio eval-MIXED-14/refine-3A-7B-4N/audit-25Đ-3T (re-chạy 7 instrument, 24 số byte-exact)
- @close: H1 6f · H2 8f (baseline S154 = 16/10, tự sửa bản ~23/11) · H24 4+2 FLAG · ring1 47Đ/5T/1KC/53 · ring2 6/6Đ + 21 phép phụ
- lead xử 11 mục: 9 FLAG H24 + 3 RESIDUAL ring2 + F-r2 (plugin 3 hard-site) + M-1 cả 2 persona + M9 14 sổ diary + F-3/F-5/F-6 + nit Sàn-5 + BÁC F-4 (fan-out không vào _index)

#53 x14-cận-dưới, 0 mất dữ liệu (WRITE-lane derive-from-body · Agent-resume · SendMessage-resume x6).
Datum: trio return-only hết miễn nhiễm (3/3 CLEAN -> 1/3). 4-A suýt xảy ra thật (bản committed của 2 file H24 là bản cắt 24%/48%).
completeness-gate: 5 vòng đủ · phép ĐẠT 4 / TRƯỢT 0 / vacuous 0.
State: Mig 67 · 89 bảng · 532 test · gotcha 83 · Sub-agents 23 · counter 27 · bundle FROZEN · governance-only 0 prod-code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-26 16:10:54 +07:00
parent c2d01f0dce
commit 11db5efdf8
88 changed files with 5750 additions and 64 deletions

View File

@ -12,6 +12,7 @@ Thực-hiện **tuần-tự 5 bước** sau; trong lúc chạy **KHÔNG nhận v
## 1. NGỪNG spawn mới — xử-lý task đang chạy
- KHÔNG spawn / phóng thêm bất-kỳ task hay workflow nào nữa.
- 🔴 **Carve-out DUY NHẤT (OWNER-VETO @S153 — mirror hub O-1(a)):** vai `ctx-curator` ở bước §2.6(C-bis)-2bis ĐƯỢC spawn trong `/pause` (vai-1 vòng Ctx hub-form 3-vai, anh chốt "Build đủ 3 vai như hub"). Ngoài nó ra, luật này nguyên vẹn.
- Với task đang chạy (background hoặc workflow):
- **Sắp-xong** (ước `< ~2 phút`) → **CHỜ** nhận kết-quả rồi **harvest-liền** (append phần trí-nhớ đã verify) trước khi chốt.
- **Còn lâu** → **KHÔNG chờ**. Ghi vào WAL một mục `[!]` **đủ trường**. Nếu là **workflow** → ghi một dòng `wf:` **năm-trường**: `wf:<mục-đích> run=<run-folder> runId=<id|pending> args=<snapshot> done=<k>/<N> harvested=no` (nhánh khôi-phục xem `/tiep`).
@ -41,6 +42,14 @@ account-label: none
**(C) Máy-derive `§(c) STOCK-touched`** — `python scripts/session_ctx.py machine-block --session <N> --json` → điền bảng §(c) của `_context-s-<N>.md`. **KHÔNG điền tay** (template ràng "máy-derive @pause/snapshot").
🔸 **Khai giới-hạn:** `changed_files` = `git diff anchor..HEAD`**chỉ phần ĐÃ COMMIT**; việc còn dirty không hiện. Đừng đọc thành "toàn bộ việc đã làm".
**(C-bis) Refresh lớp MỀM `_mind-s-<N>.md`** *(adopt thư `0df10df4` @S153 — sàn khoản 2; đặt TRƯỚC (D) để secrets-sweep của auto-snap quét luôn block vừa chèn = lưới-2 sau máy-draft lưới-1; 🔴 nghi-thức ĂN từ phiên sau restart CLI — command no-hot-reload)*:
1. Soạn **NHÁP** block A-E (scratchpad): **A** gói-turn · **B** hướng-tiếp + nhánh-đã-loại · **C** kế-hoạch delta-suy-nghĩ (KHÔNG chép checklist) · **D** đang-thảo-luận + nhãn `{mới-nêu|đang-cãi|gần-chốt|treo-chờ-anh}` · **E** dòng-sống 1-dòng/spawn `{verdict + con-trỏ}`. Mục trống ghi `(trống — khai)`; việc ĐÃ-CHỐT = con-trỏ WAL/HANDOFF, **CẤM chép**.
2. `python scripts/session_ctx.py mind-check --session <N> --draft <file-nháp>`**TRƯỢT ⇒ sửa nháp, CẤM chèn** (rào quét dịch-trái).
2-bis. **Spawn `ctx-curator`** (vai-1 Ctx — carve-out §1, OWNER-VETO @S153 hub-form 3-vai; **máy TRƯỚC vai**): PIN {nháp · `_mind` · run-folder-đang-mở-hoặc-khai-0 · WAL} → nhận `CTX-CURATOR: DAT|SUA|SKIP-CO-KHAI` → điểm SỬA thì sửa nháp + chạy lại bước 2 → verdict 1-dòng ghi vào entry `PAUSE-<k>` mục (3) của `_context` (vết, không đẻ file). Núm-hạ-tần-suất = quyền anh (1 câu là hạ nhịp/tắt — máy-$0 vẫn lo).
3. Chèn **TOP** dưới `<!-- MIND-TOP -->`; số hiệu = **ĐẾM block TRƯỚC chèn** (block-0 chiếm số 0). 🔴 `_mind` mới-nhất-ở-**TRÊN** — **NGƯỢC chiều** `_context` FLOW (mới-nhất-ở-CUỐI), đừng chép khuôn bên kia.
4. `mind-check` full. Trần = khoá **`mind_ctx_kb`** (B1 — CẤM chép số vào đây); vượt ⇒ nén block CŨ NHẤT trừ block-0 + top; <3 block **TỪ-CHỐI nén + giương cờ**. File `_mind` chưa (ca vào giữa phiên-logic) tạo từ `session-mind-template.md` + khai trễ.
**Chi phí ĐO THẬT @S153 (T4 Measure-Command ×3 thay ước ban đầu 0.3-0.6s lệch 2.2-5.4×): +~0.12s máy (draft 61,3ms + full 55,4ms; file 34KB vẫn 63,8ms) + 1 Edit + ~1-3K tok soạn nháp + 🔄 1 spawn `ctx-curator` (OWNER-VETO @S153 hub-form 3-vai carve-out §1, floor ~100K tok/spawn, chi phí anh đã chấp nhận; núm hạ = 1 câu của anh).** 🧊 *Câu cũ "0 spawn — vai kiểm chỉ sống @2 bookend" = quyết (36)(b)+(38)(a) trước veto — hết hiệu lực vế spawn-@pause, vế máy-$0-mỗi-cửa GIỮ.*
**(D) AUTO-SNAPSHOT chạy `/snapshot` §2→§4 ngay trước bước 3** *(đóng `[carry:pause-autosnap]` #17, anh chốt @S148)*:
- **Đo trước khi wire, đúng câu hub bắt hỏi** (`goi-chot` §3 *"có làm điểm dừng đắt lên không"* phải hỏi TRƯỚC khi bàn giá-trị): `machine-block` **~140ms** · `secrets-sweep` **~64ms** (3 lượt, tb).
- 🔴 **Chi-phí RÒNG của auto-snap chỉ là ~64ms + 1 write**, KHÔNG phải 204ms: `machine-block` **vốn đã phải chạy** (C) cho §(c) STOCK-touched. `/pause` cũng vốn đã commit sẵn bước 4.

View File

@ -159,6 +159,7 @@ Em main PHẢI echo **TOÀN BỘ nội dung command body này** (đầy đủ Ph
- **(vi) Post-wave assertion:** xong 3 con → `git status --short` → **kỳ vọng 0 tracked-change ngoài run-folder**; có thay-đổi lạ ⇒ residual-write ⇒ **báo anh + revert** (G-015: propose-only KHÔNG code-enforced ở kênh Bash — git-diff = backstop THẬT).
- **(vii) [M4] Vết 2 lớp (giữ NGUYÊN sau khi bỏ consent @S151):** dòng trạng-thái ở (i) **IN CẢ khi Light/hỏi-đáp** (Light ⇒ skip CHẠY hợp-lệ, **CẤM skip IM-LẶNG**); khi skip (Light **HOẶC** vòng không chạy được — 🧊 vế "khong-gat" retired @S151 cùng consent-gate) ⇒ ghi **1 dòng vết** vào `.claude/WAL.md`: `trio: skipped S<nn> (<ly-do: light | loi | ...>)`.
- **(viii) Đơn-vị nhịp:** "phiên-LOGIC" hub map **TẠM** = nhãn-phiên `S<nn>` (SE chưa adopt session-logic). 🔴 **KHÔNG cadence-key** trong `memory-budget.json`, **KHÔNG tick** counter cho bộ-ba (nhịp bộ-ba ≠ nhịp H24 — trộn 2 đồng-hồ = hỏng cả hai).
- **(l) 🔎 ctx-audit @close — vai-3 vòng Ctx (SOI-CHUỖI)** *(adopt thư `0df10df4` @S153; 🔄 **OWNER-VETO @S153**: (38)(a) 1-vai → **hub-form 3-vai** anh chốt trực tiếp — vai-1 `ctx-curator` @mỗi-pause · vai-2 `ctx-verifier` @mỗi-tiep · vai-3 đây; 🔴 ăn từ phiên sau restart CLI):* AUTO **SAU các vòng đo (a)-(k), TRƯỚC §L.c** — spawn vô-điều-kiện (hình-B), **máy TRƯỚC vai** (`mind-check` full + closed-check §6.3-bis). **PIN đích-danh fail-closed**: path `_mind-s-<N>.md` + run-folder bookend-close; `_mind` vắng ⇒ **NO-OP 1 dòng có khai**. Vai: **bất-biến chuỗi** (tự đếm ĐĨA) + **chấm mồi-ngầm** + **KIỂM-VẾT vai-1/vai-2** (phiên có pause/tiep: đọc verdict chúng + đối-chứng chọn mẫu; phiên 0-pause/0-tiep: tự chạy hồi-tố 5-khoản + 4-khoản = fallback) — contract = canonical [`.claude/agents/ctx-audit.md`](../agents/ctx-audit.md) (B1, KHÔNG chép). Lead scribe `sub-ctx-audit-close.md` **NGAY khi trả** + seed diary `agent-memory/ctx-audit/` **CÙNG lượt** (kẻo C11(b) FLAG diary-0-delta — datum T3 @S153).
### §L.c — completeness-gate 5-vòng (D1, land S146 — 🔴 CÓ RĂNG: CẤM bare-PASS)
@ -377,8 +378,9 @@ git push origin main # → git.baocaogiaoduc.vn/vietrep
> Floor manifest `101e69d6` §1: dấu-mốc thứ-4 = **"Chốt-kết (`_end`) — dấu đóng băng khi phiên-LOGIC thực sự khép lại"**. 🔴 **SE form = `_end` kể từ S148** (owner chốt *"đối ứng đúng chính xác như hub"*); form cũ `closed.md` = **LEGACY, CẤM viết mới** — `session-1` còn dùng nên Sàn-3 vẫn nhận. Chân này **trước S146 CHƯA wire** ⇒ cân-sổ ORPHAN-L chỉ có nửa vào, không có nửa khoá (kêu oan ca *"pause rồi đóng thẳng không qua `/tiep`"*). Nay đóng.
- **Ghi `.claude/sessions/session-<N>/_end`** cho `<N>` đang mở — 🔴 **TÊN `_end`, KHÔNG đuôi `.md`** (form hub, owner chốt @S148 *"đối ứng đúng chính xác"*). **FROZEN, ghi MỘT lần, CẤM sửa về sau**. Khuôn `key: value`, tối-thiểu:
`summary-frozen-s<N>:` (1 dòng arc đã đóng) · `pointer:` (session-log/SUMMARY) · `carry:` (`a · b · c`) · `pending-anh:` · `pointers:` (run-folder) · `h24-tick: counter=<n>` · `markers: _pause=<p> · _tiep=<t> · _snapshot=<s>`.
🔴 **Trường `markers:` không phải trang-trí** — nó là **bản chụp cân-sổ tại lúc đóng**; sau khi đóng, detector bỏ qua thư-mục nên đây là **chứng duy nhất** còn lại về số lần dừng/nối.
`summary-frozen-s<N>:` (1 dòng arc đã đóng) · `pointer:` (session-log/SUMMARY) · `carry:` (`a · b · c`) · `pending-anh:` · `pointers:` (run-folder) · `h24-tick: counter=<n>` · `markers: _pause=<p> · _tiep=<t> · _snapshot=<s> · mind-blocks=<n>` *(+`mind-blocks` @S153 adopt `0df10df4`)*.
🔴 **Trường `markers:` không phải trang-trí** — nó là **bản chụp cân-sổ tại lúc đóng**; sau khi đóng, detector bỏ qua thư-mục nên đây là **chứng duy nhất** còn lại về số lần dừng/nối. 🔴 Riêng `mind-blocks=` : máy `mind-check` **KHÔNG BAO GIỜ** đọc nó làm nguồn đếm (đĩa thắng — phép-6 đếm `_pause-*`/`pause-*` trên đĩa; tự-khai chỉ sinh cờ-INFO khi lệch).
- **Closed-check lớp mềm** *(@S153 — sau khi ghi `_end`)*: `python scripts/session_ctx.py mind-check --session <N>` — closed-mode **tự siết** (con-trỏ E `đang-chờ` → TRƯỢT; tên-sai → TRƯỢT). **TRƯỢT ⇒ xử lý TRƯỚC commit chốt** (con-trỏ hứa-file-sẽ-sinh phải đã sinh khi phiên-logic khép — bài F-1 thư `0df10df4` §4).
🧊 Form SE cũ = `closed.md` (4 trường prose) — **LEGACY, CẤM viết mới**; `session-1` còn dùng nên Sàn-3 vẫn nhận (dual-accept).
- **Cân-sổ (khoá vòng ORPHAN-L):** ghi xong ⇒ **thư-mục ĐÓNG TRỌN, MỌI pause coi như đã đối-ứng** — [`tiep.md §0`](tiep.md) ⑤ **bỏ qua hẳn** thư-mục đã chốt-kết.
🔴 **Vá @S148 (fault-inject bắt):** bản cũ code `c=1` rồi so `p > r + c` ⇒ chỉ tha **ĐÚNG MỘT** pause chưa khớp ⇒ phiên đã đóng mà có **≥2** pause dư vẫn **KÊU OAN** — lệch đúng câu doc này vẫn luôn nói ("mọi pause"). Lệch sống từ S146, không lộ vì SE mới có `p=1`.

View File

@ -99,7 +99,8 @@ Em main đọc `.claude/WAL.md` (sổ mạch-việc-dở H22 — ghi-đè ≤40
| `_pause-<i>.md` | **marker máy** ~200B, 5 trường (`ts`·`head-sha`·`window-ordinal`·`jsonl-hint`·`account-label`) | [`pause.md §2.6`](pause.md) |
| `_tiep-<i>.md` | marker máy, **cùng 5 trường** | [`tiep.md §2.6`](tiep.md) |
| `_snapshot-<i>.md` | chụp-nhanh không-dừng | ⏳ **CHƯA CÓ ở SE** — cần lệnh `/snapshot` `[carry:snapshot-cmd]` + `[carry:pause-autosnap]` |
| `_end` | **chốt-kết, KHÔNG đuôi `.md`** · `markers:` chụp cân-sổ lúc đóng | [`session-end.md §6.3-bis`](session-end.md) |
| `_end` | **chốt-kết, KHÔNG đuôi `.md`** · `markers:` chụp cân-sổ lúc đóng (+`mind-blocks=<n>` @S153) | [`session-end.md §6.3-bis`](session-end.md) |
| `_mind-s-<N>.md` | **lớp trí-nhớ MỀM 4-tầng** (gói-turn · hướng-tiếp · kế-hoạch-suy-nghĩ · đang-thảo-luận + dòng-sống E) — block `## MIND-<k>` **mới-nhất-ở-TRÊN** (🔴 NGƯỢC chiều `_context` FLOW), block cũ bất-biến; adopt thư `0df10df4` @S153 | ghi block-0 @**Phase 3.5** (lead) · refresh @[`pause.md §2.6(C-bis)`](pause.md) · đọc @[`tiep.md §2.6/§3-ter`](tiep.md) · máy = `session_ctx.py mind-check` · trần = khoá `mind_ctx_kb` (B1) |
- 🔴 **`<i>` đánh số TUẦN TỰ** trong thư-mục (`max+1`) — **KHÔNG** nhãn `S<nn>`, **KHÔNG** timestamp trong tên. Thứ-tự đọc được từ tên, ts nằm *trong* file.
- 🔴 **TÁCH marker ⟂ narrative** là điểm khác lớn nhất so với form SE cũ (gộp cả hai vào `pause-S<nn>-<ts>.md`). Marker cho MÁY đọc, narrative cho NGƯỜI/phiên-sau đọc.
@ -162,6 +163,9 @@ git check-ignore -q .claude/sessions/session-1 ; echo "exit=$?" # → exit=1
- 🧪 **harness-eval** (monitor **trio-memory**, INFORM-only, **+S141**) — con **ĐO**: đọc output 5+1 instrument + `memory-budget.json` → TRẢ **số nguyên-văn** + so-baseline + verdict {HEALTHY|REGRESSION|MIXED}. 🔴 CẤM số-từ-trí-nhớ.
- 🧭 **harness-refine** (monitor **trio-memory**, INFORM-only, **+S141**) — con **ĐỀ-XUẤT**: đọc `harness-eval-return.md` (PIN) → action 4-lớp {nạp-lại · thăng-hạng · lưu-kho L1→L2 · chưng-cất} + mục "đã cân-nhắc→BÁC". Chỉ acts **AGENT-MEMORY corpus** (lead hot-feed/carry ⇒ NHƯỜNG `lead-gap-auditor`).
- 🧮 **harness-audit** (monitor **trio-memory**, INFORM-only, **+S141**) — con **KIỂM**: đọc **run-folder PIN đích-danh** → verdict ĐẠT/TRƯỢT per-claim + falsify-log + **re-chạy ≥2 số load-bearing**. 🔴 CẤM tự tìm "run mới nhất", CẤM ĐẠT-ảo.
- 🔎 **ctx-audit** (monitor **lớp trí-nhớ MỀM** — vai-3 vòng Ctx, INFORM-only, **+S153** adopt `0df10df4`) — SOI-CHUỖI `_mind-s-<N>.md` @2 bookend (hình-B, máy TRƯỚC vai): @open block-0-nội-dung-thật + carry ý-treo + gieo mồi-ngầm · @close bất-biến-chuỗi-đếm-ĐĨA + chấm mồi + KIỂM-VẾT vai-1/vai-2 (hồi-tố đầy-đủ = fallback khi phiên 0-pause/0-tiep). PIN fail-closed; `_mind` vắng ⇒ NO-OP-có-khai. 🔴 KHÁC 2 vai H24 (chúng soi lead-SURFACE; bộ-ba Ctx soi TỆP lớp-mềm).
- 🔎 **ctx-curator** (vai-1 vòng Ctx, INFORM-only, **+S153 OWNER-VETO hub-form 3-vai**) — KIỂM bản NHÁP block @MỖI `/pause` (5 khoản ngữ-nghĩa, SAU máy-draft; carve-out duy nhất của `pause.md §1`); trả CHỈ văn bản `CTX-CURATOR: DAT|SUA|SKIP-CO-KHAI`.
- 🔎 **ctx-verifier** (vai-2 vòng Ctx, INFORM-only, **+S153 OWNER-VETO**) — ĐỐI-CHIẾU 4-khoản (B-vs-`next:` TIN-SỔ-MÁY · C-vs-bản-đồ · D-chưa-đổi-nhãn · con-trỏ) + BẢN NẠP-LẠI ≤15 dòng @MỖI `/tiep`, kết bằng `LEAD-PHAI-NHAC-LAI:` (bằng-chứng nội-dung sàn khoản 3).
- 🔴 **Bộ-ba trio-memory = trục CHÍNH-HỆ-MEMORY, KHÁC H1/H2/H24/reviewer** — chạy **TUẦN TỰ** eval→refine→audit, **AUTO 1 vòng/phiên giữa 2 bookend (owner @S151 — 🧊 consent-gated S141 superseded)**; nghi-thức đầy-đủ ở **§2.1.9** (đầu phiên) / `session-end §L.b(k)` (cuối phiên).
- 🔴 **2 vai H24 = trục KHÁC H1/H2, KHÔNG gộp:** H1 = tooling-freshness · H2 = harvest-integrity · **H24 = soi chính LEAD**. Class-flag lấy từ **enum ĐÓNG** `lead_self_audit.flag_classes` (`.claude/agent-memory/memory-budget.json`) — **vai KHÔNG tự chế class**. Nhịp = `h24_cadence` (cùng file), **KHÔNG chạy mỗi phiên**.
- Task match delegate criteria (ACCEPT) → BẮT BUỘC delegate (xem `.claude/agents/README.md` decision tree)
@ -349,4 +353,13 @@ Plan cha: [tên]
---
## Phase 3.5 — Ctx soft-memory @open (adopt thư `0df10df4` @S153 — sàn khoản 1 "ghi tươi ở cửa mở phiên"; 🔴 ăn từ phiên sau restart CLI)
> "Trước tiên" = **trước lần dừng đầu tiên** (hub §2: đặt CUỐI nghi-thức mở — nội dung giàu nhất chỉ tồn tại SAU khi các vòng kiểm đã báo xong). Vết ủy quyền 4 quyết (35)(36)(37)(38): OWNER-DELEGATED → ENGINE-PROPOSED → LEAD-DECIDED @S153 (`memory-budget.json → _mind_ctx_kb_set`); anh veto = 1 edit.
1. **Lead Write `_mind-s-<N>.md`** từ [`session-mind-template.md`](../templates/session-mind-template.md) — block-0 **nội-dung THẬT** (≥1 thứ máy-khuôn-không-tự-sinh: tên 1 ý D / 1 E-verdict — metadata ts/hash KHÔNG tính): **A** findings bootstrap · **B** hướng phiên + vì-sao + nhánh-đã-loại · **C** delta bản-đồ suy-nghĩ · **D** carry ý-treo từ `_mind` phiên trước + ý mới anh vừa nêu (+nhãn) · **E** dòng-sống wave @open.
2. `python scripts/session_ctx.py mind-check --session <N>` (~140-300ms; TRƯỢT ⇒ sửa trước khi đi tiếp).
3. **Spawn `ctx-audit` @open** (vai-3 vòng Ctx — AUTO hình-B, INFORM-only — **máy TRƯỚC vai**: bắt lỗi rẻ trước, đốt tiền sau) — PIN path `_mind` + run-folder bookend; lead scribe `sub-ctx-audit-open.md` **NGAY khi trả** + **seed diary `agent-memory/ctx-audit/` CÙNG lượt** (C11(b) sẽ FLAG diary-0-delta nếu quên — datum T3 @S153).
> 🔄 **OWNER-VETO @S153 — hub-form 3-vai** (anh bác (38)(a), chốt "Build đủ 3 vai như hub"): vòng Ctx = **`ctx-curator`** (vai-1, KIỂM nháp @MỖI `/pause` — carve-out `pause.md §1`, wire @`pause.md §2.6(C-bis)-2bis`) · **`ctx-verifier`** (vai-2, ĐỐI-CHIẾU+NẠP @MỖI `/tiep` — wire @`tiep.md §3-ter`) · **`ctx-audit`** (vai-3, SOI-CHUỖI 2 đầu — đây). Núm hạ tần suất vai-1/vai-2 = quyền anh (1 câu).
**Trigger sau Phase 3:** Em main đợi user input task cụ thể. Sub-agent spawn theo decision tree khi ACCEPT criteria match.

View File

@ -166,6 +166,7 @@ Tín-hiệu **YẾU NHẤT**, dùng cuối. 🔴 **`porcelain` rỗng KHÔNG ph
- **Đọc (form HUB, chuẩn @S148):** có `.claude/sessions/session-<N>/` → đọc **`_context-s-<N>.md`** — đó là **bối-cảnh cộng-dồn** (§(a) STOCK-map pointer + §(b) FLOW append-only: mọi entry `### PAUSE-<k>` theo thứ-tự, kèm dòng `> anh:` verbatim). Marker `_pause-*.md`/`_tiep-*.md`**5 trường máy**, đọc để biết `window-ordinal` + `head-sha`, KHÔNG chứa narrative.
🧊 **Legacy ≤S147:** thư-mục không có `_context-s-<N>.md` ⇒ đọc **TẤT CẢ** `pause-*.md` theo thứ-tự thời-gian (form cũ gộp marker+narrative). Nhận-để-đọc, **CẤM viết mới** kiểu đó. 🔴 **Đây là lane CỘNG-DỒN, khác WAL** — WAL là sổ **mạch-sống ghi-đè ≤40 dòng** (liếc-một-cái-là-biết); context-map là **tích-luỹ, không ghi đè**. Đọc context-map **KHÔNG** thay việc chạy `verify:` — ground-truth vẫn thắng (§3).
- **Đọc lớp MỀM** *(adopt `0df10df4` @S153 — sàn khoản 3; 🔴 ăn từ phiên sau restart CLI)*: có `_mind-s-<N>.md` ⇒ đọc **TỪ TRÊN XUỐNG** (block trên cùng giàu nhất — chiều NGƯỢC `_context`) + chạy `python scripts/session_ctx.py mind-check --session <N>` (~140-300ms, KHÔNG chặn — lỗi thì khai rồi đi tiếp).
- **Ghi biên-nhận — 🔴 THỰC-HIỆN SAU §3** (đọc ở đây, ghi sau khi reconcile xong; **bắt buộc**): tạo **`_tiep-<i>.md`** (`<i>` = `max(_tiep-*)+1`) — đúng **5 trường ~200B**, y khuôn `_pause-<i>.md` (xem [`pause.md §2.6`](pause.md)): `ts` · `head-sha` · `window-ordinal` · `jsonl-hint` · `account-label`.
🔴 **Marker là MÁY, không phải bài luận** — kết-quả reconcile (lệch gì so `chain:`, `next:` đang chạy) thuộc về **`_context-s-<N>.md`**, không nhồi vào marker. *(Bản S148 đầu ghi `resume-S<nn>-<ts>.md` 2,5KB narrative — sai form, đã gỡ.)*
- 🔴 **Vì sao bắt buộc:** biên-nhận này là **đối-ứng cân-sổ** của tín-hiệu **ORPHAN-L ⑤** (§0). Thiếu nó ⇒ sổ lệch ⇒ lần sau **KÊU** ⇒ hỏi lại anh. Hỏng về phía *hỏi thừa* = an-toàn; nhưng ghi đủ thì sàn mới **im đúng**.
@ -178,6 +179,8 @@ Tín-hiệu **YẾU NHẤT**, dùng cuối. 🔴 **`porcelain` rỗng KHÔNG ph
> **§3-bis — 🧾 in MASTER-CHECKLIST (cập-nhật từ WAL đã reconcile ở §3; VIEW derive tươi, KHÔNG file nguồn):** derive từ WAL (đã ground-truth-reconcile) + HANDOFF —
> - **vừa-xong** (mục vừa chuyển `[!]`→`[x]` khi reconcile) · **vẫn-treo** (`[!]` / `[ ]` còn lại) · **chờ-anh — 🔢 BẮT BUỘC ĐÁNH SỐ** (anh trả lời bằng số).
> 🔴 **Checklist = VIEW derive tươi — CẤM tạo file checklist nguồn-đôi (sàn-3).**
>
> **§3-ter — 🧠 BẢN NẠP-LẠI lớp mềm ≤15 dòng** *(adopt `0df10df4` @S153 — sàn khoản 3 CÓ BẰNG-CHỨNG NỘI-DUNG; 🔴 ăn từ phiên sau restart CLI; 🔄 OWNER-VETO @S153: 4-khoản đối-chiếu + bản-nạp-lại nay do VAI-2 `ctx-verifier` sản xuất — hub-form 3-vai anh chốt)*: **spawn `ctx-verifier`** (máy `mind-check` full chạy TRƯỚC ở §2.6; PIN {`_mind` · `_context` · WAL-đã-reconcile-§3}) → vai trả 4-khoản đối-chiếu (**B vs `next:` — LỆCH ⇒ TIN SỔ MÁY + cờ** · C vs bản-đồ · D-đã-định-đoạt-chưa-đổi-nhãn · con-trỏ theo verdict máy) + **BẢN NẠP-LẠI ≤15 dòng** kết bằng dòng `LEAD-PHAI-NHAC-LAI: <tên-ý-D> · <E-verdict>`. Lead **PHẢI NHẮC LẠI** đúng các chi tiết đó trong báo-cáo đầu (chi tiết chỉ-biết-nếu-đã-đọc — "đã nạp" suông KHÔNG tính, metadata ts/hash KHÔNG tính); verdict 1-dòng của vai ghi vào biên-nhận (vết). Vai vắng/SKIP ⇒ lead tự chạy 4-khoản (fallback, khai rõ). **+ nạp NỀN RÚT-GỌN theo khoá `tiep_reload`** (`memory-budget.json` — B1: CẤM chép danh-sách tệp vào đây; ước ~40-60K tok input cache-được, quyết (37)(b) — nạp NỀN vẫn là việc LEAD, vai-2 chỉ lo lớp mềm).
## 4. Mục `[!]` dạng `wf:` → nhánh recovery-workflow
Nếu mục dở là một dòng `wf:` (chết giữa workflow) → relaunch **ĐÃ-CẮT-GỌT**, KHÔNG chạy lại từ đầu: