memento-defrag
Archive stale memento notes. Moves low-certainty, unaccessed notes to archive/. No merging, no deletion. Run periodically to keep the vault tight.
Memento defrag — vault maintenance
Move stale notes to the vault's archive/ directory to keep the active vault focused. No merging, no deletion. Git history preserves everything.
The vault location is configured in memento.yml (default: ~/memento). Check ~/.config/memento-vault/memento.yml or ~/memento/memento.yml for the active config.
When to use
- Periodically (monthly or when note count feels high)
- User invokes
/memento-defrag - Before a major project shift to clean up accumulated noise
Process
-
Read all notes in the vault's
notes/directory. Parse frontmatter for each file:certainty,date,type,tags,validity-context,supersedes. -
Identify archive candidates. A note is a candidate if ANY of these are true:
certaintyis 1 or 2 AND the note is older than 60 days- The note is superseded: another note's
supersedesfield references this note AND the superseding note is older than 14 days (grace period in case the new note is wrong) validity-contextreferences a dependency or version that has since changed (checkpackage.jsonor similar if accessible)type: bugfixAND older than 90 days (bugfix context decays fast)
A note is NEVER a candidate if:
- It has
certainty4 or 5 (tested/shipped or established pattern) - It is linked by 3+ other notes (it's a hub note)
- It was created in the last 30 days regardless of certainty
-
For notes missing
certainty(pre-metadata notes), infer from context:- Has
source: manual-> treat as certainty 3 - Has
type: decision-> treat as certainty 3 - Has
type: discoverywithsource: session-> treat as certainty 2 - Default -> certainty 2
- Has
-
Show the candidate list to the user before moving anything. Format:
Archive candidates (X notes): - note-name.md — certainty 2, 75 days old, type: discovery - other-note.md — superseded by [[newer-note]] ... Notes staying active: YWait for user confirmation. The user can exclude specific notes.
-
Move confirmed candidates to the vault's
archive/directory. Create the directory if it doesn't exist. -
Update wikilinks. In any remaining active note that links to an archived note, keep the link but add
(archived)suffix:[[note-name]] (archived). -
Update project indexes. In the vault's
projects/directory, move archived note links from## Notesto a new## Archivedsection (create if needed). -
Commit to vault repo:
~/.claude/hooks/vault-commit.sh "defrag: archived N notes" -
Reindex QMD (if installed):
qmd update -c memento && qmd embed -
Report what was archived and what stayed.
Rules
- Never delete notes. Move to archive/ only.
- Never merge notes. Each note stays atomic.
- Never archive without user confirmation.
- Never touch
fleeting/orprojects/content (only update links in projects). - If QMD is not available, skip the reindex step.
- Notes in
archive/are still searchable via grep and git history, just not in the active QMD index.