Hierarchy
These share a filename but hold different content — like MEMORY.md under Claude and under Codex. They are not duplicates, so both were kept, in separate folders.
What moved
Everything from the Metta Obsidian vault (388 markdown notes) and Apple Notes (251 live notes, read straight out of the local NoteStore.sqlite, no export needed) was merged with the 31 notes already in NotePlan. Attachments came too — 89 files, including the audio recitations and PDFs.
Notion was checked and deliberately skipped: the connected workspace belongs to a different person, and holds none of this material.
How a duplicate was decided
Every note was reduced to a fingerprint — frontmatter stripped, links and formatting flattened, whitespace collapsed, lowercased. Two notes merged only when they cleared one of these bars:
- Byte-identical fingerprints — merged outright, whatever they were called.
- Same title and near-identical text — the same note living in two apps.
- Same title, one copy an empty stub — Apple often held just a title and an image where Obsidian held the real note.
- Same journal day — one day's entry saved in both apps.
When copies disagreed, the longest version supplied the text and the Obsidian copy decided where it lands and what it is called, because that vault is a real tree while Apple's folders are flat.
Guards that stopped bad merges
- Daily notes were never merged on similarity. They share a template, so they look ~85% alike while being different days. Only same-date pairs were combined; 89 template lookalikes were left alone.
- Different titles were never merged, however alike the text. This kept
CLAUDE.mdapart fromAGENTS.md, and the PAO memory-system variants apart from each other. - Recovery fragments stayed quarantined. The
_recovered-fragmentsfolder held 15 byte-identical blobs each named after a real note. Matching on those names would have swallowed the real ones.
Honest caveats
- Nothing was deleted. The Obsidian vault and Apple Notes are untouched on disk. Two superseded NotePlan files were moved to
@Trash, not removed. - Ten image links were already broken in Obsidian before any of this — they point at a
Files/folder that does not exist in the vault. They are still broken; that was not introduced here. - Sixteen merges kept a handful of orphan words from the discarded copy — at most 18 words in one case, mostly transliteration variants of the same Sanskrit verse.
- The
nuora-subscription-analysisgit repository sitting inside the vault was left in place, on purpose. Repositories do not belong in a note store.
Reproducing it
The scripts that did this are in /scripts: applenotes.py (Apple Notes → markdown), inventory.py (fingerprints), dedup.py (duplicate detection), migrate.py (routing and writing), report.py (this page's data). This page reads data/report.json and contains no note content — titles, paths and counts only.