[CLAUDE] Docs: S148 — session-model port form hub + /check-email 4 cửa + Sàn-3 dual-accept
Session-model (owner chốt "đối ứng đúng chính xác như hub"):
- Form hub: _context-s-<N>.md (STOCK-map + FLOW append-only + STOCK-touched)
+ _pause-<i>/_tiep-<i> marker 5-trường + _snapshot-<i> + _end (thay closed.md)
- Port /snapshot + scripts/session_scaffold.py (near-verbatim)
+ scripts/session_ctx.py TRIMMED CÓ KHAI (chỉ machine-block + secrets-sweep;
KHÔNG port jsonl/overhead/cap-getter vì chưa có caller = ghost-wire)
- session-2 migrate sang form hub; session-1 giữ legacy (FROZEN)
Sàn-3 ORPHAN-L:
- DUAL-ACCEPT hub + legacy; glob pause-* KHÔNG khớp _pause-1.md nên không đếm đôi
- VÁ bug có sẵn từ S146: chốt-kết ĐÓNG TRỌN thư-mục (bản cũ c=1 chỉ tha 1 pause,
lệch chính câu session-end §6.3-bis vẫn nói "mọi pause")
- Fault-inject 10/10 hai chiều + anti-Goodhart
/check-email:
- Wire 4 CỬA phiên (session-start/tiep/session-end/pause), 2 CHẾ-ĐỘ:
DÒ ~5ms ở cửa dừng-nối (ràng buộc BINDING hub goi-chot §3) ⟂ KÉO ở bookend
- DÒ quét 2 kênh + định tuyến: outbox/se -> /check-email · outbox/all -> /adap-apply
- STAGE-2: 10 thư fan-out verify 2 tuyến 10/10 -> inbox/ai_infra/; backlog root = 0
HANDOFF re-stamp: #1 ĐÓNG (trio đã chạy S144) · #2 đổi trục · #3 anh chốt (a)
+ 4 mục mới (13)-(16); carry #15/#17 đóng, #16 đóng nửa (khai rõ vế còn hở)
H24 tick S147->S148: counter 21->22 CLEAN
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -21,6 +21,14 @@ Em main PHẢI echo **TOÀN BỘ nội dung command body này** (đầy đủ Ph
|
||||
> **Vì sao ở BƯỚC 0, không muộn hơn:** phiên bị cắt **giữa lúc đóng** là ca nguy-hiểm nhất — WAL đã flush một phần, chưa push, trông như sạch. Đặt dấu TRƯỚC mọi flush ⇒ phiên kế **thấy `closing:` treo** và biết là bị cắt (Sàn-3 bậc-MẠNH ③, `tiep.md` §0.b).
|
||||
> **Net-zero:** §6.4 vốn **LUÔN chạy** ⇒ thêm 1 dòng xoá = 0 chi-phí. Acceptance: chạy no-op trọn-vẹn ⇒ `grep -c '^closing:' .claude/WAL.md` = **0**; cắt giữa chừng ⇒ phiên kế **thấy** dấu.
|
||||
|
||||
## 📋 BƯỚC 0.5 — Kéo thư cross-project (cửa RA 1/2 — owner chốt S148)
|
||||
|
||||
**DÒ 2 kênh** rồi **KÉO đầy-đủ** theo định-tuyến (`se>0` → `/check-email all` · `all>0` → `/adap-apply`) — **TRƯỚC Phase 1 FLUSH**.
|
||||
|
||||
> 🔗 **Luật nhịp đầy-đủ = canonical [`check-email.md`](check-email.md) §"Nhịp chạy — 4 CỬA PHIÊN".** 🔴 **B1 — CHỈ TRỎ + GỌI, CẤM chép luật.**
|
||||
> 🔴 **Vì sao TRƯỚC flush, không sau:** closeout **ghi sổ** (STATUS · HANDOFF · session-log · carry). Thư về sau khi sổ đã ghi thì **lỡ mất kỳ này** và nằm chờ tới cửa vào kế. Kéo trước ⇒ thư mới kịp vào đúng bản ghi của phiên.
|
||||
> 🔴 **KHÔNG chặn closeout:** lỗi ⇒ `check-email loi (khong chan)` → đi tiếp Phase 1. Sàn-2 sentinel ở BƯỚC 0 đã đặt TRƯỚC bước này ⇒ cắt giữa chừng vẫn phát-hiện được.
|
||||
|
||||
## Phase 1 — FLUSH (sub-agent memory)
|
||||
|
||||
**Điều kiện:** Chỉ xử lý con đã spawn trong session. KHÔNG spawn mới chỉ để flush (agent đã update MEMORY khi return).
|
||||
@ -360,13 +368,16 @@ git push origin main # → git.baocaogiaoduc.vn/vietrep
|
||||
|
||||
### 6.3-bis 🔒 Chốt-kết `_end` — đóng băng phiên-LOGIC (owner chốt @S146 "giống hub")
|
||||
|
||||
> 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 = `closed.md`. 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.
|
||||
> 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>/closed.md`** cho `<N>` đang mở — **FROZEN, ghi MỘT lần, CẤM sửa về sau**. Nội dung tối-thiểu **4 trường**:
|
||||
`phien-logic: L<N>` · `cua-so: S<a>..S<b>` (các nhãn vật-lý thuộc phiên-logic này) · `closeout-commit: <sha>` · `ket-qua: <1-3 dòng arc đã đóng>`.
|
||||
- **Cân-sổ (khoá vòng ORPHAN-L):** sau khi ghi, **mọi `pause-*.md` trong thư-mục coi như ĐÃ ĐỐI-ỨNG** — `closed.md` đóng vai đối-ứng cho khối `pause` cuối chưa có `resume-*`. ⇒ [`tiep.md §0`](tiep.md) block **⑤ ORPHAN-L** hết kêu oan.
|
||||
- 🔴 **Idempotent:** `closed.md` đã tồn-tại ⇒ **NO-OP, CẤM ghi đè** (phiên-logic đã khép; closeout chạy lại không được "mở lại rồi khép lại").
|
||||
- 🔴 **Thư-mục `session-<N>/` KHÔNG tồn-tại ⇒ NO-OP im-lặng** — phiên này không mở phiên-logic nào (vd vào thẳng bằng `/tiep`, chưa từng `/session-start`). **CẤM tự tạo thư-mục chỉ để ghi `closed.md`** — tạo-rồi-đóng-ngay là **sổ rỗng giả**, đúng loại ĐẠT-ảo mà fail-safe NO-OP khắp harness đang cấm.
|
||||
- **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.
|
||||
🧊 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`.
|
||||
- 🔴 **Idempotent:** `_end` (hoặc `closed.md` legacy) đã tồn-tại ⇒ **NO-OP, CẤM ghi đè** (phiên-logic đã khép; closeout chạy lại không được "mở lại rồi khép lại").
|
||||
- 🔴 **Thư-mục `session-<N>/` KHÔNG tồn-tại ⇒ NO-OP im-lặng** — phiên này không mở phiên-logic nào (vd vào thẳng bằng `/tiep`, chưa từng `/session-start`). **CẤM tự tạo thư-mục chỉ để ghi `_end`** — tạo-rồi-đóng-ngay là **sổ rỗng giả**, đúng loại ĐẠT-ảo mà fail-safe NO-OP khắp harness đang cấm.
|
||||
- **Add đích-danh** ở §5.1 (thư-mục phiên nằm trong hook-4-path nên hook cũng nuốt, nhưng **đừng dựa hook để chốt** — cùng lý-lẽ `pause.md §2.6`).
|
||||
🔸 **Meld-forward (floor hub, miếng nền thứ-3) — CHƯA kiểm tại SE:** hub ràng *"commit mang thư-mục phiên được **nhập-tiến về trước** khi squash, KHÔNG bị bỏ rơi"*. §5.0/§5.2 của SE squash `wal:`-trailing bằng `reset --soft` ⇒ nội-dung **ở lại INDEX** nên **về lý là không mất**; nhưng **chưa có phép đo riêng** cho `.claude/sessions/`. ⇒ khai **CHƯA-ĐO**, không claim kín.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user