[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:
@ -89,6 +89,20 @@ Em main đọc `.claude/WAL.md` (sổ mạch-việc-dở H22 — ghi-đè ≤40
|
||||
- 🔴 **Ai cấp `<N>` (khác "ai tạo thư-mục" — đừng lẫn):** **CHỈ `/session-start`** mới **MỞ SỐ MỚI** (`max(<N> hiện có) + 1`). `/pause` · `/tiep` **KHÔNG BAO GIỜ tự tăng `<N>`** — chúng chỉ **tạo thư-mục cho `<N>` ĐANG MỞ** nếu nó chưa có trên đĩa (ca "cửa đầu chưa kịp scaffold"). Không có `<N>` nào đang mở ⇒ dùng `<N> = max+1` **và ghi 1 dòng khai** trong khối đó là số được cấp ngoài `/session-start`.
|
||||
- 🧊 **Vá mâu-thuẫn @S146:** bản trước ghi *"Ai mở `<N>` mới: **CHỈ** `/session-start`"* trong khi [`pause.md §2.6`](pause.md) ghi *"chưa có thì đây là cửa đầu ⇒ **tạo** `session-<N>/`"* ⇒ **hai file nói ngược nhau về quyền tạo**. Gốc lỗi = **gộp hai khái niệm khác nhau** (*cấp SỐ* ⟂ *tạo THƯ-MỤC*) vào một câu. Nay tách đôi: **cấp số = độc-quyền `/session-start`** · **tạo thư-mục = idempotent, ai gặp trước thì tạo**. Hub chỉ ràng vế thứ hai.
|
||||
|
||||
**(a-bis) 🔴 DANH-MỤC FILE trong thư-mục — form HUB, owner chốt @S148 (*"đối ứng đúng chính xác như này"*, ảnh `session-109`; đối-chứng đĩa hub `AI_INFRA/.claude/sessions/session-102..109`):**
|
||||
|
||||
| file | vai | ai ghi (canonical — B1, KHÔNG chép schema về đây) |
|
||||
|---|---|---|
|
||||
| `_context-s-<N>.md` | **narrative durable**, 1 file/phiên-logic · §(a) STOCK-map pointer + §(b) **FLOW append-only** (`### PAUSE-<k>` + dòng `> anh:` VERBATIM) · 🔴 CẤM rewrite/tự-tóm | append @[`pause.md §2.6`](pause.md) · đọc @[`tiep.md §2.6`](tiep.md) |
|
||||
| `_pause-<i>.md` | **marker máy** ~200B, 5 trường (`ts`·`head-sha`·`window-ordinal`·`jsonl-hint`·`account-label`) | [`pause.md §2.6`](pause.md) |
|
||||
| `_tiep-<i>.md` | marker máy, **cùng 5 trường** | [`tiep.md §2.6`](tiep.md) |
|
||||
| `_snapshot-<i>.md` | chụp-nhanh không-dừng | ⏳ **CHƯA CÓ ở SE** — cần lệnh `/snapshot` `[carry:snapshot-cmd]` + `[carry:pause-autosnap]` |
|
||||
| `_end` | **chốt-kết, KHÔNG đuôi `.md`** · `markers:` chụp cân-sổ lúc đóng | [`session-end.md §6.3-bis`](session-end.md) |
|
||||
|
||||
- 🔴 **`<i>` đánh số TUẦN TỰ** trong thư-mục (`max+1`) — **KHÔNG** nhãn `S<nn>`, **KHÔNG** timestamp trong tên. Thứ-tự đọc được từ tên, ts nằm *trong* file.
|
||||
- 🔴 **TÁCH marker ⟂ narrative** là điểm khác lớn nhất so với form SE cũ (gộp cả hai vào `pause-S<nn>-<ts>.md`). Marker cho MÁY đọc, narrative cho NGƯỜI/phiên-sau đọc.
|
||||
- 🧊 **Form cũ = LEGACY, CẤM viết mới**; Sàn-3 ⑤ vẫn **nhận** (dual-accept, [`tiep.md §0`](tiep.md)) vì `session-1` còn dùng — đúng luật retire *"giữ khi CÒN người thụ-hưởng"*.
|
||||
|
||||
**(b) Đo TRƯỚC khi tin — `.gitignore` (đo @S146, KHÔNG suy):**
|
||||
```bash
|
||||
git check-ignore -q .claude/sessions/session-1 ; echo "exit=$?" # → exit=1
|
||||
@ -103,6 +117,13 @@ git check-ignore -q .claude/sessions/session-1 ; echo "exit=$?" # → exit=1
|
||||
- ✅ **`session_ctx_kb` (trần ngân-sách context-phiên) = 64 — OWNER CHỐT TƯỜNG-MINH @S146.** Canonical = [`memory-budget.json`](../agent-memory/memory-budget.json) → `session_ctx_kb` (+ `_session_ctx_kb_owner_set`); **B1 — KHÔNG chép số ra đây**, dòng này chỉ TRỎ. Đơn-vị **KB**, code đọc **nhân 1024**.
|
||||
🔴 **Vẫn là GHOST-WIRE, đừng đọc thành "đã wire":** đo @S146 **0 script đọc khoá** (hit duy-nhất trong `scripts/` là **comment** `nhip-no-probe.ps1:42`; đối-chứng `pull_warn_days` **có** reader thật `:190`). Có số ≠ có hành-vi. Ai wire sau phải **đọc khoá**, không hardcode.
|
||||
|
||||
## 📋 BƯỚC 0.9 — Kéo thư cross-project (cửa VÀO 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`.
|
||||
|
||||
> 🔗 **Luật nhịp đầy-đủ (4 cửa · fail-soft · quan-hệ với `pull-cach`) = canonical [`check-email.md`](check-email.md) §"Nhịp chạy — 4 CỬA PHIÊN".** 🔴 **B1 — mục này CHỈ TRỎ + GỌI, CẤM chép luật sang đây.**
|
||||
> 🔴 **KHÔNG chặn bootstrap:** không có thư ⇒ 1 dòng đi tiếp; lỗi ⇒ `check-email loi (khong chan)` rồi đi tiếp. Kéo **TRƯỚC Phase 1 READ** là cố ý — thư mới có thể đổi chính kế-hoạch phiên mà Phase 1 sắp dựng.
|
||||
|
||||
## Phase 1 — READ (load context)
|
||||
|
||||
Đọc theo thứ tự, KHÔNG skip:
|
||||
|
||||
Reference in New Issue
Block a user