# sub-task-1 — EDIT 2 session-command (D4+D5 spec) — H22 WAL session-continuity **Role:** implementer (Write/Edit) · **Run:** 2026-07-12-h22-wal-adopt · **Scope FILE giao:** `.claude/commands/session-start.md` + `.claude/commands/session-end.md` (KHÔNG file khác). ## Việc đã làm (3 point-insert, KHÔNG renumber — X10 né) ### (1) session-start.md — CHÈN BƯỚC 0.7 MỚI - **Vị-trí:** ngay SAU khối BƯỚC 0.6 (dòng flip-chain `…BƯỚC 0.6 probe MỖI phiên…`) và TRƯỚC `## Phase 1 — READ`. Hunk `@@ -44,6 +44,15 @@` = insert-only +9 dòng. - **Heading:** `## 📋 BƯỚC 0.7 — WAL-check mạch-việc-dở (H22 — adopt S111)` (dòng 47). - **Nội-dung:** em main đọc `.claude/WAL.md` → nhánh (a) file-vắng/chain-rỗng/toàn-`[x]` → báo 1 dòng "WAL sạch — không có mạch dở" rồi tiếp Phase 1 (no-wait); nhánh (b) chain có `[!]`/`[ ]` → BÁO goal + mục `[!]` đầu + câu "gõ `/tiep` để nối, hoặc bảo em bootstrap tiếp bỏ mạch" → **CHỜ anh chọn** = NGOẠI-LỆ CHỜ DUY-NHẤT của no-wait (BƯỚC 0 GIỮ no-wait). - **B1 con-trỏ-canonical:** ghi rõ bước này CHỈ LÀ CON-TRỎ, recovery-logic viết ở MỘT CHỖ = `[.claude/commands/tiep.md](tiep.md)` (KHÔNG copy verify/relaunch vào đây). Lý-do chặn TRƯỚC Phase 1 READ = tiết-kiệm read-set ~368K khi anh chọn /tiep. - Thứ-tự BƯỚC sau chèn: 0 → 0.5 → 0.5b → 0.6 → **0.7 (47)** → Phase 1 (56). Không đụng 0.5/0.5b/0.6. ### (2a) session-end.md — CHÈN §5.0 MỚI (TRƯỚC §5.1) - **Vị-trí:** giữa `## Phase 5 — COMMIT (release)` và `### 5.1 Release + commit`. Hunk `@@ -108,6 +108,12 @@` = insert-only. - **Heading:** `### 5.0 Squash wal:-trailing chưa-push (H22 — TRƯỚC commit-chốt)` (dòng 111). - **Nội-dung:** `git log --format=%s origin/main..HEAD` → đếm K = số subject LIÊN-TỤC bắt đầu `wal:` từ HEAD xuống (DỪNG khi gặp subject khác); K=0→skip; K>0→`git reset --soft HEAD~K` gộp vào commit-chốt §5.1. - **Hard-safety (X4 né — KHÔNG gợi rewrite pushed):** phạm-vi = CHỈ commit CHƯA-push (ahead-of-remote) → **"KHÔNG BAO GIỜ rewrite commit đã-push"**; wal: kẹp sâu (sandwiched dưới commit thường chưa-push) → GIỮ NGUYÊN chấp-nhận noise. Biên push-chết-giữa-phiên-trước: HEAD=chốt-cũ-chưa-push → đếm dừng tại đó, chốt cũ KHÔNG fold, push lần này. - **AS-10 backstop:** +1 dòng "squash xong = điểm **review-diff wal-paths**" (hook đã commit local residual-write nếu có → review diff path WAL/agent-memory/runs tại đây trước chốt; push vẫn gated em-main). - ⚠️ `origin/main..HEAD` chỉ xuất-hiện 1 LẦN (trong lệnh git log); dòng "Phạm-vi" reword "khoảng ahead-of-remote" KHÔNG lặp literal → thoả acceptance grep=1. `reset --soft` cũng 1 lần duy nhất. ### (2b) session-end.md — CHÈN §6.4 MỚI (SAU §6.3, TRƯỚC footer) - **Vị-trí:** sau dòng cuối §6.3 (`…"N/A (no infra adoption this session)".`) và TRƯỚC `---` + footer `**Trigger sau Phase 6:**`. Hunk `@@ -134,6 +140,10 @@` = insert-only. - **Heading:** `### 6.4 Reset WAL (H22 — bước CUỐI)` (dòng 143; footer dòng 149). - **Nội-dung:** ghi-đè `.claude/WAL.md` về template rỗng (`updated`/`session`/`branch`=`—` · `goal`=`(trống — không có mạch dở)` · `chain`=`(rỗng)` · `next`/`verify`=`(trống)`); note Stop-hook sẽ commit reset thành wal-commit trailing sau turn cuối = vô-hại, phiên sau squash ở §5.0. Framing future-tense "hook sẽ commit" (X5 né — KHÔNG claim hook đang-chạy phiên này). ## Acceptance evidence (grep-count) | # | Check | Kết-quả | Verdict | |---|---|---|---| | 4a | session-start `grep -c 'BƯỚC 0.7'` | 1 | PASS | | 4b | `'CHỜ'` trong vùng 0.7 (dòng 52, giữa 47…56) | 1 (≥1) | PASS | | 4c | git-diff KHÔNG chạm 0.5/0.5b/0.6/Phase-1 | insert-only, 0 deletion | PASS | | 5a | session-end `grep -c 'origin/main..HEAD'` | 1 | PASS | | 5b | `grep -c 'reset --soft'` | 1 | PASS | | 5c | `'KHÔNG'` gần `'rewrite'` (dòng 113 §5.0) | ≥1 | PASS | | 5d | `grep -c 'review-diff wal-paths'` | 1 (≥1) | PASS | | 5e | §6.4(143) SAU §6.3(135) TRƯỚC footer(149) | đúng thứ-tự | PASS | ## Isolation (B6 audit) - `git diff --stat` file giao: `session-end.md +10`, `session-start.md +9` = 19 insertion, insert-only (grep `^-[^-]` diff = 0 content-deletion). - Tôi CHỈ Edit 2 file giao + Write file này (`sub-task-1.md`). KHÔNG đụng file nào khác. - `git status` toàn-repo có nhiều file M/?? (pause.md, tiep.md, hooks/, settings.json, CLAUDE.md, harness-11-engine.md, rules.md, .gitattributes, broadcasts/_index.md, 2 README) = **sibling-task cùng wave H22 (shared tree)**, KHÔNG phải write của tôi. ## Dead-ends né (theo spec) - X1: KHÔNG đụng hmw-mode.on / BƯỚC 0.5/0.5b/0.6 / ultra-*.md. - X4: wording §5.0 khẳng-định "KHÔNG BAO GIỜ rewrite commit đã-push", reset chỉ khoảng chưa-push. - X5: §6.4 dùng "hook SẼ commit" (future) — KHÔNG claim hook đang-chạy phiên này. - X8: §6.4 reset = ghi-đè template rỗng ~8 dòng (≤40), no secret. - X10: 0.7/5.0/6.4 = số MỚI chèn-điểm, KHÔNG renumber mục cũ. - KHÔNG commit (em-main commit cuối phiên). - KHÔNG đọc spec-file (nhận qua prompt); chỉ đọc broadcast FROZEN + 2 file giao.