Files
solution-erp/.claude/workflows/runs/2026-07-12-h22-wal-adopt/sub-task-0.md

56 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sub-task-0 — D3: tạo 2 command file `/pause` + `/tiep` (Harness-22 WAL session-continuity)
**Role:** implementer (Write tool) · **Scope:** CHỈ 2 file MỚI + file này. Không đè gì.
**Nguồn FROZEN đã đọc:** `broadcasts/inbox/2026-07-11-Governance-harness-22-wal-session-continuity.md` (§4 dòng 101-120 + §6 dòng 130-140). KHÔNG tự đọc spec-file (nhận phần liên-quan qua prompt).
**Format mẫu:** `.claude/commands/send-email.md` dòng 1-4 (frontmatter `description:` + `argument-hint:`).
## Deliverables (2 file MỚI — đều `??` untracked, xác-nhận không đè)
| File | Dòng | Nội-dung |
|---|---|---|
| `.claude/commands/pause.md` | 47 | `/pause` — chốt điểm dừng chủ-động, 5 bước tuần-tự + bất-biến + con-trỏ `/tiep` |
| `.claude/commands/tiep.md` | 42 | `/tiep` — recovery MỘT đường, 4 bước + nhánh `wf:` + khối CẤM |
> Cả 2 file tự-động đăng-ký thành slash-command (hệ báo skill `pause`/`tiep` xuất-hiện sau Write) → frontmatter hợp-lệ, well-formed.
## Port-fidelity map → broadcast (trung-thực, không bịa)
### pause.md ← §4 phần `/pause` (broadcast dòng 103-111)
- Bước 1 (dòng 15-17) ← BC 105: NGỪNG spawn; sắp-xong <~2' → chờ+harvest-liền; còn lâu → KHÔNG chờ, WAL `[!]` đủ trường, workflow = dòng `wf:` 5-trường (port nguyên `wf:<mục-đích> run= runId= args= done=k/N harvested=no`).
- Bước 2 (dòng 19-21) ← BC 106: flush dirty; ghi-chú-dở dài để run-folder/work-state, KHÔNG nhét vào WAL.
- Bước 3 (dòng 23-27) ← BC 107 + §2 (BC 34-37): chain kèm BẰNG-CHỨNG · `next:` 1 mệnh-lệnh · `verify:` lệnh chạy-được cho từng `[!]` · **ghi-đè toàn-file ≤40 dòng · CẤM secret**.
- Bước 4 (dòng 29-32) ← BC 108: commit ĐÍCH-DANH (WAL + path persist + file dở) msg `wal: pause` · **TUYỆT ĐỐI KHÔNG `git add -A`** · KHÔNG push [Dropbox `.git` cloud-sync = local durable].
- Bước 5 (dòng 34-42) ← BC 109: báo goal / mục `[!]` đầu / workflow bỏ lại / "an-toàn để thoát, đổi acc, tắt máy" → DỪNG HẲN.
- Bất-biến (dòng 45) ← BC 111: commit bước-4 TRƯỚC tuyên-bố bước-5.
- Con-trỏ (dòng 47) ← §7 mục 5 (BC 154): "Nối lại = `/tiep` (MỘT đường recovery duy-nhất)".
### tiep.md ← §4 phần `/tiep` (BC 113-120) + nhánh `wf:` §6 (BC 130-140)
- Bước 1 (dòng 14-15) ← BC 115: đọc WAL; không tồn-tại / chain toàn `[x]` → "không có mạch dở" **DỪNG SẠCH**.
- Bước 2 (dòng 17-20) ← BC 116 + SE-tailor N9: chạy TOÀN BỘ `verify:` **VÀ** đọc `git status` + disk run-folder (per-turn≠per-task: returns mất được nhưng per-agent-file trên đĩa còn) — đây là delta SE thêm theo prompt, so chain.
- Bước 3 (dòng 22-24) ← BC 117: LỆCH → TIN GROUND-TRUTH (sửa WAL, báo lệch, rồi mới chạy) · KHỚP → thực-thi từ `next:`, nối chain thứ-tự.
- Bước 4 (dòng 26-32) ← BC 118 + §6 (BC 137-138): mục `wf:` → recovery-workflow: đọc run-folder + `## taskList snapshot` trong run.md; grep run-id trong log-phiên (glob — grep ĐÍCH-DANH, KHÔNG nạp toàn transcript); harvest-hồi-tố partial-honest; **RELAUNCH đã-cắt-gọt chỉ task CÒN LẠI + memory-pack DẪN-XUẤT-LẠI TƯƠI (CẤM snapshot pack cũ)**; resume-by-run-id = bonus SAME-SESSION-ONLY, CẤM claim cross-session.
- Khối CẤM (dòng 38-40) ← BC 120: CẤM giả-định bước xong nếu `verify:` không chứng-minh · **CẤM nạp lại transcript cũ** (WAL+ground-truth đủ; thiếu → HỎI anh).
- Field `session:` (dòng 42) ← BC 120: khác phiên = BÌNH-THƯỜNG (use-case); chỉ cảnh-báo nếu `updated:` mới hơn lúc phiên hiện-tại bắt đầu (dấu phiên song-song).
## Dead-ends né được (checklist X)
- **X4** (rewrite commit đã-push): pause.md chỉ "KHÔNG push" + rationale Dropbox-durable. KHÔNG hề nhắc squash/reset/rewrite (đó là §5 delta = task khác). ✅
- **X8** (WAL append / >40 / secret): pause.md bước-3 ghi rõ "ghi-đè toàn-file (KHÔNG append), cứng ≤40 dòng, CẤM secret". ✅
- **X5** (claim hook 'đang chạy'): 2 file KHÔNG nhắc Stop-hook. Commit bước-4 là commit THỦ-CÔNG của lệnh `/pause`, độc-lập hook. ✅
- **X1/X7/X10:** không đụng hmw-mode/BƯỚC-0.5/ultra-*/hmw.js; file MỚI nên không renumber gì. ✅
- **Isolation:** git-status → chỉ `.claude/commands/pause.md` + `.claude/commands/tiep.md``??` do tôi tạo; các M/?? khác (session-*.md, .gitattributes, hooks/, settings.json, CLAUDE.md, rules.md…) = sibling D-task, KHÔNG do tôi. ✅
## Acceptance (row #3) — grep-count evidence
| Check | Kết-quả | Line |
|---|---|---|
| pause.md frontmatter `description:` | PASS | L2 |
| pause.md `wal: pause` ≥1 | PASS (3×) | L2, L29, L30 |
| pause.md `git add -A` ≥1 (câu CẤM) | PASS (1×) | L31 "TUYỆT ĐỐI KHÔNG `git add -A`" |
| pause.md trỏ `/tiep` | PASS (5×) | L47 con-trỏ cuối "Nối lại = `/tiep`" |
| tiep.md frontmatter `description:` | PASS | L2 |
| tiep.md `transcript` ≥1 (câu CẤM) | PASS (2×) | L40 "CẤM nạp lại transcript cũ" + L29 |
| tiep.md `ground-truth` ≥1 | PASS (3×) | L17, L40 (lowercase), L2 |
| tiep.md `wf:` ≥1 | PASS (3×) | L2, L26, L27 |
| tiep.md nhánh WAL-rỗng-dừng-sạch | PASS | L15 "chain toàn `[x]` → 'không có mạch dở' → DỪNG SẠCH" |
| tiep.md `git status` ≥1 | PASS (4×) | L19, L23, L40, L2 |
**Verdict: 10/10 acceptance PASS.** 2 file well-formed (auto-đăng-ký slash-command), port trung-thực, isolation sạch.