---
name: agent-return-garble-recover
description: "sub trả text memory-curation thay verdict (#53 return-garble) → recover từ agent-memory, KHÔNG re-spawn"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 67157d21-1ead-475d-9a50-cf7f07468583
  modified: 2026-08-07T06:04:25.682Z
---

Sub-agent đôi khi trả về message CUỐI = text bước memory-curation của nó ("Still 18KB, let me trim...", "Memory updated, splice correct...") THAY VÌ verdict/findings của task (#53 return-channel garble). Nhưng WORK + agent-memory diary VẪN ĐÚNG (nó làm task xong, ghi diary chuẩn, chỉ return nhầm text bước cuối). **Recover: đọc `agent-memory/<role>/MEMORY.md` recent-entry lấy verdict thật — KHÔNG re-spawn** (tốn + có thể garble tiếp; hoặc em-main re-do solo cho task cần chắc). Instruction-fix spawn-prompt "🔴 message CUỐI PHẢI là verdict, KHÔNG phải memory-note" GIẢM garble nhưng KHÔNG 100%.

**Why:** S96 ×3 + **S97 ×3 = ×6 tổng** (cicd-monitor = 5/6 = kẻ tái phạm dai). S96: investigator-codebase 1× + cicd-monitor 2×. **S97: cicd-monitor ×3** (#481 "18.7KB above" + #482 "18.1KB trim S79/S93" + #484 "DATA-SEED-PASS keys merge") — ĐỀU garble text trim-memory **DÙ spawn-prompt explicit "return verdict NOT memory-curation"** → instruction-fix **KHÔNG reliable** (bác claim S96 "lần-3 fixed"); recover verdict từ diary (Run #481 + #482 đủ chi tiết: Mig 60 applied + EF-ternary 200-live + bundle) KHÔNG re-spawn. **🔴 Root-cause structural (mới S97):** cicd-monitor MEMORY.md tự đặt target ~17.1KB, mỗi return CHẠM cap → curate-at-return, và "thinking" bước curate = message CUỐI = return value. Fix bền = **giảm áp lực curate** (archive cicd sớm để return KHÔNG trùng curate-step) HOẶC hook tách verdict-return khỏi memory-step — KHÔNG phải instruction. **Chốt:** recover-from-diary = net ROBUST; instruction "return-verdict" chỉ giảm tần suất (persona memory-curation stochastic — giống AS-10 self-write S95). **+ schema-param KHÔNG chặn return-fail (S97 review-workflow):** 2/4 lane (reviewer+investigator) FAIL StructuredOutput DÙ có `schema` ép-call → return-reliability rộng hơn curate-garble; recover từ diary (reviewer) + em-main tự-cover (grep). → lane QUAN-TRỌNG luôn cần fallback recover-diary/em-main-solo, đừng tin schema chặn được 100%. **+ S103 ×3 = ×9 tổng** (investigator recon + 2 review-lane, DÙ schema+nudge). 🔴 **NEW correlation task-shape (S103):** build-workflow lane NARROW-scoped ("viết script X + return schema") **3/3 CLEAN** vs review-workflow lane OPEN-reasoning ("cố phá + phán-xử") **1/3** → **garble ∝ open-ended-reasoning-task, KHÔNG narrow-build** (cùng schema/nudge/model). Lane-B garble-return NHƯNG full-review Ở DIARY → recover-from-diary hoàn-chỉnh (verdict PASS + 2-CONCERN). → **mitigation = N-lane-redundancy (1 survivor phủ redundant core-concern) + narrow-scoped-schema-lane + em-main-recover-partial** (SE adap-request lên AI_INFRA S103). **+ S105 ×2 = ×11 tổng** (tooling-auditor @bootstrap trả NOTE-DỞ-DANG mid-work + investigator BVAAU trả CÂU MỞ ĐẦU — cả 2 reasoning-lane khớp correlation S103; class RỘNG hơn curate-text: return = wrong-slice-of-transcript bất kỳ, kể cả dòng đầu). 🔴 **NEW recover-path (S105): diary TRỐNG (sub chưa kịp ghi entry cho task đó) → SendMessage-RESUME chính agentId trong-session** (context 150K còn sống) với yêu cầu "nhả verdict theo format, KHÔNG investigate thêm" → verdict đầy đủ chất-lượng-cao lần 2 (investigator BVAAU 3-Q RCA hoàn chỉnh, ~3'). Thứ tự recover: **(1) diary → (2) SendMessage-resume in-session → (3) em-main re-do solo.** **+ S110 ×2 = ×13 tổng** (invest + reviewer — CẢ 2 lane Fable-deep-pass engine-đắt, khớp correlation reasoning-lane; return = 1 câu status giữa-chừng). Cả 2 diary TRỐNG → **SendMessage-resume 2/2 SẠCH → path-2 lifetime 3/3** (S105 + S110×2) — resume re-emit verdict đầy-đủ chất-lượng-cao, 0 investigate lại. Path-2 = default khi diary trống, robust hơn dự đoán. (+monitor-return transcript-LOST khác class: S109 cicd + S110 lượt-sáng 2 monitor — work+diary XONG nhưng return không tới context; disk-diary cứu — WATCH tần suất riêng.) **+ S114 ×5 = ×18 tổng** (review-lane + BE + FE + test + cicd — HMW implement + verify workflow, lead=Opus). 🔴 **NEW class WRITE-lane-garble (S114 quan-trọng):** lane GHI CODE (implementer-backend/frontend/test) garble return → recover KHÔNG từ diary (write-lane không có verdict-diary) mà từ **DISK: `git status`/`git diff` + `dotnet build`/`dotnet test`** ([[feedback_agent_kill_recovery]]). BE-lane 6-file+mig verify-diff-đúng+compile-sạch; FE-lane garble GIỮA mirror → chỉ fe-admin xong (git-status thiếu fe-user) → em-main `cp fe-admin→fe-user` + SHA-verify; test-lane 7-file → `dotnet test` 482 xanh. **Workflow-tool teeth (chốt):** stage-1 `await agent()` TRỰC-TIẾP → 1 garble throw **giết cả workflow** (FE+test stage-2 không chạy); dùng **`parallel()` = thunk-garble→null, workflow SỐNG** → verify-từ-disk bất-kể return. Với WRITE-lane, **return chỉ nice-to-have, DISK = ground-truth**. cicd-lane ×5/6-tổng tái phạm dai → em-main-solo curl-verify (bundle-rotate + byte-verify + smoke). Path recover mở-rộng: **(0) WRITE-lane → disk-truth (git+build+test) → (1) diary → (2) SendMessage-resume → (3) em-main solo.** **+ S118 ×2 = ×20 tổng** (cicd-monitor ×2 — CẢ 2 verify-lane deploy-durability garble return memory-curation ["#388 entry compress prior" + "older stubs archived, tighten longest"], khớp correlation reasoning-lane + cicd tái-phạm dai nhất). 🔴 **VERIFY-lane recover (S118) = READ-lane biến-thể của WRITE-lane disk-truth:** cicd verify-deploy garble → **em-main-solo re-verify từ prod ĐỘC-LẬP** (curl health/401/bundle + `ssh sqlcmd` Serilog/permission-state) → **2 nguồn ĐỘC-LẬP khớp** = verdict chắc. verify-lane garble ≠ mất-việc (verify là READ prod, em tự làm lại được, KHÔNG cần agent). **Serilog log-line = bằng-chứng mạnh nhất** ("Revoked 9"→"Seeded 9 upgraded" 44ms = seeder-thắng-revoke durable, mạnh hơn end-state-DB đơn-thuần). Chốt tổng: WRITE→disk · VERIFY→em-main-re-curl+query · REASONING→diary/resume. **+ S143 ×5 = ×25 tổng** — 🔴 **kỷ-lục 1 phiên: 5/5 sub garble** (reviewer ×2-lần · lead-view · lead-omission · tooling-auditor · harvest-curator), TẤT CẢ đều reasoning-lane, khớp correlation S103. 🔴 **3 data-point MỚI:** **(a) prompt-đúng-từ-đầu KHÔNG chặn được — lần thứ 3 liên tiếp xác nhận:** spawn-prompt của cả 5 vai đã cấm bẫy "trả verdict trước, làm sau" + ép "GHI ĐĨA TRƯỚC, RETURN SAU" NGAY từ lượt đầu ⇒ vẫn 5/5 garble. Thứ **thật sự cứu** = chính câu ép-ghi-đĩa đó: **0 dữ-liệu mất**, mỗi lần garble đều vớt trọn từ `runs/<id>/sub-*.md`. Chống #53 là **thiết-kế artifact**, KHÔNG phải thiết-kế prompt. **(b) recover-path THỨ 4 — resume KHÔNG cứu được diary:** `lead-view-auditor` garble ×2, sau resume nó ghi tiếp sub-file nhưng **KHÔNG ghi diary** (mtime đứng nguyên) ⇒ path-2 (SendMessage-resume) **thất bại ở trục diary** lần đầu ⇒ phải **lead APPEND on-behalf sau VERIFY từ sub-file** (B3, tiền-lệ retro-harvest S132); harvest-curator chấm Fidelity ca này **PASS STRONG 0-fabrication** với 2 nit nhãn-nguồn. ⇒ path đầy-đủ nay: **(0) WRITE→disk · (1) diary · (2) resume · (3) lead-on-behalf-từ-sub-file · (4) em-main solo.** **(c) tally tự nó là bẫy:** lead nâng sổ giữa phiên khi mới 3 sub garble (ghi "×23") rồi 2 sub nữa garble ⇒ số sai ngay trong cùng phiên ⇒ **cập-nhật tally ở CUỐI phiên, đừng giữa phiên**; và sổ này từng đứng yên 8 nhãn phiên (×20 từ S118) trong khi class vẫn fire — chính là ca đẻ ra class `gap-incident-unrecorded` (@S143 owner mở enum). **+ S147 ×3 (product session — tally ×25 S143 + S146 ×3 per-HANDOFF chưa gộp riêng ⇒ ~×31):** `investigator-codebase`(①-attachment) + `reviewer`(②-project-merge) + `cicd-monitor` — cả 3 memory-curation-fragment, khớp correlation reasoning/verify-lane. 🔴 **Data-point MỚI:** cả 3 là **Agent-tool spawn LẺ** (không phải workflow-lane) ⇒ **path-2 SendMessage-resume 3/3 SẠCH** (khác S143 nơi resume fail trục diary của workflow-sub `lead-view`). Giả-thuyết: sub Agent-tool đơn giữ context sống + re-emit trọn khi resume, KHÔNG cần path-4 lead-on-behalf. ⇒ với **sub lẻ**, thứ-tự recover rẻ nhất = **(2) resume-in-session TRƯỚC**, chỉ khi resume fail mới (3) em-main-solo. cicd-lane tái-phạm-dai xác nhận lần nữa (verify-lane) — nhưng em-main-curl độc-lập **2-nguồn-khớp** cross-verify vẫn là backstop chắc nhất cho verdict deploy.

🔴 **+ S148 ×2 và S149 ×2 — GHI SỰ-KIỆN, TALLY CHỐT @CLOSEOUT** (đúng bài học (c) ngay trên: cập-nhật số giữa phiên là tự đẻ số sai; phiên S149 còn workflow 8-lane đang chạy nên chưa đóng băng được). **S148 ×2:** cả `lead-view-auditor` + `lead-omission-auditor` trong vòng H24 force-fire. Phân-hoá đúng bài học S123: lead-view **ghi diary trong lúc làm** ⇒ vớt trọn từ đĩa 0-mất; lead-omission **KHÔNG ghi** (mtime đứng phiên trước) ⇒ phải SendMessage-resume, resume có ghi đĩa rồi mới trả. **S149 ×2:** `h24-audit` (vai KIỂM) garble **CẢ HAI lượt** — lượt-1 return = *"Recording findings so far…"*, lượt-2 sau resume = *"Let me check my own role-diary convention…"*. **CẢ HAI vớt TRỌN** nhờ lead ép ghi-đĩa-trong-lúc-làm ngay từ prompt: file `sub-h24-audit-S149.md` **7,7KB lượt-1 → 25,7KB lượt-2**, đủ §0–§9e, 0 mất dữ-liệu. ⇒ **path-2 (resume) nay có nấc mới: resume CŨNG garble return, nhưng vẫn ghi đĩa đầy đủ** ⇒ khẳng định lại (a): chống #53 = **thiết-kế artifact**, KHÔNG phải thiết-kế prompt — lần thứ 4 liên tiếp xác nhận.
🔴 **BA con số đang trôi, ĐỪNG chép cái nào cho tới closeout** (phát hiện bởi `h24-audit` @S149, evidence `runs/2026-07-24-S148-h24-force-fire/sub-h24-audit-S149.md §7b`): `docs/STATUS.md` narrative ghi **×27** · chính file này ghi **~×31** · tự cộng từ THÂN file ra **25 (qua S143) + 3 (S146) + 3 (S147) + 2 (S148) = 33**, chưa kể S149 ×2. Gốc: thân sổ **ghi sự-kiện mà không cộng vào tổng** ⇒ tổng và thân lệch nhau âm thầm. **Bài: tổng lũy-kế phải DERIVE từ thân, đừng bảo-trì song song** — đây đúng class `gap-incident-unrecorded` mà chính sổ này đẻ ra @S143.

🔴 **TALLY CHỐT @S150 closeout (2026-07-25) — derive-from-body, cộng từng dòng (đúng luật ở trên + lead-gap FLAG-4 @S150):** qua S148 = **33** (25 qua-S143 + 3 S146 + 3 S147 + 2 S148). **S149 +5:** ring2-audit (tên cũ h24-audit) W3 ×2 ("lần 28+29" counter-history) · dong-du-5-vong **L5** kinh-điển (đĩa cứu) · **L7** mất-cả-hai (bù deep-pass) · gate `wf_f4e4c006` **skeleton-ruột-rỗng** (khung 274B, 35 tool-use, **0 append**; return fail + resume fail *"No transcript found"* → path-4 em-main-solo). **S150 +7 — 7/7 first-return của wave closeout-bookend đều garble** (H1 tooling · H2 harvest · lead-stale · lead-gap ×2 [first + resume-diary-step] · ring1 · ring2 — 100% reasoning-lane, khớp correlation S103; resume CLEAN 5/6; **sub-file ghi-trong-lúc-làm cứu 7/7, 0 mất dữ-liệu**). ⇒ **TỔNG = 45 qua S150.** (Số cũ ×27 @STATUS + ~×31 @sổ này = **RETIRED** — sản-phẩm của bảo-trì-song-song, thay hẳn bằng derive.) **Family-incident KHÔNG vào tally:** dong-du **L1 `ngược-#53`** (return ĐỦ mà ĐĨA không — chiều ngược, không phải return-garble).

🔴 **SUB-CLASS MỚI @S150 (2 phản-chứng — tách riêng, KHÔNG nhét vào tally rồi thôi):** ① **`ngược-#53`** — lane KHÔNG ghi file dù bị ép từ prompt (run.md dong-du: *"ép-ghi-khung-rỗng không đảm bảo lane tuân"*); ② **`skeleton-ruột-rỗng`** — lane TẠO file đúng lệnh (274B) nhưng **0 append** = VẬT tồn-tại mà RUỘT rỗng, và path-2 resume cũng chết. ⇒ **Nâng cấp kết-luận (a): ghi-đĩa-trong-lúc-làm = CẦN, KHÔNG ĐỦ** — lead phải **verify BYTE-CONTENT tăng thật** trong lúc wave chạy (không chỉ file tồn-tại); lane quan-trọng giữ N-lane-redundancy + em-main-solo backstop. Theo dõi 2-strike rồi xét error-ledger row (NEXT-em @S150).

🔴 **TALLY CHỐT @S151 closeout (2026-07-25) — derive-from-body:** 45 (qua S150) **+ 5 S151 = 50**. S151 ×5 first-return garble, TẤT CẢ ở wave bookend @open + KIỂM (lead-stale · lead-gap · ring2 · tooling-H1 · ring1 — 100% reasoning-lane; H2 harvest CLEAN 1/6). Chữ ký đồng nhất: **cả 5 chết đúng write-boundary** ("làm xong → bắt đầu ghi/return" — ring2 "Writing the full audit to disk now" rồi tắt; ring1 "All verification done. Writing…" rồi tắt). Recover: resume-in-session **5/5 SẠCH** (path-2 sub-lẻ giữ form S147 3/3 → nay 8/8 lifetime). 🔴 **Sub-class `skeleton-ruột-rỗng` TÁI-HIỆN = 2-STRIKE MET** (S150 gate wf_f4e4c006 → S151 ×2 THUẦN: sub-lead-stale 12-dòng header-only + sub-lead-gap checklist-`[ ]`-only lúc chết, dù prompt ép ghi-đĩa NGAY từ đầu) → **error-ledger row AS-17 + guard promote @S151** (verify BYTE-CONTENT tăng thật trong wave, phân biệt skeleton vs đang-viết-dở phải ĐỌC RUỘT — H2 m#19: size nhỏ = nghi-vấn không phải bằng-chứng). 🔴 **Counter-correlation MỚI (S151):** trio harness-{eval,refine,audit} **3/3 CLEAN** cùng phiên — cả 3 là return-only contract KHÔNG ghi đĩa giữa chừng (eval 21 tool-use vẫn clean) ⇒ garble KHÔNG tương quan "có ghi đĩa hay không", vẫn đúng correlation reasoning-lane S103 nhưng thêm chiều: **return-only + thân-return-CÓ-CẤU-TRÚC-định-sẵn (khuôn VERDICT dòng-1 + section cứng) sống sót tốt hơn return tự-do sau khi ghi files**. n=3 chưa đủ kết luận — theo dõi.

🔴 **ERRATA nguồn-ngoài @S152:** commit-subject `1b85713` (S151-closeout) ghi tally "**53**" = **SAI** — số đúng @S151 là **50** (derive-from-body; ring2 M-1 @S152 bắt bằng phép cộng độc-lập 33+5+7+5 trên 4 bề-mặt). Commit-subject bất-biến sau push ⇒ errata ghi ở đây thay sửa; mọi trích-dẫn lấy số từ SỔ NÀY, không từ subject.

🔴 **TALLY CHỐT @S152 closeout (2026-07-26) — derive-from-body, đếm CÁI-CHẮC:** 50 (qua S151) **+ 10 S152 = 60 (cận dưới)**. S152 events: **@open 7** = 6/6 first-return wave bookend (lead-stale · lead-gap · tooling · harvest · ring2 · ring1 — 100% reasoning-lane, ghi tại `bookend-synthesis.md` cùng phiên) + ring2-resume vẫn mô-tả-ý-định; **@close 3-CHẮC** = stale-close completion-slice + gap-close first-return-mid-work + ring1-close return-slice. **KHÔNG đếm (khai thẳng):** harvest-close + tooling-close hoàn thành TRƯỚC compaction lead — nhãn return không còn khôi phục được ⇒ UNKNOWN, không bịa (file đĩa 20.411B/26.451B đủ, 0 mất). **CLEAN counter-datum:** trio 3/3 + **ring2-close khuôn STRICT-4-dòng** — 4 lượt return-only/khuôn-cứng CLEAN trong chính phiên 10-garble ⇒ củng cố chiều S151: **thân-return-có-cấu-trúc sống sót; return tự-do sau khi ghi file thì không**. **Family (ngoài tally):** `ngược-#53` ×2 cùng phiên (ring1 resume-1 @open chạy-không-ghi · gap-close 0B @close) — sub-class này nay 3 events lifetime (S150 + S152 ×2), đã có AS-17 guard; countermeasure hiệu-lực = lệnh resume "**đổ-ruột-TRƯỚC-làm-tiếp**" (2/2 lần cứu trọn). **Mới @S152 (ring2 4-A):** kỷ-luật ghi-đĩa-từng-finding có TÁC-DỤNG-PHỤ — file luôn hợp-lệ giữa chừng ⇒ lead PIN bản-cắt 16.911B/30.195B mà không thấy dấu cụt ⇒ 3 FLAG ngoài tầm quyết-định (tally thoát nhờ may) ⇒ đề-xuất dòng chốt `<!-- END … TOTAL=n -->` + lead chỉ nhận pin khi grep-count == TOTAL (chờ owner).

🔴 **@S158 closeout (2026-07-28) — SỔ NÀY ĐÃ ĐỨNG YÊN 5 NHÃN PHIÊN (S153→S158), `lead-gap-auditor` bắt (`gap-incident-unrecorded`, FLAG-3 MED-HIGH).** Chính class mà sổ này đẻ ra @S143 lại cắn chủ. mtime file = 2026-07-26 01:50; `grep -o "S15[3-8]"` = 0/0/0/0/0/0. Ghi bù theo đúng luật của file: **derive-from-body, đếm CÁI-CHẮC, không bịa.**

- **S158 = +6 CHẮC** (lead đếm trực tiếp, cùng phiên): `tooling-auditor` · `harvest-curator` · `lead-stale-auditor` · `lead-gap-auditor` · `ring1-audit` · `ring2-audit` — **6/6 first-return**, 100% reasoning-lane (khớp correlation S103). Resume 6/6 ra kết quả đầy đủ. ⇒ **TỔNG = 66 (cận dưới) qua S158.**

🔴 **@S164 thu-về (2026-07-31) — sổ lại đứng yên QUA TRỌN L8 (S159→S162), lần 2 cùng bệnh:** vế "số ×66 đã cũ" là 1 trong **4 hàng-nhường rơi khe H24 @S163** (lead-gap nhường `view-*` → lead-stale không nhặt vì xong TRƯỚC 13'; ring2 §5 chứng 4/4 nhường / 0/4 nhặt — khuyết-tật cấu-trúc thiếu bước hợp-lưu, KHÔNG lỗi vai). Ghi bù đúng luật sổ — derive-from-body, đếm CÁI-CHẮC:

- **S162 = +6 CHẮC** (STATUS ④ closeout L8, lead đếm cùng phiên): **6/6 sub #53, resume-từ-đĩa 6/6, mất 0 B** — xác nhận lần 5 "chống-#53 = thiết-kế ARTIFACT". ⇒ **TỔNG = 72 (cận dưới) qua S162.**
- **S159·S160·S161 = CHƯA ĐẾM ĐƯỢC, không bịa** (cùng khuôn S153-S157): closeout các phiên đó không để lại dòng đếm khôi-phục được trong sổ nào lead chạm @S164.
- **S163-S164 (L9 ĐANG MỞ) = GHI SỰ-KIỆN, TALLY CHỐT @CLOSEOUT** (đúng bài học (c) — nâng số giữa phiên là tự đẻ số sai): đã biết **≥2**: `lead-gap-auditor` chết #53 **×2** @S163 bookend-open, lần 1 để lại `sub-lead-gap-open-S163.md` **1.302 B ruột-toàn-heading** = **instance #2 sub-class `skeleton-nấc-2`** (sau 1.661B S158 — byte>0 nên guard "verify byte tăng" mù, phải đọc RUỘT; AS-17 2-strike-watch tiếp).
- **S153-S157 = CHƯA ĐẾM ĐƯỢC, khai thẳng thay vì bịa.** `lead-gap` dẫn `_mind-s-7.md:199` ×11 + `:181` ×13 ⇒ "~27 cho L7", **nhưng `ring2-audit` bác cách đếm**: nó neo bằng **SỐ DÒNG `_mind`** — đúng thứ mà FLAG-2 của chính lead-gap vừa cấm trong cùng return. ⇒ số đó **không tái-dựng được** bằng đường khác ⇒ **KHÔNG nhập tally**. Muốn đóng: derive từ `runs/*/` + session-log S153-S157, không từ số dòng.

🔴 **COUNTER-DATUM MẠNH NHẤT TỪ TRƯỚC TỚI NAY (S158) — 5 ca cùng phiên, cùng ngày, cùng lead, khác đúng MỘT biến:**

| Vai | prompt ép ghi đĩa? | garble? | mất gì |
|---|---|---|---|
| `investigator-codebase` (Fable, 222K tok) | ✅ | KHÔNG | — |
| `tooling` · `harvest` · `lead-stale` · `lead-gap` | ❌ | ✅ ×4 | **TOÀN BỘ** — 4 lượt resume |
| `ring1-audit` · `ring2-audit` | ✅ | ✅ ×2 | **0 B** (2.818 B + 5.354 B nằm sẵn trên đĩa) |

⇒ **Ép-ghi-đĩa KHÔNG giảm tần suất garble (2/2 vẫn garble), nhưng đưa thiệt-hại về 0.** Xác nhận lần thứ 5 liên tiếp: **chống #53 = thiết-kế ARTIFACT, không phải thiết-kế PROMPT.** Đây là lần đầu có **đối-chứng nội-phiên sạch** (cùng lead, cùng ngày, chỉ khác 1 biến) thay vì so chéo phiên.
🔸 **Bonus đo được:** garble của 2 con ghi-đĩa **CHỨA finding thật** trong chính câu chết (`ring1`: *"probe NOW says run-chua-gom 4 but H2 claimed 3"* — hoá ra do LEAD tạo run-folder sau khi probe chạy; `ring2`: *"gap FLAG-3 neo bằng số dòng `_mind`, đúng thứ FLAG-2 vừa cấm"*). ⇒ **đọc câu garble, đừng vứt** — nó là lát cắt transcript tại điểm chết, thường là chỗ vai đang nghĩ sắc nhất.

🔴 **2 SUB-CLASS MỚI @S158 (`lead-gap` FLAG-3 đặt tên — cả hai sổ hiện KHÔNG bắt được):**
1. **`skeleton-ruột-rỗng` nấc-2** — invest lượt 1 đốt **202K tok**, đĩa **1.661 B khung rỗng toàn heading**. 🔴 Bản ghi S150/S151 chỉ dạy *"verify BYTE-CONTENT tăng thật"* — mà **1.661 B LÀ byte > 0 và có tăng** ⇒ guard hiện tại **KHÔNG bắt được ca này**. Phải verify **NGỮ-NGHĨA ruột** (có câu hoàn chỉnh, không chỉ heading), không chỉ byte.
2. **`engine-process-exit`** — tiến-trình CLI thoát giữa lượt, **đĩa KHÔNG đổi 1 byte** ⇒ §C/§D chưa từng ghi. Mode thứ 3, **khác cả `#53` lẫn `skeleton`**: không phải return hỏng, không phải ruột rỗng, mà là **lượt chạy chưa từng tồn tại**. Phân biệt bằng: `#53` = đĩa có + return sai · `skeleton` = đĩa có vỏ + ruột rỗng · `engine-process-exit` = **0 delta đĩa**.

🔴 **BÀI HỌC NGANG HÀNG (không thuộc #53 nhưng cùng closeout, ghi kèm vì cùng lớp "neo mục"):** CẤM neo một mục tiêu vào **SỐ DÒNG** của file append-ở-TRÊN (`_mind`). Mồi-ngầm gieo @PAUSE-1 định danh bằng `_mind-s-7.md:99`; `ring2` dựng chronology chứng neo **SAI NGAY TẠI COMMIT SINH RA NÓ** (stale-at-birth, không phải trôi-do-nén) ⇒ trong mọi trạng-thái đã-commit, `:99` **chưa từng** trỏ đúng mồi. Neo phải bằng **TRÍCH NỘI DUNG**. Liên [[feedback_absence_looks_like_clean]].

🔴 **@S168 GHI SỰ-KIỆN L9 (2026-08-01 — L9 CÒN MỞ, tally CHỐT @closeout L9 theo đúng luật (c) + đếm CÁI-CHẮC):** nguồn per-window = `_context-s-9` PAUSE-2/3/4 + `_mind-s-9` MIND-4 §C/§E: **window-2 (S164)** sự-kiện đã xử tại chỗ: `ngược-#53` ev#4 (B1a att-1 **0-byte/207K tok**) · skeleton-472B (B2c1 att-1) · chết-ruột-188B (c2-l3) · garble fable-lane 3/9 + opus-lane 1/13 (nhãn PAUSE-2 — chốt phải đọc đĩa từng sub-file, đừng cộng nhãn) · **window-3 (S165)** PAUSE-3 ghi "~14 return-hỏng / 17 spawn — 0 mất công" (reviewer×3-resume-điền · cicd×3 · lane-K2×4 · lane-K3×4 gồm `engine-process-exit` ×2 CÙNG-task) — số "~" là ước cùng-phiên · **window-4 (S166)** nháp-8 (chết-limit giữa /pause-dở, 0 entry PAUSE ⇒ đếm khi chốt = đọc 15 artifact K4a/K4b/K5/K4c/F-1/H24-deep) · **window-5 (S167)** MIND-4 §C **derive-from-§E: 8 return-hỏng / 15 lượt (10 spawn + 5 resume), 0 mất công** — phác-đồ chọn-nhánh-theo-CÁI-THIẾU chạy tốt (resume-điền · lead-close-on-behalf · resume-Write-trước) · **window-6 (S168)** ctx-verifier CLEAN ×1, 0 garble. ⇒ TỔNG lũy-kế **GIỮ 72 cận-dưới qua S162** — L9 cộng @/session-end L9 bằng đọc-đĩa từng sub-file. Xác nhận lần 6: chống-#53 = thiết-kế ARTIFACT (0 B mất toàn L9 dù garble là nhịp-nền).

🔴 **@S180 GHI SỰ-KIỆN (2026-08-07, L12 CÒN MỞ — tally CHỐT @closeout theo luật (c)):** bookend @open **6/6 vai nặng first-return garble** (`tooling-auditor` · `harvest-curator` · `lead-gap-auditor` · `lead-stale-auditor` · `ring1-audit` · `ring2-audit` — 100% reasoning-lane, khớp correlation S103). Chữ ký đồng nhất **chết đúng write-boundary** y S151: *"let me check the machine output…"* · *"Let me spot-check S169 the same way…"* · *"Let me check the two live threads…"* · *"Now let me read the source-of-truth surfaces."* · *"Now verifying H2's content-marker test…"* · *"Let me reproduce the detector's actual scoring."* Recover **path-2 resume-in-session**, sub-lẻ giữ form (S147 3/3 → S151 5/5 → nay tiếp), **0 B mất**.

🔴 **DATUM MỚI — nâng cấp bài "đọc câu garble, đừng vứt" (S158) lên một nấc:** S158 chỉ chứng garble **chứa** finding. @S180 lần đầu có ca garble **LẬT KẾT LUẬN LEAD VỪA PHÁT RA, và lead hành động NGAY trong cùng lượt, trước cả khi resume**: `lead-gap-auditor` chết giữa câu *"…the **4 unapplied 2026-08-04 letters**"* — lead vừa tuyên "kênh `all` = 0 thư cần áp" ở BƯỚC 0.9; đo lại lập tức (`ls adap-reports/ | grep -c 2026-08-04` = 0, 4 token = 0/0/0/0, control-dương `loi-do-luong` = 1) ⇒ **lead SAI, thư chưa áp**. Ca thứ hai cùng phiên: `harvest-curator` chết ở *"Content test confirms the S168 debt at the strongest level"* — cũng là finding load-bearing.
⇒ **Nâng cấp How-to-apply:** mẩu garble không chỉ *"thường là chỗ vai nghĩ sắc nhất"* — nó **có thể là bằng-chứng DUY NHẤT còn lại chống lại một kết luận sai của lead**. Đọc nó **TRƯỚC KHI** resume, và nếu nó mâu thuẫn với thứ lead vừa nói thì **đo ngay, đừng đợi vai trả lại**.

🔸 **Counter-datum củng cố S151/S152 (return-only + khuôn cứng sống tốt hơn):** 3 spawn-probe vai STYLE (`front/back/database-reviewer-style`) — lệnh trả **đúng 1 dòng cố định**, cấm gọi tool — **3/3 CLEAN**, ~2,3s mỗi con. Cùng phiên, cùng lead. Khác biệt duy nhất = **hình dạng return được định trước** vs return tự do sau khi làm việc dài.

**How to apply:** sub return text lạ (memory-curation/off-topic/câu-mở-đầu/narration-giữa-chừng) → ĐỪNG tin nó fail/vô-dụng; **ĐỌC MẨU GARBLE ĐÃ (nó có thể chứa finding lật kết luận của chính mình — S180), rồi đọc ĐĨA, rồi diary, rồi resume**. Task-cần-chắc (bug-reasoning) → em-main re-do solo (reliable). 🔴 **Với MỌI spawn reasoning-lane: ép ghi đĩa từng phần trong prompt** — không để giảm garble mà để **garble không tốn gì**. Liên [[feedback_agent_kill_recovery]] · [[feedback_workflow_fanout_reliability]] · [[feedback_return_terminates_agent]].
