---
id: "0007"
date: 2026-06-03
status: Accepted
supersedes:
superseded-by:
affected-paths: []
affected-components: []
migration_confidence: medium
migration_source: "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).
