cc-os/docs/adr/0007-lazy-freshness-write-h...

1.7 KiB

id date status supersedes superseded-by affected-paths affected-components migration_confidence migration_source
0007 2026-06-03 Accepted
medium docs/memory-system/03-architecture-decisions.md### ADR-007 — Lazy freshness: write-hook + session-start reconcile, no daemon/cron

0007 — Lazy freshness: write-hook + session-start reconcile, no daemon/cron

Context

The cache must reflect new/edited/deleted/renamed notes without becoming a resource hog or going stale on renames.

Decision

Option A (lazy). A PostToolUse hook updates the index on AI writes (single-file, prunes on delete). Manual edits are caught by a session-start reconcile (index update --since + prune of vanished paths). No daemon, no cron.

  • Rationale: The AI is the primary writer, so write-time hooks give event-driven freshness with no polling. The user rarely edits the vault by hand, so a session-start reconcile is enough; a continuous inotify daemon (the listen gem) would add an always-on process to manage/sync for negligible benefit. Matches the user's "lazy sync is fine" stance.

Consequences

Index freshness is handled lazily: a PostToolUse hook updates the index on AI writes, and a session-start reconcile catches manual edits and deletions, with no daemon or cron process running continuously. This avoids the overhead of an always-on inotify/listen process at the cost of freshness only being guaranteed at write-time or session-start rather than continuously.

Alternatives rejected

inotify/listen daemon (live freshness, but always-on process to manage — unnecessary). Cron reconcile ("seems silly" per user; session-start covers it).