brain
07/29/2026, 5:04 PM~/services/granola-ingest/ingest.ts, backed up first):
• Notes now marked ingested only after commit+sync succeeds — no more silent bookmarking of unsynced notes
• Script exits non-zero on sync failure so launchd surfaces it instead of logging "success"
• Slug suffix lowercased at write time so no new case-collisions get created
• Typechecks clean (bun build OK)
Case-collision cleanup: renamed 146 mixed-case meeting files to canonical lowercase in git, committed, re-synced (R146, zero content changes), re-embedded + extracted. Index has no duplicate pages, July 28 still queryable, git and disk fully consistent (the 158-vs-157 was just .gitkeep — false alarm).
I left the launchd job itself untouched. Next scheduled run will exercise the new fail-loud path. Want me to force one run now to confirm it behaves, or let the 15-min cycle pick it up?