Files
solution-erp/.claude/agent-memory/harvest-curator/MEMORY.md
pqhuy1987 b764ac791a
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m22s
[CLAUDE] Docs: S123 citation-trap guard + H24-3 + DUAL-ACCEPT + luat retire-legacy
Anh chot 4 viec governance. Detector 46->45 = DOI THANH-PHAN (-2 duong-gia
+1 duong-THAT), khong phai "flag giam". Mark moi RC-pqhuy1987-15-07-2026-17-23-10.

- backtick-guard H24-1: discriminator = ENCLOSURE (use vs mention), KHONG port
  duoc charset-guard cua H24-2 vi vi-du byte-identical voi claim. Helper DUY-NHAT
  Test-Quoted. Fault-inject 5/5 (2 anti-Goodhart).
- H24-3 session-label lag (MED, moi): va am-gia CHUNG-MINH-DUOC cua H24-1
  (so NGAY ma ngay = moi nhat => 0 flag trong khi nhan lui 3 phien; tai-phat lan 4).
  Fault-inject 6/6 + 6/6 sau fix.
- DUAL-ACCEPT (dang-3 RETIRED) + LUAT RETIRE LEGACY: go nhanh legacy khi tap
  di-san RONG, giu khi CON nguoi thu-huong. Repo that 0 orphan/26. Fault-inject 7/7.
- tiep.md:66 stale-at-birth + sweep view-residual-asym 6/6 be-mat LUAT sach.

Reviewer PASS_WITH_FIXES bat 6 loi that, lead verify 4/4 doc-lap:
gen-2 citation-trap (lead viet 30 dong chung-minh dinh-luat roi de H24-3 KHONG
guard) - greedy .* lay CUOI khong phai MAX - ly-do retire ap cho dang-2 thi giet
C8 - "retire HOAN-THANH mark" = nguy-bien - "5/5" = 4/4.

Goodhart DO DUOC (ngoai diff): W4/S122 "va" permission-matrix:16 bang doi FORMAT
anchor => khop 0 pattern => H24-1 mat chinh positive-control no dung quanh;
flag-count GIAM nen trong nhu thanh-cong.

Outward: addendum R5 (DUNG adopt TRI-ACCEPT) + email hub ed3786a10f12
(selftest-stamp MATCH x2). _index reconcile: 2 email S122 gui ma chua log.

#53 garble x4/3 agent - harvest-curator ghi diary TRONG luc lam nen vot duoc tu
dia ngay; reviewer tu rut luat "ghi diary TRUOC return" tu garble-1 va nho dung
no ma garble-2 vot duoc. Prompt-dung KHONG chan duoc #53.

Lead sai 4 ca tron o truc dem-ve-minh: "25"!=26 - "5/5"!=4/4 - viet "7/7 PASS"
TRUOC khi chay - "0 proxy" sai.

State GIU NGUYEN: Mig 66 - 89 bang - 509 test - gotcha 82 - menu 54.
Con no: STATUS:6 CO Y chua bump (H24-3 dang FLAG, giu cho hien ra).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 17:36:39 +07:00

52 lines
20 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Harvest-Curator Agent — Persistent Memory
> **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT).
> Update BEFORE every stop. Tiered Memory v1: **L1 self-target ≤17.1KB (hook read-limit 24.4KB)** · L2 `archive/` on-demand · L3 RAG `search_memory` just-in-time. Keep entry ≤ 1.5K chars.
> **NEW agent 2026-06-07** (adopt AI_INFRA Harness 1 — H2 harvest-integrity; TÁCH khỏi tooling-auditor H1 per anh-mandate "H1/H2 hay quên+nhầm → riêng-biệt").
---
## 🎯 Role baseline
H2 harvest-MD-integrity auditor **SOLUTION_ERP-self**. Read-only + **propose-only** (em main = single-writer, VERIFY→APPEND B3; ngoại lệ duy nhất = diary chính mình khi em main cho phép). Verify HARVEST mỗi session ĐỦ+ĐÚNG **5-trục**: Coverage · Completeness · Fidelity-FLAG · Placement · Corruption. @session-end GATE trước đóng + gom run-folder; @session-start báo harvest mới + delta mồ-côi + orphan run vs ledger.
## 🚫 Split boundary
- ✅ MINE: harvest-memory integrity (5-trục) + spawn-record 4-field + run-folder gom (Harness-10) + delta mồ-côi — SOLUTION_ERP-self
- ❌ NOT: tooling/skill/plugin/docs-freshness → **tooling-auditor** (H1) · corpus/RAG/deploy → cicd-monitor · Fidelity tự-phán "bịa" → escalate **reviewer** · write/decide → em main
## 📋 Baseline state (re-ground S99)
- **Spawn-record 4-field SE:** `{task · verdict · learned · surprise}` (memoryDelta R1 contract HMW).
- **agent-memory:** 12 folder `.claude/agent-memory/<role>/MEMORY.md` (placement target — S107 +office-document seed). Cap L1 = 25.6KB (H11 `memory-archive-gate.ps1`); hook self-target 17.1KB.
- **Run-trace (Harness-10, thay wave-folder Harness-2):** `.claude/workflows/runs/<run-id>/` git-TRACKED, FLAT (`run.md` + `sub-*.md` + `*-synthesis.md`); 5 run cũ 06-18 giữ `sub-md/`+`harvest/` subfolder (dual-accept). **🧊 Ledger `runs/_ledger.md` RETIRED H18-B S100** (true-catch 0/15 lifetime + mode-A coverage 0/8; 15 row frozen giữ lịch-sử) — **orphan-authority = folder-scan:** folder có `run.md``*-synthesis.md` VẮNG/0-byte. Mode-A ephemeral (S98 note): HMW default KHÔNG tạo run-folder = by-design, vắng folder ≠ orphan.
- **Nền H2 gốc:** `session-end.md` Phase 1.5 §L.b = 3/5 trục; sub này nâng +Fidelity-escalate +Placement = đủ 5.
## ⚠️ Anti-patterns
❌ Tự ghi/overwrite memory ngoài diary mình (propose→em main APPEND) · ❌ tự phán Fidelity "bịa" (→ reviewer) · ❌ tick "đã flush?" nhị-phân (phải đủ 5-trục) · ❌ đụng tooling-freshness (đó là tooling-auditor) · ❌ G-015 overclaim "read-only enforced" · ❌ final-message trả narrative memory-curation thay verdict (#53 return-garble).
## ⭐ Methods (giữ vĩnh viễn — đúc từ S50-S66, verbatim → `archive/2026-06.md`)
1. Chunk-count qua **RAG MCP `list_projects`**, KHÔNG shell-probe Qdrant (MCP trỏ host khác → false-negative).
2. Sub killed-mid-write → verify tail **terminates-clean** (`wc -l` + closing-Tag), KHÔNG chỉ `-size 0` (partial-write ≠ 0-byte).
3. Detect interrupted-session: so **mtime agent-memory vs closeout-commit timestamp**.
4. Commit-stat "có append" ≠ "có fanout-record" — classify bằng **grep tag session + mtime**, đừng tin stat.
5. Extract added-bullet trong diff: `grep "^+-"` (filter `grep -v "^[+-][+-]"` NUỐT dòng `+- **…`).
6. `tail -c N` cắt giữa UTF-8 multibyte in ra ký-tự-thay-thế GIẢ — corruption thật = **grep literal U+FFFD** (đừng viết literal đó vào L1 kẻo tự false-alarm).
7. Mojibake quoted-cũ vs mới: **arithmetic line-shift** = đúng số dòng insert phía trên → cũ.
8. Sub die không để delta → **commit-body = spawn-evidence** (S60 reviewer tự khai trong msg).
9. U+FFFD self-quote trong file MÌNH + archive = quoted-evidence cố-ý — đừng false-alarm.
10. Trend self-tag session-drift (cicd s50→s51 · inv s56→s57 · inv s57bis→s58 · cicd s98→s97 ×4): entry mới soi tag vs session thật.
11. **Đếm role-dir từ path-field DÍNH file root-level:** `git ls-files .claude/agent-memory/ | cut -d/ -f3 | sort -u` nuốt `memory-budget.json` + `.mfe-state.json` → ra 14 thay 12 (tự-bắt S123). Guard: `awk -F/ 'NF>3{print $3}'` hoặc `find -mindepth 1 -maxdepth 1 -type d`.
12. **Mẫu-số có NGÀY-ĐO — hỏi "đếm LÚC NÀO" trước khi so:** count freeze ở commit-time; nếu chính việc-đo sinh artifact mới (run-folder retro-harvest) thì mẫu-số tự lỗi-thời (S123: em-main 25 = baseline `48e0d26`@11:48, thật 26 sau `22ea8c5`@14:28). Verdict khớp ≠ mẫu-số khớp.
13. **git MÙ thư-mục RỖNG** → empty-dir residue (stray cwd-relative `<runfolder>/.claude/agent-memory/<role>/`, role-dir chưa seed) KHÔNG BAO GIỜ hiện `porcelain --ignored`. Quét bằng `find .claude -type d -empty`, đừng tin git.
## 📅 Recent activity (FIFO — older → `archive/`)
> **S50→S66 (14 entry) verbatim → `archive/2026-06.md`** — curate S99 (hook 19.9KB > self-target 17.1KB), moved-not-cut grep-verified 5/5 + entry-count 14. Digest: verified-runtime S50 · GATE PASS 5/5 ×6 (S50/51/58/59/63/66) · chuỗi 4-MISS post-S57bis rushed-closeout + reviewer die ×3 (S57bis ×2 + S60) · cicd over-cap saga 32→86.8KB → curate S66 86.8→28.9KB.
> **S98→S101 (4 entry) verbatim → `archive/2026-07.md`** — self-compact 2026-07-10 @S109-start (plan đứng từ S107/S108; block-md5 `e2b906336b4cdad3034329cffc09525a` moved-not-cut). Digest: S98/S99/S100 @start-report chuỗi CLEAN (3 orphan-append S97 đóng · cicd #485 orphan-sane arithmetic-fidelity · tooling live-delta bootstrap) · S101 GATE PASS 5/5 + AS-10 Fidelity-call LEGIT-KEEP (keep-if-correct, 0 fabrication).
> **S102→S106 (5 entry) verbatim → `archive/2026-07.md`** — self-compact 2026-07-12 @S111-start HOOK-directed (plan ĐỨNG từ S107/S108/S110; mở-rộng +S106 để đạt <17.1KB; block-md5 `3163566688e277f628daf349c1230142` 6652B moved-not-cut, giữ file-order gốc — S106 nằm trước S105-close). Digest: S102 CATCH ×2 (reviewer cut-not-moved f229b07 → recover + dead-satellite pointer) · S104-retro self-record blind-spot gate-agent · S105 @start mồ-côi-×1-đóng / @close moved-not-cut byte-level tooling 19380→16305 · S106 ref-table = S98-snapshot benign + cicd-not-spawned-S105 resolved-false-alarm.
> **S107→S109 (5 entry) verbatim → `archive/2026-07.md`** — self-compact 2026-07-12 @S113-end HOOK-directed (plan ĐỨNG từ S107-end/S108; +S109 đạt <17.1KB; block-md5 `75b69b41534cb67cdf349b6e1164d47f` 5623B moved-not-cut, file-order verbatim). Digest: S107 md5-3of3 all-clean flip-8 · S107-end/S108 GATE PASS 5/5 (od-12th-seed · engine-label-first md5-4of4) · S109-start sleep-resume disk-MATCH + 0-gist-new + self-compact-S98→S101-exec (luot-a-transcript-lost) · S109-sleep-P1 gather 5+5-gist propose-only.
> **S110→S111 (4 entry) verbatim → `archive/2026-07.md`** — self-compact 2026-07-13 @S116-end HOOK-directed (SELF 20KB>read-limit; plan ĐỨNG từ S114-start; block-md5 `640f80e452b42badb12bc2a3c57cf9f7` 6638B moved-not-cut, file-order verbatim, anchor 4×{L1=0·AR=1}). Digest: S110-start rerun-DEDUP luot-sang-transcript-lost (gist byte-exact `cat-file`==disk) · S110-end GATE PASS 5/5 close-gate-15of15 garble-x2-recovered + FFFD-baseline-1-selfquote seed · S111-start self-compact-S102→S106-EXECUTED + gist-frozen-x2 · S111-end GATE PASS 5/5 close-gate-0of16 h22-first-subtask-runtrace + `--stat`-truncate-trap.
> **S113 ×2 entry (start+end) verbatim → `archive/2026-07.md`** — self-compact 2026-07-14 @S118-start (plan ĐỨNG từ S117-end soft-due; block-md5 `0c782c7cebc8f1d8b16f65b8e1474820` 4064B moved-not-cut, file-order verbatim, anchor 2×{L1=0·AR=1}). Digest: S113-start MOSTLY-CLEAN 0-orphan/20 + 2-coverage-gap propose (impl-be thiếu Supplier-BE · test-spec thiếu narrative; embedded-synth pattern mới · maxdepth-1 false-flag lesson) · S113-end GATE PASS 5/5 0/21 (2-gap CLOSED idempotent · wal-flush-landing 6-diary · Fidelity `5fa11b5` file-list exact · nit journal-jsonl dead-pointer + backfill-22-vs-37).
> **S114/S116/S117 (3 entry) verbatim → `archive/2026-07.md`** — self-compact 2026-07-15 @S123-start HOOK-directed (plan ĐỨNG từ S119-start soft-due; block-md5 `3d7033e0253c3dfaeba7aad1a1067efe` 7163B moved-not-cut, file-order verbatim, anchor 3×{L1=0·ARC=1}, append-BEFORE-trim m#S119). Digest: S114-start ALL-CLEAN 0/21 garble-×2-captured + 4-BUG-captured · S116-end GATE PASS 5/5 0/24 (review-Lane2 mirror-gap · DOUBLE session-drift-tag m#10 · Fidelity 7-file exact) · S117-end GATE PASS 5/5 0-orphan (fable-real spec-only dual-accept · 3 nit S118-mistag/test-500/cicd-garble-claim → ALL FIXED @S118 `1b8b065`).
- **2026-07-14 (S118 @start RE-REPORT — self-write diary, VERIFY-idempotent 0 re-APPEND):** Model `claude-fable-5`. Verdict 🟢 **ALL-CLEAN — 0 harvest-mới · 0 orphan/26 · 0 delta mồ-côi · corruption 0 · 3-nit-S117 ALL-FIXED**. Post-S117-gate đúng 2 commit chạm memory, cả 2 accounted: `1b8b065` (em-main reconcile 3 diary = đóng trọn 3 benign-nit INFORM @S117-end, diff-verified: (a) inv-cb `## S118``## S117` · (b) test-spec 500/455→501/456 + nguồn +1 em-main-solo `PeFinalizeProjectionTests` · (c) cicd "no-garble ×3"→"×2; S117 garble→SendMessage-resume verdict-substance OK") + `5c7569e` final-flush (+1 dòng = chính S117@end-entry SELF). Porcelain 0 + 12/12 L1 mtime ≤ 11:56:15 ⟹ 0 mồ-côi by-construction (method-#3). Orphan **0/26** dual-accept: 14×06-18 (5 sub-synth maxdepth-2 + 9 flat) · 3 flat Jul (h21/h22/presence) · 6 embedded (4×S112+S113+S114) · **pe-negative-quote embedded NON-heading `✅ PIPELINE COMPLETE`:19** (regex `^## synthesis` MISS → verify-trực-tiếp trước flag, đừng tin heading-scan đơn thuần) · 2×S117 fable-real spec-only KHÔNG run.md (spec 5828B/4202B tracked) = by-design ≠ orphan. Corruption 0: 0-byte 0/12 · tail 0a 8/8 touched · FFFD 0/12 — SELF-baseline FFFD 1→0 (entry chứa self-quote đã rời L1 qua archive, sạch hơn không phải mất; cập nhật baseline method-#9). Chore: 0 L1 > 25.6 cap (fe-designer 21.5K idle-07-01 · cicd 19.96 · inv-cb 19.6); SELF ~19.3K > 17.1 target → **self-compact S113-block DUE phiên này** (plan đứng từ S117-end). Delta cần APPEND: 0. Tag `[s118-start, all-clean, 0-orphan-0of26, 3nit-all-fixed-1b8b065, embedded-nonheading-pipeline-complete, fffd-baseline-1to0]`.
- **2026-07-14 (S118 @end GATE — em-main-APPENDED on-behalf từ propose-only):** Model lead=Opus. GATE **PASS 5-trục** — close OK 0-corruption/data-loss/orphan/fabrication. 7-spawn/5-bucket cov 6/7 (cicd#1 #388 durability PARTIAL: method`:63`+baseline`:41` captured, GO-run-verdict missing). close-gate **0-orphan** (no S118 run-trace by-construction — session = Agent-tool spawns only, no fan-out). corruption 0 (moved-not-cut cicd S117#387→archive byte-id `e5f655f`). **Fidelity 2 cicd-garble INFORM (NOT escalate — all substance git+em-main-verified TRUE):** F1 #389`:80` tự-dán "CLEAN-return" SAI (thực garble→em-main-solo-recover) → **em-main FIXED** · F2 #388 garble unrecorded (durable method survived) · F3 tracker`:17` stale-S117 → **em-main FIXED**. cicd = habitual mislabel-garble-as-clean pattern (archived S117#387 mang cùng nhãn sai). 5 propose-delta: cicd`:80`/`:17`/`:97` em-main-reconciled + this @end line. Tag `[s118-end-gate, pass-5truc, cicd-garble-x2-returnlabel-nit-FIXED, moved-not-cut-verified, 0-orphan-no-runtrace]`.
- **2026-07-15 (S119 @start RE-REPORT — self-write diary, VERIFY-idempotent 0 re-APPEND):** Model `claude-opus-4-8`. Verdict 🟢 **ALL-CLEAN — 0 harvest-mới · 0 orphan/26 · 0 mồ-côi · corruption 0 · 0-stray**. Post-S118-gate ĐÚNG 1 commit `6de7db6` wal-flush chạm CHỈ `.claude/WAL.md` (1 dòng), KHÔNG memory; 12/12 L1 mtime ≤16:29:08 < closeout `3fde8af`@16:29:55 (m#3) + porcelain 0 **@scan-baseline** + **77/77 memory .md TRACKED** 0 mồ-côi by-construction. 🔴 **LIVE mid-flight catch (mới, S119-only):** giữa lượt quét, sibling **tooling-auditor đang self-compact S111-block** `archive/2026-07.md` +3 dòng 0-del @08:40:00 (2 entry S111 @start/@end) NHƯNG **L1 CHƯA trim** (mtime vẫn 07-14 16:24:34) + `_INDEX` chưa pointer **dup-state L1=1/ARC=1 ×2 anchor** = append-BEFORE-trim = **THỨ-TỰ AN-TOÀN** (die giữa chừng dup, KHÔNG mất data; ngược cut-then-die). KHÔNG vi-phạm (nhà , additive-only, tail 0a) INFORM: moved-not-cut verify **PREMATURE giờ**, defer S119 @close gate (dedup L1-trim + `_INDEX` pointer). **S116 gitignore-trap check MỞ-RỘNG:** `--ignored=matching` dưới `.claude/` ignored-untracked DUY-NHẤT = `hmw-mode.on` runtime-flag benign (0 memory ẩn); runs/ 93 file tracked. Coverage 7-spawn: tooling `:48/:49` · SELF `:47/:48` (S104 self-blind-spot PASS) · reviewer `:22`+satellite `project_s118_procurement_master_access_review.md` 3255B TIERED-not-dead 4-field ĐỦ (M1 Reports-leak = ĐÚNG cái `c808b9a` fix) · test-spec **2/2** (`:60` Procurement +4 · `:59` S118b authz +4) · cicd `:80` #389 GO-row **#388 PARTIAL PERSIST** (carry-forward S118-end, KHÔNG mới; substance knowledge-complete `:17` tracker + `:41` baseline + `:63` Serilog-method, chỉ thiếu Recent-runs row) = LOW accepted-by-omission. **Fidelity STRONG 0-fab → KHÔNG escalate:** `c808b9a` EXACT 3-file (ReportsController **+2 `[Authorize(Policy="Reports.Read")]` verbatim in-diff** + my-dashboard kept-open · AuthorizePolicy tests **+4 [Fact] đếm-TỪ-DIFF** file fd80e66d713d80 KHÔNG new, 19=total≠delta: đừng đếm file-total khi claim delta) · `c2135ba` DbInitializer+83 + Procurement-seed-test **4** · STATUS 509=45+464 "S118 +8" + Gotchas 82 khớp. 2 cicd-garble substance disk-true (F1/F3 STAY-FIXED). Corruption 0: 0-byte 0/77 · tail 0a 7/7 · FFFD 0/12 · **gist FROZEN** (0 modified từ `fc1b8d9`, distill-gen 1/2 nguyên) · archive **additive-only** (`2 ++`/`1 +` 0-del) · **moved-not-cut cicd S117#387 VERIFIED** (anchor ×2 L1=0/ARC=1 + archive 21376B tail-0a; fold `e5f655f``3fde8af` 0-mất-byte). Orphan **0/26** (24 run.md đều synth sep/embedded · 2×S117 fable-real spec-only no-run.md = by-design; 0 run-folder S118 by-construction = Agent-tool spawn thuần no-fanout). **Tự-bắt m#5 trap:** archive-diff `grep -v "^[+-][+-]"` NUỐT dòng `+- **` suýt kết-luận false-"empty-diff"; verify lại bằng stat(`2 ++` no-minus)+anchor. Chore: 0 L1 > 25.6 cap (fe-designer 21.0K idle-07-01 · cicd 20.4 · reviewer 19.3 · inv-cb 19.2); SELF 16.9→~18.5K > 17.1 target → **self-compact S114-block soft-due** phiên tới. Delta cần APPEND: 0 (1 LOW-optional cicd #388 GO-row). Tag `[s119-start, all-clean, 0-orphan-0of26, 0-mocoi, 77of77-tracked-no-gitignore-miss, cicd388-partial-carryforward-low, fidelity-strong-exact, m5-trap-selfcaught]`.
- **2026-07-15 (S123 @start RE-REPORT — self-write diary; return #53-garble ×1 → em-main recover-from-disk, việc KHÔNG mất):** Model `claude-opus-4-8`. Verdict 🟡 **MOSTLY-CLEAN — 0 orphan/26 · 0 mồ-côi · corruption 0 · Fidelity STRONG; 1 Coverage-gap + 2 Placement-flag propose.** (1) **Orphan 0/26 tự-đo** bằng block TRI-ACCEPT verbatim `tiep.md §0:41-57` (28 dir 2 S117-fable-real spec-only no-run.md = 26 run). Verdict KHỚP em-main, **mẫu-số LỆCH: em-main báo 25** → truy: `48e0d26`@11:48 W0.5 baseline đo "13 orphan/**25**" rồi con-số bị **chép từ narrative**; folder `S122-retro-harvest-7-orphan` SINH @`22ea8c5`@14:28 (sau baseline 2h40) ⇒ 25+1=26. **Chính việc-đo sinh artifact mà mẫu-số của nó không đếm** → m#12. em-main đã đính-chính với anh. (2) 🔴 **dạng-3 = DEAD CODE:** drop nhánh dạng-3 ⇒ **0 folder** thành orphan (6 folder có `## synthesis` embedded — S112×4/S113/S114 — ĐỀU đã có flat sau `22ea8c5`). **dạng-2 (C8) VẪN load-bearing = 5 folder** (h10-implement/invest/review · h910-curate/finalize) → giữ. ⇒ chức-năng CÒN LẠI duy-nhất của nhánh dạng-3 = **âm-thầm tha vi-phạm TƯƠNG-LAI** của luật "nhận≠cho phép" (doc CẤM viết mới dạng-3 nhưng detector VẪN nhận) ⇒ lệnh-cấm đang dựa vào TRÍ-NHỚ, không phải LUẬT soi-được. (3) 🔴 **Doc STALE-AT-BIRTH:** `tiep.md:66` khai (thì hiện-tại) `pe-negative-quote` = ví-dụ dạng-4 "kẽ còn lại, không phải chuyện đã xử" — NHƯNG `22ea8c5`@14:28 đã thêm `implement-synthesis.md` 8249B, còn doc viết @`dfa3dae`@**14:48 = SAU 20 phút** ⇒ doc mô-tả "chưa xử" cho thứ chính tác-giả vừa xử. Nay folder = dạng-1. **Lập-luận dạng-4 vẫn ĐÚNG, chỉ VÍ-DỤ lão-hoá** (class "acceptance literal tự-lão-hoá" S121) — rủi-ro: người đọc grep thấy flat-file → kết-luận cảnh-báo sai → vứt luôn caveat còn đúng. (4) **Mắt người 0 rỗng-ruột:** 26/26 synthesis có body thật; mỏng nhất `h910-curate` 1653B/body=8 → ĐỌC TAY = thực-chất (bảng before→after byte + moved-count + 0-byte-loss + verdict). 2 folder mới nhất (S119-adap · S122-retro) đều dạng-1 ⇒ "nhận≠cho phép" CLEAN, 0 tái-sinh. (5) **Coverage 🟡 GAP-1 reviewer:** wave S119/S122 reviewer chạy **5 spawn** (`wf_78a84f9b-03e` 4-lane: R2 FAIL-4C+8M `sub-reviewer-R2.md` 22121B · R3 FAIL-5C+6M 27612B · R1/R4 chết #53 · + `/fable-real` `wf_cb964f83-331` GO-WITH-FIXES 8-fix) và **ĐỔI SPEC v2→v3-PATCH**, nhưng `reviewer/MEMORY.md` **0 hit S119-S122** (last-commit `b56659b` 07-14). Bất-đối-xứng: inv-cb ĐƯỢC consolidate +6 dòng @`16c91a8`, reviewer KHÔNG. Knowledge NOT-lost (2 sub-md + gate-verdict + STATUS tracked) ⇒ MEDIUM. (6) **Placement 🟡 ×2 (git MÙ cả 2 — m#13):** (a) **stray `runs/2026-07-15-S119-adap-6-broadcast/.claude/agent-memory/reviewer/`** = mis-land cwd-relative (lớp S54 TÁI-PHÁT), mtime 09:53:43, **0 file ⇒ 0 data-loss**, `porcelain --ignored`=0 dòng. (b) **2 vai H24 `lead-view-auditor`+`lead-omission-auditor` dir RỖNG, 0 MEMORY.md, git-invisible** (roster: agents/*.md=14 · dir disk=14 · **dir git-thấy=12**). **Tiền-lệ office-document S107 `21387cd` = seed 2161B NGAY LÚC TẠO VAI** ("MEMORY seed 2161B + wire 14-file", spawn-test pending) ⇒ S122 `00a1c67` wire đủ (VALID_ROLES 12→14 + STATUS 2 row) nhưng **HỤT seed** ⇒ propose seed. Rủi-ro CỤ-THỂ (không giả-định): git không track dir rỗng ⇒ **fresh-clone = 2 dir BIẾN MẤT**, mà system-prompt 2 vai khẳng-định "directory already exists — do not mkdir" ⇒ lần chạy đầu ~S128 gặp dir vắng. Mỉa: S122 học đúng bài "git mù dir rỗng" + `rmdir` 2 probe (16→14) nhưng **để lại 3 dir rỗng git-mù khác**. (7) Corruption 0: 0-byte **0/77** tracked + 0 trong workflows · tail-0a 12/12 · **FFFD 0/12 L1** (3 archive hit = self-quote baseline m#9: SELF 2026-06 ×3 / 2026-07 ×1 · cicd 2026-06 ×1) · `$(` = cicd `$(cygpath)` + SELF intentional-cmd (known-benign). ⚠️ **Tự-bắt m#6 trap:** `cut -c1-260` của CHÍNH TAO đẻ ra FFFD GIẢ + cụt-giữa-từ ("dạn"/"has") trong inv-cb entry → re-verify no-cut: **sạch, 427-ch dòng cuối kết bằng tag đóng**. ⚠️ **Tự-bắt m#11:** báo nhầm "git-visible 14" vì `cut -d/ -f3` đếm `memory-budget.json`+`.mfe-state.json` như role → thật **12**. (8) Delta mồ-côi **0**: chỉ inv-cb chạm (mtime 15:52:22 < last-commit `16c91a8` 15:57:53, m#3) · 12/12 L1 mtime commit tương-ứng · porcelain agent-memory = 0. Porcelain repo = 1 dòng `.session-counter.json` (counter 12, S122S123, head=`cefb183`) = tick H24 của CHÍNH phiên này, chưa commit benign, KHÔNG phải memory ("cây SẠCH" trong brief đúng LÚC em-main đo, giờ 1-dòng bẩn do chính tick). (9) DIFF vs S122: run 25→**26** · orphan 8-dual2→**0** · dạng-3 live-reliance 6→**0** · dạng-4 known 1→**0** · agent-memory dir 1614 (git-thấy 12) · SELF 20.8K14.5K post-compact. Chore: 0 L1 > 25.6 cap (inv-cb 22.9 max · tooling 22.3 · fe-designer 21.5 idle-07-01 · cicd 20.9); **SELF self-compact S114/S116/S117 ĐÃ EXEC** phiên này. Tag `[s123-start, mostly-clean, 0-orphan-0of26, denominator-25-vs-26-m12, dang3-dead-code, doc-stale-at-birth-penegquote, reviewer-coverage-gap-5spawn, stray-misland-s54-empty, 2role-dir-no-seed-gitblind, m6-m11-traps-selfcaught, return-garble-x1-disk-recovered]`.