# S189→S191 — Phiên-LOGIC L15: YC-028 cứu prod 4 tầng · YC-029/030 điều chỉnh GĐ3 ship #600 · Cửa ngoài-giờ

> Windows: S189 (10-11/08, bookstart + YC-028) · S190 (12/08, YC-029/030 + deploy) · S191 (13/08 00:22+, /tiep + finish + cửa ngoài-giờ). Ghi @S191 — S189 trước đó vô chủ (ctx-verifier cờ-12).
> Mạch máy: `.claude/WAL.md` · run-trace `runs/2026-08-10-S189-bookstart-open/` (15 artifact) + `runs/2026-08-12-S190-soltuon-dieu-chinh-hd/` (~28 artifact) · context `sessions/session-15/`.

## S189 (2026-08-10→11) — YC-028: "xóa bớt 1 tý để các bạn upload load phiếu rồi tính tiếp"

Anh Kiệt báo phiếu `PE/2026/A/059` "ko duyệt được / ko tìm thấy phiếu" — chẩn đoán ra **ổ C VPS 0 byte**. Giải trọn 4 tầng:
- **T1 disk:** dọn ~30GB (cache automation 16,5GB `gitea\data\repo-archive` + npm-cache + IIS-log) + AUTO_CLOSE OFF ×3 DB + gỡ nén 4 file template (#88).
- **T2 orphan-sshd:** 3 con sshd mồ côi của chính lead (ssh|head cắt pipe — #90, tự khai RCA) ăn 3/3 core → kill → A/059 47s→0,38s.
- **T3 Gitea tầng-app câm** nuốt push (#91): 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.
- **P0 chen giữa /pause:** bundle CI crash `React null useState` — build LỆCH local >100KB cùng commit ⇒ BUILD-ENV runner hỏng (workspace ghi dở đêm disk-0). **Hotfix scp dist local lành** đè fe-user+fe-admin → SỐNG, outage ~15'. ~~Root-cause chốt = disk ⇒ #92-candidate đóng~~ → **BÁC @S191 ca-2** (xem dưới): thành **gotcha #92 chính thức**.
- Gotcha **#89/#90/#91** (STATUS row 88→91) · sổ +YC-028 +PN-002 · FE tách "404 thật ⟂ lỗi hệ thống" 5 site ×2 app LIVE.

## S190 (2026-08-12) — YC-029 "SOLTUON-12-08-2026" + YC-030 Q1-Q5 + DEPLOY #600

- **YC-029** 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 B6: 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 RED→GREEN). Ensemble review bắt **2 BLOCKER tiền-đề** lead-solo lọt ("bỏ type=3 trang tự suy" · "BE pendingMe sẵn") + be2 đo LocalDB 12/13 CanDelete=0 phá claim policy trước khi ship.
- **YC-030 (anh phán Q1-Q5 + "Xong thì push và deploy lên nhé"):** Q1 layout KHKK-thuần (bác hoán-đổi, remake `ContractListPanel`) · Q2 giữ Select-loại · Q3 port 3 món [**Mig 73 `AddContractEndedByLevelFinalize`** + ApproveV2 finalize + DTO/body + máy-duyệt panel-3 ×5 host] · Q4 xác nhận W5 (approver HĐ KHÔNG xóa — khác PE, đóng vĩnh viễn) · Q5 thay `QT-HD-V2-001` → 7 `HD-*` (data-op Dev+prod, seeder tắt-từ-lúc-sinh + UPDATE tay). Commit `69860362`(BE) `59cb1217`(FE) `091073f9`(docs).
- **DEPLOY PROD PASS:** dọn đĩa VPS 4.7→26.6GB trước push (repo-archive tái phình 13GB + IIS-log, #89) → CI **#600** success ~11m · test **697** (45D+652I, canonical 680→697) · Mig73 prod-top · bundle rotate ×2 byte-match CI↔prod (eoffice `BIN1bEGo` / admin `D2FHMRPX`) · smoke 200/401 · cicd-monitor **PASS 6/6** + lead re-verify độc-lập KHỚP. Q5 prod: QT-HD-V2-001→0/0 (2 HĐ pin đều ZZTEST terminal).
- #53 ~13 lượt — **mất 0 việc** (artifact-first + lead đo-đĩa commit on-behalf).

## S191 (2026-08-13 00:22+) — /tiep trọn nghi-thức + finish plan + CỬA NGOÀI-GIỜ

- **/tiep YC-027 đủ bước:** Sàn-3 5 tín-hiệu (3 kêu, đều khớp WAL) · verify 6/6 KHỚP (bundle ×2 · Mig73 prod · Q5=7 · smoke 401 · test 697 local) · tick counter 64→65 CLEAN · dòng-nợ `light 5/6 deep 2/1 OVERDUE:deep` (trả ở bookend kế — deep_every=1 @S185) · thư-mới se=0 all=0 · `_tiep-2.md` cân sổ ORPHAN-L · ctx-verifier **13 cờ** (§3-ter).
- **CỬA NGOÀI-GIỜ đóng trọn 00:34 (giờ CI lắng, runner idle-verified):**
  1. Bật `[cron.archive_cleanup]` Gitea (ENABLED+RUN_AT_START+@midnight+24h) — backup `app.ini.bak-20260813-003421`, restart service, verify tầng-app HTTP 200 `v1.24.2` (#91-guard), cron fire ngay (dọn record mồ côi của 13GB đã xóa tay — vô hại).
  2. **Cứu `Vietreport_Master` khỏi RECOVERY_PENDING** — DB VIETREPORT đã chết-treo sẵn vì nén NTFS (#88 ứng nghiệm y kịch bản); OFFLINE → compact /u 2 file → ONLINE. Verify: 3/3 DB ONLINE, đọc thật OK, Compressed=False. Control dương: SolutionErp 97 tables.
  3. Báo VIETREPORT: note `VIETREPORT/docs/2026-08-13-canh-bao-ntfs-compression-db-va-gitea-cron.md` (repo họ không có kênh broadcasts — để untracked cho đội review).
- **Finish NEXT-em bằng ĐO (không làm mù theo claim):**
  - "Nén 2 agent-memory over-cap" = **SAI ĐÍCH** (ctx-verifier cờ-8, lead đối chứng từng byte): investigator 23.148B + reviewer 25.469B đều **DƯỚI** trần `autoinject_cap_bytes` 25.600 ⇒ KHÔNG nén (nén = phá thông tin vô cớ). 🔴 **Nhưng lead đo ĐÚNG BYTE mà đo NHẦM NGƯỜI** (`harvest-curator` F-04 + `lead-gap` FLAG-5 bắt @close): tập over-cap THẬT hôm nay là **3 vai** — `lead-gap-auditor` **28.094** · `ring2-audit` **27.458** · `lead-stale-auditor` **25.966** — khớp đúng máy `nhip-no-probe` cùng phiên in `tran-bo-nho 3`. Cặp lead đi kiểm (investigator/reviewer) là danh-sách NEXT-em **cũ từ S185/S189**, không phải tập hôm nay. Hệ quả đắt: 2/3 vai bỏ sót đều là **nhật ký giám sát H24** ⇒ chính lớp bắt-lỗi mất trí nhớ trước tiên. *(Caveat đơn-vị giữ nguyên: theo KÝ-TỰ thì cả 3 đều dưới ngưỡng — khoá tên `_bytes` nên nghĩa byte đang hiệu lực.)* File từng bị nêu là "duy nhất vượt" = `ring2-audit` 27.458B — vốn nhãn *đang-cãi* (60,1% bất-khả-drain), giữ nguyên chờ thiết kế. reviewer dư 131B = watch.
  - "Un-delete `a79dd579` Dev" = **HẾT CẦN** (đo `SolutionErp_Dev`): seeder tắt-từ-lúc-sinh đã tái tạo QT-HD-V2-001 (Active=0/UserSel=0, Id mới) — Dev đồng hình prod 8 type-3, 0 HĐ mồ côi. Un-delete giờ = row trùng Code, bẩn hơn.
  - ~~Gotcha #92-candidate đóng (root-cause = disk)~~ → **BÁC ngay trong phiên bằng ca-2** (giữ dòng làm vết: claim "đóng được" sống đúng 40 phút — bài *đo-lại-tiền-đề* thắng, nhưng chính claim này cũng do em vừa ghi).
- **Vá bề mặt theo cờ ctx-verifier:** STATUS `:6` (4 mặt chết: 693→697 · "PUSH GOM CHỜ"→#600 · nhãn IN-PROGRESS→ĐÓNG · con-trỏ `:476` chết) · `run.md` S190 bổ nửa sau (B5-kết-quả→B6→YC-030→deploy) · `sub-wq3-be.md` trám on-behalf (skeleton 593B → có đường tái dựng) · dọn stray dir rỗng *(🔴 lượt đầu dọn NHẦM CHỖ — dọn trong `runs/`, stray thật ở `fe-user/.claude/agent-memory/`; `harvest-curator` F-03 bắt, đã dọn đúng @close. Git mù 2 lớp: dir rỗng + `.gitignore:118 fe-*/.claude/`)* · HANDOFF segment mới. Cờ-6 bác (dương giả — carry `pin-max-server-memory-fleet` đã có nhà HANDOFF @S190, vai grep từ khóa spaced).

## Carry/treo sau phiên

- `[carry:w5-host-ondeleted]` (5 host clear-selection sau xoá) · `[carry:w8-delete-policy]` (policy DELETE khi anh nói "ổn rồi") · **3 vai over-cap byte** (`lead-gap` 28.094 · `ring2` 27.458 · `lead-stale` 25.966; ring2 {đang-cãi}) — 🔴 đơn-vị BYTE, theo KÝ-TỰ thì cả 3 dưới ngưỡng · session-log này gánh cả S189 (đã hết vô chủ).
- Chờ anh: **KIỂM PROD GĐ3** (lệch-ý-thì-chỉnh) · tồn (76)(77)(78)(79) · (89) jump-dài · (74) rotate vrapp · value_protect · lật ô YC-008↔YC-010 · "ổn rồi" mở W8 · tồn (22)(67)(72).

## S191 bổ sung 00:50 — P0 LẦN 2: eOffice trắng màn khi anh kiểm → hotfix + gotcha #92 khắc thật

- Anh kiểm prod: *"Admin → tạm ổn. eOffice → vào trắng màn hình"*. Browser đo thật: console `Uncaught TypeError: Cannot read properties of null (reading 'useState')` @ `index-BIN1bEGo.js:8` — **bundle CI #600 crash runtime** dù byte-match + smoke 200 đều xanh @S190.
- ⇒ Giả thuyết "#92 đóng vì root-cause=disk" (em ghi 40 phút trước) **SAI**: file-integrity ≠ runtime; npm-cache runner (di chứng #89) vẫn là nghi phạm — `npm ci` kéo từ cache hỏng thì xóa node_modules cũng vô ích.
- **Hotfix (mirror S189, đã chứng):** build local HEAD (hash `D6lFjgKF` trùng dist 21:54 — determinism control-dương) → scp đè fe-user (GIỮ `BIN1bEGo` trên đĩa = rollback 1s) → verify **runtime**: form login render (`read_page`) + network load `D6lFjgKF` + console load-mới sạch. **eOffice SỐNG.**
- Chẩn admin cùng lò: CI `D2FHMRPX` 1.819.492B vs local `KRJldwaN` 1.780.807B (**lệch 39KB**) — nhiễm nhưng ĐANG SỐNG → không đụng (anh đang kiểm); dist local sẵn nếu anh muốn đồng nhất.
- **Gotcha #92 khắc chính thức** (2 ca đủ chín — docs/gotchas.md, STATUS row 91→92). Ràng buộc nổi ở WAL `next:`: 🔴 **CẤM push code / dispatch CI tới khi runner được vá + verify runtime** — build mới sẽ đè hotfix bằng bundle nhiễm.
- Vá gốc (chờ anh chọn giờ — sẽ rotate bundle prod): dọn `npm cache` SYSTEM + workspace runner → `workflow_dispatch` → cicd-monitor + **smoke runtime** (luật #92(1)) → khi đó mới mở lại đường push code.

## Run-trace đăng ký (Sàn-5)

- `wf: bookend-close run=2026-08-13-S191-bookend-close` — bookend @close S191, 10 vai (H1·H2·2×H24·trio×3·ring1·ring2·ring5·ctx-audit) + 8 máy.
- `wf: soltuon-dieu-chinh run=2026-08-12-S190-soltuon-dieu-chinh-hd` — YC-029/030 5 wave + deploy #600 + vá gốc #92 verify (#488).
