---
name: feedback-session-end-memory-write-verify
description: Session-end memory flush can silently produce 0-byte files (stub created, body truncated mid-write per gotcha #53). Verify byte count > 0 after every memory Write during closeout; re-write if empty.
metadata:
  node_type: memory
  type: feedback
  originSessionId: solution-erp-s46
---

S46 (2026-06-01): `/session-start` audit phát hiện S45 close-out để lại **2 file memory 0 byte** — `MEMORY.md` (index) + `feedback_background_spawn_visibility.md` (entry mới S45). Cả 2 cùng timestamp 14:47 (S45 flush). Index rỗng = session sau KHÔNG được auto-inject memory (degrade thầm lặng — S46 chạy bootstrap mà không có memory).

**Why:** Session-end flush tạo file stub rồi Write body; nếu Write truncate giữa chừng (gotcha #53 — S45 có test-specialist truncate) → file còn 0 byte mà KHÔNG báo lỗi. Memory file nằm NGOÀI git repo (`~/.claude/projects/.../memory/`) → `git status` không thấy → trôi tới session sau mới lộ.

**How to apply:**
- Sau MỖI memory Write ở `/session-end` Phase 1-2 → **verify byte count > 0** (`find <memdir> -name "*.md" -size 0` phải = 0). File 0 byte → re-Write NGAY trong session, đừng để trôi.
- `MEMORY.md` index = file quan trọng nhất (drives auto-inject) → verify đầu tiên.
- Recovery khi đã trôi: rebuild index từ các `feedback_*.md` còn lại; entry rỗng rebuild từ HANDOFF/STATUS reference (tên file đã ghi ở đó) — đánh dấu "reconstructed".
- Đề xuất AI_INFRA: thêm verify-byte-count step vào session-end skill mechanism (charter v2 — memory policy = AI_INFRA op).

Related: [[feedback-implementer-truncation-mitigation]] [[feedback-background-spawn-visibility]] [[feedback-store_memory-rebootstrap-protection]]
