# _context-s-15 — SESSION-MODEL narrative durable

<!-- SCAFFOLD-META: sID=15 | ts-moc=2026-08-10T21:32:10+07:00 | nguon-ts=git log -1 --format=%cI @ HEAD d4799ddd | generator=scripts/session-scaffold.ps1 -->

> **sID (LOGIC-session) = 15.** 1 phiên-logic (bootstrap → work → sweep) trải nhiều window vật-lý nối bằng `/pause`+`/tiep`. Window = 0-ID governance; **sID = đơn-vị LOGIC**. Folder pin: `.claude/sessions/session-15/`.
> ts-mốc khởi-tạo = **2026-08-10T21:32:10+07:00** (nguồn: `git log -1 --format=%cI @ HEAD d4799ddd`) — mốc git-committer, KHÔNG phải wall-clock tuỳ-tiện.
>
> 🔴 **CẤM rewrite / tự-tóm block FLOW** (chống self-summary lossy). FLOW = append-only @`/pause`-only; vượt cap `session_ctx_kb` → distill SECTION CŨ thành pointer/gist, TUYỆT ĐỐI KHÔNG sửa entry verbatim đã ghi.

---

## (a) STOCK-map — reference-not-copy

> Bảng pointer tới nguồn durable. **KHÔNG copy nội-dung** (chống drift). Điền @bootstrap; row session-specific append dưới các row stable.

| Tên | Path | 1-dòng |
|---|---|---|
| WAL | `.claude/WAL.md` | mạch-việc-dở máy-state (H-22) — nối bằng `/tiep` |
| AI-context | `CLAUDE.md` | AI agent context SOLUTION_ERP (scope + quick-rules) |
| Trạng-thái | `docs/STATUS.md` | canonical mọi con-số (mig · bảng · test · roster) |
| Bàn-giao | `docs/HANDOFF.md` | brief 5 phút + bảng số chờ-anh + carry |
| Sổ đếm H24 | `.claude/governance/.session-counter.json` | counter + nhịp lead-self-audit |
| Thư cross-project | `broadcasts/_index.md` | INBOUND directed (`outbox/se`) — fan-out `outbox/all` KHÔNG vào đây |
| _(session-specific)_ | _(path)_ | _(1-dòng — append @bootstrap phiên này)_ |

---

## (b) FLOW — append-only @pause-only

> 🔴 **CẤM rewrite FLOW.** Mỗi `/pause` APPEND đúng 1 entry theo SCHEMA dưới (đặt DƯỚI dòng `FLOW-START`). Entry cũ = immutable. FLOW = SOURCE durable của "đang-đến-đâu"; bảng-đầu-việc = VIEW derive từ đây (single-source).

<!-- ENTRY-SCHEMA (guidance, KHONG phai entry that — /pause command dien; parser real-entry match `^### PAUSE-\d+`, placeholder `<k>` khong false-match):

### PAUSE-<k> <ts ISO-8601>

> anh: <tin-nhan anh VERBATIM — copy nguyen-van, KHONG paraphrase>

**(1) quyet-dinh da CHOT** / **(2) delta con SONG** / **(3) con-tro**

```json
{ "machine_block": "python scripts/session_ctx.py machine-block --session <N> --json" }
```
-->

<!-- FLOW-START — entries append bên dưới dòng này, mới nhất ở CUỐI -->

### PAUSE-1 2026-08-11T12:13:20+07:00

> anh: /pause
> anh (P0 chen giữa pause, kèm 2 ảnh eoffice trắng): "fix nhanh cái này" · "sao refresh lại ra màn hình trắng"

**(1) quyết-định đã CHỐT trong cửa này:**
- Bookstart L15 chạy TRỌN MỘT LƯỢT (12 vai, sau khi anh bắt lỗi lead dừng 0.7(b) — PN-002) → push `9b3c0edb`.
- **YC-028 giải trọn 4 tầng:** T1 disk 0-byte (dọn ~30GB cache automation + AUTO_CLOSE OFF ×3 DB + gỡ nén 4 file template #88) · T2 orphan-sshd của chính lead (kill 3 con → A/059 47s→0,38s; tự khai, RCA) · T3 Gitea tầng-app câm nuốt push (restart + workflow_dispatch → run **#486 ship trọn**: gate 680 EXACT · bundle rotate ×2 · marker 10/10) · T4 RAM (pin `max server memory` unbounded→**1200MB**, PLE 522→1123).
- FE tách "404 thật ⟂ lỗi hệ thống + thử lại" 5 site ×2 app **LIVE prod**. Sổ: +YC-028 +PN-002 (YC-027 nhắc→2) · gotcha **#89/#90/#91** (STATUS row 88→91) · RCA `YC028-S189` + `SCORE-T2-S189` + `H24-RESET-S189` · commits `92d8215a` + `f8f2ef96` (đều pushed, 0 tồn).
- Khối chấm điểm = **KHÔNG ĐO ĐƯỢC** (A8) — tầng-3 bác phép đếm tầng-2, tầng-1 0 lỗi.
- **P0 SAU deploy #486 (chen giữa /pause):** bundle CI crash `React null useState` — build LỆCH local >100KB CÙNG commit ⇒ BUILD-ENV runner hỏng (workspace + node_modules ghi dở đêm disk-0; npm-cache-wipe 11:05 của lead có thể góp — khai cả hai). **Hotfix scp dist LOCAL lành đè fe-user+fe-admin → SỐNG** (form render + marker=1 + JS 200/1.691.607B), outage ~15'. KHÔNG revert (source lành). Vá-gốc = dọn workspace runner + dispatch verify — CỬA NGOÀI-GIỜ.

**(2) delta còn SỐNG:**
- (3B) NGOÀI GIỜ: bật `[cron.archive_cleanup]` Gitea + `compact /u` `Vietreport_Master` (offline ~10s) + báo đội VIETREPORT: DB họ đang bị nén NTFS.
- Đo lại A/059 sau 30-60' (gitea re-index lắng — số 0,58s hiện đo giữa lúc nó nhai nền) · cân nhắc `AsSplitQuery` GetPurchaseEvaluationQuery:867 (wave BE riêng có test+review).
- 9 mục chờ-anh: (76)(77)(78)(79) · (89) a/b/c · (74) · value_protect · lật ô YC-008↔YC-010 · YC-025 review GĐ3 · "ổn rồi" mở W8.
- NEXT-em: ring5@open · YC-027 đủ-cửa (2/4→4/4) · regex `**🆕**` detector · [carry:sentinel-truoc-bu] · [carry:reset-doi-het] (đã có ca thật H24-RESET-S189) · w7b-inbox-param.

**(3) con-trỏ:** `runs/2026-08-10-S189-bookstart-open/` (15 artifact: 12 bookstart + cicd 2-vòng + synthesis) · `.claude/WAL.md` · HANDOFF khối S188 (3 mục NEXT-em đã lật ✅ @S189) · ctx-curator verdict: **SUA-9** (return #53 → resume-đòi-verdict; 9 điểm toàn grep+control-dương — nặng nhất: P0 0-hit nhà bền · vá-gốc runner không vào đường-tiếp · verbatim anh lọt vào _mind; đã áp trọn 9/9 vào MIND-1 + chính entry này).

```json
{ "machine_block": "anchor=f8f2ef96 (YC-028 đóng trọn) · changed_files=[] — mọi việc cửa-sổ ĐÃ COMMIT trước pause; dirty lúc pause = 10 MEMORY seed C2 + marker/snapshot/mind (vào wal: pause)" }
```


### PAUSE-2 2026-08-12T22:52:12+07:00

> anh: /pause
> (window-2 L15 — nối bằng /tiep-1 @15:12, chạy trọn YC-029 + YC-030 rồi anh gõ /pause. Tin-nhắn cuối anh trước pause = 5 phán quyết Q1-Q5 + "Xong thì push và deploy lên nhé. Để tao kiểm tra" — verbatim ở sổ YC-030 + PAUSE này.)

**(1) quyết-định đã CHỐT trong cửa này:**
- **YC-029 "SOLTUON-12-08-2026" TRỌN** — pipeline 6 bước anh chỉ định (invest-Fable 3-chặng → clone-review 3-lane → style-Fable ×2 → clone-style 4-lane → tổng-hợp GO_WITH_NOTES → fan-out Opus 5 wave). Ship 5 wave: W4 `1cc16a2d` (17 leaf admin) · W1 `09ebd20e` (bug menu A+B chết + slice HD-*) · W2 `7b291014` · W3 `ed3b39ff` (pendingMe đổi-endpoint) · W5 `2ae62f3f` (xoá đồng-khuôn KHKK 5-nấc + 13 test-before). Chuỗi review bắt **2 BLOCKER tiền-đề** + 1 anchor-code-chết trước khi viết 1 dòng.
- **YC-030 (anh phán Q1-Q5 + push-deploy) TRỌN** — Q1 layout KHKK-thuần (bác hoán-đổi W2, remake ContractListPanel) · Q2 Select-loại giữ · Q3 port 3 món [Mig 73 `AddContractEndedByLevelFinalize` + ApproveV2 finalize + DTO/body nở + máy-duyệt dời panel-3 ×5 host] · Q4 = xác nhận W5 (approver KHÔNG xoá, chỉ trả-lại) · Q5 thay QT-HD-V2-001 bằng 7 HD-* (data-op Dev+prod). Commit `69860362` (BE) + `59cb1217` (FE) + `091073f9` (docs).
- **DEPLOY PROD PASS** — đĩa VPS dọn 4.7→26.6GB (repo-archive 13GB cache thuần + IIS-log, an toàn #89) TRƯỚC push → CI #600 (run_number #487) success ~11m → **test 697** (45+652) · Mig73 prod top · bundle rotate ×2 byte-match CI↔prod · smoke 200/401 · #91-guard OK. cicd-monitor PASS 6/6 + **lead re-verify độc-lập KHỚP** (bundle mới live + cũ chết-SPA + Mig73 prod). Q5 prod: QT-HD-V2-001→0/0 (2 HĐ pin đều ZZTEST-K8 terminal) ⇒ type-3 selectable = 7 HD-*.
- Sổ: +YC-029 +YC-030 (YC-025 lật đóng — review = lượt này) · gotcha giữ 91 · test canonical 680→697 (chỉ-cicd-verify) · STATUS +row S190.
- #53 ~13 lượt cửa-sổ (invest ×2 · review lens-2 · style-fe · workers B6 3/6 · WQ3-BE · WQ3b) — **mất 0 việc**, artifact-first + lead-đo-đĩa-commit-on-behalf. Vòng review đối-kháng trả cổ tức đều (be2 đo LocalDB CanDelete phá claim policy).

**(2) delta còn SỐNG:**
- CỬA NGOÀI-GIỜ (anh gật giờ): bật `[cron.archive_cleanup]` Gitea (chống #89 tái phát — repo-archive lại 13GB, cần restart service dùng-chung VIETREPORT ⇒ để tránh cắt CI) + compact Vietreport_Master + báo VIETREPORT.
- 🔴 **NÉN 2 agent-memory over-cap** (`investigator-codebase` 23.1KB · `reviewer` 25.4KB VƯỢT 24.4KB read-limit) — nợ sau seed C2 lượt này; làm ở lượt có ngân sách (LT3 bậc-3, không nén giữa /pause).
- carry: `[carry:w5-host-ondeleted]` (5 host clear-selection sau xoá) · `[carry:w8-delete-policy]` (policy DELETE gắn khi "ổn rồi" + grant Drafter cùng commit) · gotcha #92-candidate ĐÓNG được (root-cause runner = disk KHÔNG phải node_modules — deploy.yml tự-xóa fresh mỗi run) · un-delete a79dd579 Dev nếu muốn sạch.
- chờ-anh (tồn trước): (76)(77)(78)(79) · (89) · (74) · value_protect · lật ô YC-008↔YC-010 · tồn (22)(67)(72).

**(3) con-trỏ:** `runs/2026-08-12-S190-soltuon-dieu-chinh-hd/` (~28 artifact: invest 3-chặng + review 7-lane + style 6 + workers 8 + spec-v2.3 + style-gate-v2 + b5-plan + verify-local + cicd-deploy) · commits `1cc16a2d..091073f9` (8 [CLAUDE]) · prod eoffice `BIN1bEGo`/admin `D2FHMRPX` · Mig 73 · sổ YC-029/030. · **ctx-curator @pause-2 verdict: SUA-5** (nhãn cron→mới-nêu · con-trỏ-bó thêm "ổn rồi W8" · con-trỏ E workers · carry ring2 · số 693-not-680 — áp trọn 5/5; mind-check full 10đạt/0T).

```json
{ "machine_block": "python scripts/session_ctx.py machine-block --session 15 --json → anchor=091073f9 @22:10:10 · changed_files=5 (WAL + cicd-MEMORY + 3 run-artifact) — code YC-029/030 ĐÃ COMMIT+PUSH+DEPLOY trước pause; dirty lúc pause = 7 MEMORY seed C2 + marker/mind/snapshot (vào wal: pause)" }
```


---

## (c) STOCK-touched — máy-derive

> Bảng file-đã-đụng trong phiên, **máy-derive** từ `git diff --name-only <anchor>..HEAD` @pause/snapshot. KHÔNG điền tay.

| File | Δ | Ghi-chú |
|---|---|---|
| _(anchor `f8f2ef96` = commit cuối cửa-sổ)_ | 0 | máy-derive @PAUSE-1: `changed_files=[]` — mọi thay đổi đã commit TRƯỚC pause (3 push: `9b3c0edb`·`92d8215a`·`f8f2ef96`); dirty-lúc-pause (10 MEMORY seed + marker) vào `wal: pause`, KHÔNG hiện ở đây (giới hạn anchor..HEAD chỉ thấy phần committed) |
| _(anchor `091073f9` @PAUSE-2)_ | 5 | máy-derive `machine-block --session 15`: WAL · cicd-monitor/MEMORY · 3 run-artifact (sub-cicd-deploy · sub-wq3-test · sub-wq3b-fe). 🔸 Code YC-029/030 (25 file src+fe+tests) ĐÃ COMMIT+PUSH+DEPLOY TRƯỚC pause ⇒ nằm ngoài `anchor..HEAD` (anchor = commit docs cuối); dirty-lúc-pause = 7 MEMORY seed C2 + marker/mind/snapshot → vào `wal: pause` |
