Audit my entire auto-memory system. Read every file in the memory directory referenced by my user-level CLAUDE.md (under `~/.claude/projects/<slug>/memory/`), plus MEMORY.md itself. Cross-reference against my current project CLAUDE.md, global CLAUDE.md, and the actual codebase.

## Audit Criteria

For each memory file, apply these checks:

1. **Orphan** — MEMORY.md links to a file that doesn't exist, or a memory file exists in the dir but isn't indexed.
2. **Stale code reference** — memory names a function, file path, setting, env var, or flag. Verify with grep/Read that it still exists. If renamed/removed, the memory is inaccurate.
3. **Decayed project state** — entries like "spec X not yet implemented" / "deferred to date Y" / "migration scheduled for Z" where the state has resolved either way (shipped, abandoned, date passed). Project memories decay fast; a project memory older than ~90 days deserves a sanity check.
4. **CLAUDE.md duplicate** — memory restates a rule already covered in project CLAUDE.md or global CLAUDE.md. The instruction file wins; memory is redundant.
5. **Code-derivable** — memory describes architecture, file paths, conventions, or patterns that current code already documents. Violates "what NOT to save."
6. **Superseded** — a newer entry on the same topic makes an older one redundant.
7. **Fixed-bug recipe** — debugging notes for a fix that's already committed. `git log` is authoritative.
8. **Vague / non-actionable** — too generic to actually shape behavior next session ("be careful with the database", "think about edge cases").
9. **Consolidation candidate** — multiple entries from one investigation that should collapse to a single conclusion entry.
10. **MEMORY.md hygiene** — index lines > 150 chars, total file length approaching 200 lines (truncation risk), broken markdown links, alphabetical/grouping drift.

## Process

For each memory file, classify as **KEEP / EDIT / DROP / MERGE**:
- **EDIT**: note specifically what to change
- **DROP**: cite which check above triggered it (one number)
- **MERGE**: name the target memory it should fold into

When checking stale code refs, actually run grep/Read against the codebase — don't skip the verification because the memory "looks reasonable."

## Output

1. **Counts** — before / after, broken down by classification
2. **Per-file table** — one row per memory: `file | classification | check# | one-line reason | action`
3. **Conflicts surfaced** — any case where memory says X but current code/CLAUDE.md says Y; these are the highest-priority drops
4. **MEMORY.md issues** — any hygiene findings on the index file itself
5. **Suggested re-grouping** — if the index has drifted (entries in wrong section, sections too large/small), propose a tightened structure

## Constraint

**Present-don't-fix.** Show the findings, do not auto-delete. Wait for explicit approval — either per-batch ("drop the orphans", "drop checks 3 and 4") or wholesale ("apply everything flagged"). Only after approval: delete files, edit files, update MEMORY.md.

After applying approved changes, verify:
- MEMORY.md is under 200 lines and every line is under 150 chars
- Every link in MEMORY.md resolves to a file that exists
- Every file in the memory directory is indexed in MEMORY.md
