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>
14 KiB
wal: pause ĐÍCH-DANH rồi DỪNG HẲN — an-toàn để thoát / đổi acc / tắt máy. Nối lại DUY-NHẤT bằng /tiep.
argument-hint: (không tham số)
/pause — chốt điểm dừng chủ-động (Harness-22 WAL session-continuity)
Mục-đích: chốt trạng-thái làm-việc hiện-tại xuống đĩa một cách an-toàn, để có thể thoát / đổi tài-khoản / tắt máy mà KHÔNG mất trí-nhớ đã có và KHÔNG phải đốt lại token cho phần đã xong. Cặp với
/tiep(đường recovery duy-nhất). 🔴 restart Claude Code sau khi tạo/sửa command.md(no hot-reload).
Thực-hiện tuần-tự 5 bước sau; trong lúc chạy KHÔNG nhận việc mới:
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.
- 🔴 Carve-out DUY NHẤT (OWNER-VETO @S153 — mirror hub O-1(a)): vai
- 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òngwf: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).
- Sắp-xong (ước
2. Flush trí-nhớ dirty xuống đĩa
- Đẩy mọi trí-nhớ đang dirty (chưa ghi) xuống đĩa (agent-memory / run-folder).
- Ghi-chú-dở DÀI (context, phân-tích giữa chừng) để ở run-folder / work-state, KHÔNG nhét chi-tiết dài vào WAL — WAL phải giữ tính "liếc một cái là biết".
2.6 Ghi context-block vào thư-mục phiên-LOGIC (S146 — lane CỘNG-DỒN, cặp với /tiep §2.6)
🔴 FORM HUB (owner chốt @S148 "đối ứng đúng chính xác như hub") — TÁCH marker ⟂ narrative, KHÔNG gộp 1 file như form SE cũ:
(A) Marker _pause-<i>.md — <i> = số TUẦN TỰ trong thư-mục (max(_pause-*)+1), KHÔNG nhãn S<nn>, KHÔNG timestamp trong tên. Đúng 5 trường, ~200B, không thêm bớt:
ts: <ISO-8601 +07:00>
head-sha: <full sha, git rev-parse HEAD>
window-ordinal: <thứ mấy trong phiên-logic>
jsonl-hint: <project-dir>/<session-uuid>
account-label: none
(B) Narrative → APPEND vào _context-s-<N>.md (một file DUY NHẤT/phiên-logic, cộng dồn) — thêm đúng 1 entry ### PAUSE-<k> <ts> dưới FLOW-START:
- 🔴 Dòng đầu entry =
> anh: <tin-nhắn anh VERBATIM>— chép nguyên văn, CẤM paraphrase. Không có tin-nhắn ⇒ ghi(THIẾU — lý do), CẤM dựng lại từ trí nhớ. - Rồi 3 mục cũ: (1) quyết-định đã CHỐT · (2) delta còn SỐNG · (3) con-trỏ.
- 🔴 FLOW append-only, entry cũ IMMUTABLE — CẤM rewrite, CẤM tự-tóm (chống self-summary lossy). Vượt
session_ctx_kb⇒ distill SECTION CŨ thành pointer, KHÔNG sửa entry verbatim.
(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):
- 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. 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. Spawnctx-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ậnCTX-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 entryPAUSE-<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).- Chèn TOP dưới
<!-- MIND-TOP -->; số hiệu = ĐẾM block TRƯỚC chèn (block-0 chiếm số 0). 🔴_mindmới-nhất-ở-TRÊN — NGƯỢC chiều_contextFLOW (mới-nhất-ở-CUỐI), đừng chép khuôn bên kia. mind-checkfull. 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_mindchưa có (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 spawnctx-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-blockvốn đã phải chạy ở (C) cho §(c) STOCK-touched./pausecũng vốn đã commit sẵn ở bước 4. - 🔸 Ranh giữ khai: hub KHÔNG ràng 1 pause = 1 snapshot (đo đĩa hub:
session-102pause=3/snap=5 ·session-107pause=2/snap=1). SE chọn auto-snap-tại-pause là quyết-định SE, không phải floor hub — ai thấy đắt thì gỡ, đã có số để cãi.
🧊 Form SE cũ pause-S<nn>-<ts>.md (gộp marker+narrative) = LEGACY, CẤM viết mới. Sàn-3 ⑤ vẫn nhận nó (dual-accept, tiep.md §0) vì session-1 còn dùng — đúng luật retire: gỡ nhánh legacy khi tập di-sản RỖNG, giữ khi CÒN người thụ-hưởng.
<N>= phiên-LOGIC đang mở — xemsession-start.mdBƯỚC 0.8.- 🔴 Scaffold idempotent (owner chốt @S146 "giống hub"): thư-mục chưa có ⇒ TẠO; đã có ⇒ DÙNG LẠI, CẤM đè. Chạy lại nhiều lần vô hại.
- 🔴 NHƯNG
/pauseKHÔNG BAO GIỜ tự tăng<N>— cấp-số là độc-quyền/session-start(BƯỚC 0.8, canonical; B1 — mục này chỉ TRỎ)./pausechỉ tạo thư-mục cho số đang mở. Không có số nào đang mở (vào thẳng bằng/tieprồi/pause, chưa từng/session-start) ⇒ dùngmax+1và ghi 1 dòng khai trong khối:N-cap-ngoai-session-start: <N> (ly-do: <...>)— để<N>không bao giờ xuất-hiện mà không ai biết nó ở đâu ra.
- 🔴 ACCUMULATE — CẤM ghi đè, CẤM sửa khối cũ. Mỗi
/pause= một file mới. (Ghi đè = mất chính thứ mà lane này sinh ra để giữ.) - 3 trường (đúng khuôn VC-3 draft): (1) quyết-định đã CHỐT trong cửa này · (2) delta còn SỐNG (việc/nghi-vấn mang sang cửa sau) · (3) con-trỏ run-folder / commit / file.
- 🔴 Ranh với WAL — KHÔNG nhập một: WAL = mạch-sống, ghi-đè, cứng ≤40 dòng (liếc-một-cái-là-biết, bước 3 dưới). Context-map = bối-cảnh tích-luỹ, không cap 40 dòng. Ghi-chú-dở DÀI thuộc về đây, KHÔNG nhồi vào WAL.
- CẤM secret (thư-mục này sẽ được commit — cùng kỷ-luật WAL bước 3).
- 🔸 Hook
wal-flush.ps1đã phủ.claude/sessions/(path thứ-4, S146) ⇒ khối này tự vàowal:commit ở turn-boundary. Vẫn PHẢI add đích-danh ở bước 4 (đừng dựa vào hook để chốt điểm dừng — hook là lưới, không phải nghi-thức).
2.7 Kéo thư cross-project (cửa RA 2/2 — owner chốt S148)
DÒ 2 kênh (outbox/se + outbox/all × 6 repo) — TRƯỚC khi ghi WAL (bước 3), để thu-moi: se=X all=Y kịp vào carry:/context-map nếu có.
🔴 CHỈ list + so id. KHÔNG copy · KHÔNG hash · KHÔNG python — /pause là cửa dừng, ràng-buộc BINDING của hub (goi-chot §3) cấm làm nó đắt lên. Kéo thật = việc của bookend.
🔗 Luật nhịp đầy-đủ = canonical
check-email.md§"Nhịp chạy — 4 CỬA PHIÊN". 🔴 B1 — CHỈ TRỎ + GỌI, CẤM chép luật. 🔴 KHÔNG chặn điểm dừng: lỗi ⇒check-email loi (khong chan)→ đi tiếp bước 3./pausetồn-tại để dừng an-toàn; một bước kéo thư hỏng không được phép giữ anh lại.
3. Cập-nhật .claude/WAL.md đúng schema
chain:— đầy-đủ mọi mục trạng-thái ([x]đã-xong ·[!]đang-dở ·[ ]chưa-làm), KÈM BẰNG-CHỨNG là một lệnh / đường-dẫn / hash chứng-minh trạng-thái đó (KHÔNG mô-tả suông).next:— đúng một mệnh-lệnh cụ-thể: làm gì tiếp theo.verify:— ít nhất một lệnh CHẠY ĐƯỢC cho từng mục[!], để/tiepchạy được và đối-chứng.- 🔴 WAL ghi-đè toàn-file (KHÔNG append), cứng ≤ 40 dòng. CẤM secret (WAL sẽ được commit): không key, không token, không credential.
3.5 TICK counter (H24 — TRƯỚC commit bước 4; Item 1(c) S135)
- Tick
.claude/governance/.session-counter.jsontheo contract (idempotent — NO-OP nếu cùng nhãn-phiên/cùng HEAD) — 🔴 CON-TRỎsession-start.md §2.1.8, CẤM chép logic tick (B1 canonical). - 🔴 TRƯỚC commit bước 4 ⇒ delta counter được gộp vào commit
wal: pause(file NGOÀI hook-4-path nên PHẢI add đích-danh ở bước 4).
4. Commit ĐÍCH-DANH — message wal: pause
git addđích-danh đúng các path: WAL + path persist (agent-memory / run-folder /.claude/sessions/session-<N>/— context-block bước 2.6, S146) +.claude/governance/.session-counter.json(🔴 M-7: tick bước 3.5 nằm TRONG commitwal: pause— file ngoài hook-4-path nên PHẢI add đích-danh; thiếu dòng này thì claim "tick nằm trong wal: pause" SAI) + file dở, rồigit commit -m "wal: pause".- 🔴 TUYỆT ĐỐI KHÔNG
git add -A— chỉ add đúng path cần chốt, tránh nuốt file rác / secret ngoài ý-muốn. - KHÔNG push. (Repo trong Dropbox → thư-mục
.gitđược cloud-sync, nên commit local vẫn durable qua tắt-máy / đổi-acc.)
5. Báo-cáo ngắn rồi DỪNG HẲN
Báo đúng sáu ý:
- goal — mạch việc đang dở là gì.
- mục
[!]đầu-tiên — bước dở gần nhất. - workflow bỏ lại (nếu có) — dòng
wf:đã ghi. - "an-toàn để thoát, đổi acc, hoặc tắt máy".
- dòng-nợ (Item 2 S135): gọi
powershell.exe -ExecutionPolicy Bypass -File scripts/nhip-no-probe.ps1in dòng-nợ 4-vế (nhịp-kiểm đọc post-tick bước 3.5). 🔴 probe KHÔNG chặn điểm dừng: lỗi → inprobe-loi (khong chan)→ đi tiếp, VẪN tuyên-bố "an-toàn để thoát".🔗 Predicate C7 đầy-đủ (probe nào được phép chạy ở điểm dừng) = canonical
harness-11-engine.md§N.8. 🔴 B1 — dòng này CHỈ TRỎ, CẤM chép predicate sang đây. - 🧾 MASTER-CHECKLIST rút-gọn (S138): derive từ WAL vừa ghi (bước 3) + HANDOFF — in Tầng-1 mỗi arc 1 dòng
{đóng · đang · chưa}+ đếm 4-nhóm (xong/đang-dở/chờ-anh/chưa-làm) + liệt nhóm 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).
Rồi DỪNG HẲN, KHÔNG nhận việc mới.
🔒 Bất-biến: commit ở bước 4 xảy ra TRƯỚC tuyên-bố ở bước 5 — chết ngay sau khi tuyên-bố "an-toàn để thoát" cũng KHÔNG mất gì (điểm dừng đã nằm trên đĩa).
👉 Nối lại = /tiep (MỘT đường recovery duy-nhất — kể cả khi user gõ "làm tiếp" bằng text thường, KHÔNG tự recovery cách khác).