| 1 | # Eroca Thanh — CLAUDE.md TOÀN CỤC (user-global) |
| 2 | |
| 3 | > Load MỌI session, mọi cwd (kể cả NGOÀI `~/`). Mỗi dòng = thuế token vĩnh viễn → tối giản tàn nhẫn. |
| 4 | > Chỉ chứa: (1) bản đồ tầng · (2) sàn an toàn cho session ngoài `~/` · (3) chính sách tinh lọc. KHÔNG chép luật tầng dưới — chỉ trỏ. |
| 5 | |
| 6 | ## 1. Bản đồ hệ CLAUDE.md (cascade theo cwd — Read đúng tầng, đừng suy từ dòng mô tả) |
| 7 | |
| 8 | | Tầng | Path | Load khi | |
| 9 | |---|---|---| |
| 10 | | Toàn cục (file này) | `~/.claude/CLAUDE.md` | MỌI session, mọi cwd | |
| 11 | | Workspace (luật đầy đủ) | `~/CLAUDE.md` | cwd dưới `~/` (gần như mọi phiên) | |
| 12 | | Build local | `~/Development/CLAUDE.md` (+ sub-folder) | cwd dưới `~/Development/` | |
| 13 | | Web repos | `~/Projects/CLAUDE.md` (+ mỗi repo có CLAUDE.md/AGENTS.md) | cwd dưới `~/Projects/` | |
| 14 | | Ops state | `~/Operations/CLAUDE.md` (+ sub-folder) | cwd dưới `~/Operations/` | |
| 15 | | Vault | `~/Documents/EROCA_WIKI/CLAUDE.md` (sibling: EROCA_WIKI2/ · Obsidian/) | cwd trong vault | |
| 16 | |
| 17 | **Cách nạp (verified tại nguồn 17/7/26 — KHÔNG suy đoán):** mọi tầng từ root → cwd đều nạp lúc mở phiên và **NỐI GỘP** (*"concatenated into context rather than overriding each other"*), tầng gần cwd đọc SAU CÙNG. ⛔ **KHÔNG có luật ưu tiên** — 2 tầng dặn ngược nhau → *"Claude may pick one arbitrarily"* ⇒ **thứ tự KHÔNG dọn hộ mâu thuẫn; phải tự giữ các tầng không đá nhau.** ⚠️ cwd NGOÀI `~/` → CHỈ file này load. CLAUDE.md ở thư mục CON của cwd = on-demand. |
| 18 | Memory: `MEMORY.md` **TỰ NẠP mỗi phiên** (mặc định bật; 200 dòng/25KB đầu) — chỉ file chủ đề trong `memory/` mới on-demand. Path `~/.claude/projects/-Users-erocathanh/memory/`, fact granular 4-type. Fact 1-project/tool/nội-dung → memory, KHÔNG vào file này. |
| 19 | 📌 **Bằng chứng neo cứng** (URL có thể chết, bản chụp thì không): `~/.claude/docs-snapshots/claude-code-memory.md` — tải **17/7/2026 12:09 BST**, nguồn `https://code.claude.com/docs/en/memory.md`. Nghi 2 dòng trên → **đọc bản chụp, đừng đoán**. *(Sửa 17/7 sau khi bản cũ bị bắt sai 2 chỗ: "tầng sâu override tầng rộng" + "memory không tự nạp" — cả hai đều ngược tài liệu gốc.)* |
| 20 | |
| 21 | ## 2. Sàn an toàn — hiệu lực CẢ khi ngoài `~/` |
| 22 | |
| 23 | > ⚠️ Bản rút gọn cố ý (ngoại lệ DUY NHẤT của luật "chỉ trỏ"). SoT đầy đủ ở `~/CLAUDE.md` — sửa thì sửa NGUỒN trước, rồi mới đồng bộ dòng dưới. |
| 24 | |
| 25 | - **Header v2:** mọi response mở đầu `FROM: claude-<name> / TO: <recipient>` (ack ≤5 từ miễn). |
| 26 | - **Bảo mật + phá huỷ (no override):** KHÔNG in/commit giá trị secret (full/partial/prefix/suffix) · KHÔNG `rm -rf` ngoài scope · `push --force` main · `reset --hard origin/main` · `db reset`. |
| 27 | - Trước khi mutate/post/deploy/commit ở cwd ngoài `~/` → `Read ~/CLAUDE.md` lấy quy ước đầy đủ (pointer = lệnh đọc THỦ CÔNG, không auto-load). |
| 28 | |
| 29 | ## 3. Chính sách tinh lọc (trả lời: có nên đưa dần rule từ `~/CLAUDE.md` lên global?) |
| 30 | |
| 31 | CÓ — nhưng là sự kiện **HIẾM**; mặc định rule ở lại `~/CLAUDE.md` (nơi ươm, đổi hằng ngày). Chỉ thăng cấp khi đủ **CẢ 3**: (a) cross-context — đúng cả ngoài `~/`; (b) tần suất cao — lặp nhiều phiên/agent; (c) ổn định — hết tiến hoá. |
| 32 | |
| 33 | - **Chống trùng:** thăng cấp = để 1 POINTER ở global, chi tiết single-source ở tầng gốc. KHÔNG chép full 2 nơi → drift (vd có thật: header v2 đang nằm cả `~/CLAUDE.md` lẫn `~/Projects/CLAUDE.md`). |
| 34 | - **Chống phình:** file này ≤ ~35 dòng nội dung; vượt = sai thiết kế, rà lại — KHÔNG nới trần. Rà chung nhịp `/consolidate-memory` hoặc `/kaizen-thang`, KHÔNG tạo nhịp bảo trì mới. |
| 35 | - **Propose-not-autosave:** agent ĐỀ XUẤT, Owner duyệt diff — agent KHÔNG tự sửa file global. |
| 36 | |