---
description: /pause — chốt điểm dừng chủ-động (Harness-22 WAL session-continuity). Ghi mạch việc dở vào .claude/WAL.md ≤40 dòng + commit `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.
- 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`).

## 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".

## 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 `[!]`**, để `/tiep` chạ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.json` **theo 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-3-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/governance/.session-counter.json`** (🔴 M-7: tick bước 3.5 nằm TRONG commit `wal: pause` — file ngoài hook-3-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ồi `git 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 năm ý:
1. **goal** — mạch việc đang dở là gì.
2. **mục `[!]` đầu-tiên** — bước dở gần nhất.
3. **workflow bỏ lại** (nếu có) — dòng `wf:` đã ghi.
4. "**an-toàn để thoát, đổi acc, hoặc tắt máy**".
5. **dòng-nợ (Item 2 S135):** gọi `powershell.exe -ExecutionPolicy Bypass -File scripts/nhip-no-probe.ps1` in dòng-nợ 3-vế (nhịp-kiểm đọc post-tick bước 3.5). 🔴 **probe KHÔNG chặn điểm dừng**: lỗi → in `probe-loi (khong chan)` → đi tiếp, VẪN tuyên-bố "an-toàn để thoát".

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).
