Per-source refresh rates with notify-driven filesystem ingest #32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally filed by @coilysiren on 2026-05-17T20:50:34Z - https://github.com/coilysiren/repo-recall/issues/188
Problem
repo-recall today runs a single 150s refresh tick that re-scans every source on the same cadence. That treats all sources as equally fresh and equally expensive, which neither is:
The single-tick model also forces a global scan-version, which is fine for current consumers but constrains downstream tooling (session-lattice) to a coarse change signal.
Proposal
Refactor the refresh tier so each source declares its own trigger shape:
notifycrate (inotify on Linux, FSEvents on Mac, ReadDirectoryChangesW on Windows). Working tree, source files, Claude session JSONL, coily audit, doc files. Fall back to mtime-poll where notify is unreliable (network mounts, certain Windows configs)..git/.Each source maintains its own version counter. The aggregate scan-version becomes a hash over per-source versions, preserving the existing ETag contract.
Why this is the load-bearing architectural improvement
Every other crate addition on this list (structural-facts pass, code-metrics, search-router) gets meaningfully better with per-source refresh:
Without per-source refresh, every new source compounds the single-tick budget. With it, expensive ingest scales by change rate, not by source count.
Out of scope for v1
Open sub-questions
~/.claude/projects/and~/.coily/audit/. Worth testing early.Origin
Conversation 2026-05-17. The "single 150s tick is too coarse" framing came up while sizing the cost of adding tree-sitter and rust-code-analysis. Pairs with structural-facts, search-router, and code-metrics issues.