# CURATE synthesis — G1 close (em-main single-writer, C4)

> Workflow `wf_f32987b8-03f` · 2 general-purpose file-disjoint (1/file, NO same-file race). Closes finalize-review G1.

## Result (em-main verified git-truth, KHÔNG tin self-report)
| File | before → after | moved | 0-byte-loss |
|---|---|---|---|
| reviewer/MEMORY.md | 36738 → **24844B** (<25600 ✓) | 10 oldest (S33/S35/S43/S49 gates + cumulative + S40-ptr + 2 die-meta + 2 redundant H10-adap) | archive +22 -0 · grep-Fxf 10/10 byte-exact |
| investigator-codebase/MEMORY.md | 29819 → **23187B** (<25600 ✓) | 3 oldest (S66/S65ter/S65 recon) | archive +6 -0 · md5sum cut==append `cedc21eb` |

## Em-main completion (after curate)
- **reviewer gist gen:2** added (agent skipped gistUpdated=false) — 10 moved entries distilled compact: 6 routine gates [thấp] N/A-marker · 2 die-meta → cross-ref `[[feedback_agent_kill_recovery]]` · 2 H10-adap → cross-ref kept-S71 + `[[feedback_harness10_run_trace]]`. Closes A4 coverage-diff ("survive OR N/A"). (investigator gist gen:2 = agent did.)
- **budget.json re-measured** (script `measure-agent-memory.ps1`, transcribe not fabricate): reviewer/inv/cicd/impl-be updated; **l1_over_30kb=false ALL 11** + seeded_date→S71.

## Self-gate verdict: 🟢 G1 CLOSED
Both MEMORY.md <25600 auto-inject cap · archive additive (0-byte-loss) · _INDEX +pointers · gist gen:2 both · budget accurate. **Root-cause fixed structurally** (hmw.js RUN-TRACE writeGuard cấm sub tự-ghi MEMORY → future hmw.js runs no-race; custom-workflow lesson → `feedback_harness10_run_trace` #2). G2/G3/minor done em-main (user-memory + gitignore).
