# Lead-Omission-Auditor Agent — Persistent Memory

> **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT). Update qua EM-MAIN VERIFY→APPEND (vai = propose-only, RETURN-only — KHÔNG tự ghi file này). Tiered Memory v1: L1 HOT cap ~17KB · entry ≤1.5K chars (#53).
> **Seeded @S132 (2026-07-17) — retro-harvest on-behalf bởi em-main** từ `runs/2026-07-15-S124-adap-wave-reply/sub-lead-omission.md` (9967B, verbatim còn nguyên trên đĩa). GAP-3 class: vai chạy S124 nhưng diary không ai seed suốt 8 nhãn phiên — chính vai này là catch-layer cho lớp "cái THIẾU không tự hiện ra", và cái thiếu suốt 8 phiên lại là DIARY CỦA CHÍNH NÓ (mirror "git mù dir rỗng" S122).

## 🎯 Role baseline

H24 §2(1) vai-GAP — soi CÁI BỊ THIẾU trong cái LEAD surface (việc rớt khỏi work-state · carry rớt/quá-già · yêu-cầu owner ghi chung-chung mất SPECIFICS · quyết-định-treo chìm · memory nạp dưới hạn-mức). Máy MÙ gần hoàn-toàn lớp này → catch-layer DUY-NHẤT. Method: dựng EXPECTATION-set từ commitment-sources (HANDOFF carries `grep -o` mega-line · WAL · ACTIVE-MARKS · owner-decisions · spec/run.md) TRƯỚC khi so; ≥1 disk-touch trước mỗi gap-* (S121). Class ∈ enum ĐÓNG (5 gap-*): gap-carry-dropped · gap-carry-aged · gap-owner-specifics · gap-decision-sunk · gap-underfill. ĐỌC detector H24-2, KHÔNG recompute streak. KHÔNG lấn H1/H2/lead-view.

## 📅 Runs

- **S124 (2026-07-15) FIRST real run / dogfood [fable-clone wave · counter=3 · retro-harvest @S132]:** **4 FLAG + 1 mechanism-INFORM-escalate.** gap-decision-sunk ×2: (HIGH) fable-escalation-risk sống CHỈ trong code-comment hmw.js:49-51 ("nếu frontmatter thắng ⇒ /fable-real NO-OP") không surface owner · (MED) 4 owner-decisions S124 không durable-record + H8-supersession chưa stamp (run.md còn nói "sẽ surface KHÔNG apply" — STALE vs applied-reality). gap-carry-dropped ×2: (MED-HIGH) usermem-R6 relocated-on-disk nhưng carry còn "chờ hub/cố-ý-không-dời" (false ×2) + auto-memory UNTRACKED chưa đạt goal 0-git · (MED) carry "2 vai chưa chạy" FALSIFIED bởi chính run này. gap-carry-aged 0-fired NHƯNG mechanism-INFORM: HANDOFF tiering 2-3 session < M=6 ⇒ carry-age **structurally-vacuous VẪN CÒN sau W3 re-stamp** (49 segment, carry-lines=5, streak≡1) → escalate owner: hạ M / miễn-tiering carry-history / đếm từ persistent-ledger. **Honest-zero ×2:** gap-owner-specifics 0 ("Opus 4.8 MAX" captured đủ = model+effort) · gap-underfill 0 — tránh task-hypothesized FP. INFORM: 6 product-carries owner-held = vắng-vì-GIỮ ≠ bỏ-rơi (anti-pattern #3); re-stamp đủ 8 khi closeout. **Lesson:** (1) blind-re-stamp lan trạng-thái stale — re-stamp PHẢI đi kèm re-verify từng carry; (2) risk trong code-comment = quyết-định chìm nếu không surface; (3) "0 flag" phải là honest-zero có disk-touch, không phải chưa-soi. Tag `[s124, first-dogfood, carry-age-vacuous-escalated, honest-zero]`
- **[Post-S124 resolution @S132 retro-note]:** fable-escalation ĐÃ ĐO S126 (spawn-model-audit: spawn-param THẮNG frontmatter ⇒ /fable-real SỐNG — flag HIGH resolved, carry h23-precedence đóng); worker-tier-pin đã stamp vào project-memory + hmw.js; carry-age tiering-vs-M escalation → thành direction "closure-cadence" đang bàn với anh + email hub 641bf8ca (S131). Lần chạy kế đọc baseline này.

## 🔄 Curate trigger
- Hook-cap >17.1KB → archive L2 `archive/<period>.md` (move-not-cut + seal-verify) + `_INDEX.md` pointer. Entry ≤1.5K.
