BRO-043: per-repo cache, dropped by the watcher

Now
DONE
Ask
gritzko
Env
the resident pager process (a one-shot CLI never builds one)

Every view recomputes from scratch — be status rewalks the worktree, recurses every sub and rebuilds the quad each time it re-fires, and a warm pager pays that again per click. With JAB-032 a drained event names the dir it fell in, so a resident process can keep ONE record per repo of what a view produced and drop it the moment anything under that repo is touched. Cache lifetime is bounded by the watcher's: a failed start leaves the cache null and everything recomputes, so a missed event is never read back as truth. Rulings gritzko 2026-08-02; invalidation IS the design, storage is a Map.

Input

Context

The cache holds a view's OUTPUT, not its intermediate model — that is the difference between instant and 30%.

Goals

One record per repo, a fingerprint for what the watcher cannot see, and a hit that renders instantly.

Constraints

Pure performance work: with the cache disabled every view must behave exactly as it does today, byte for byte.

WIP

Design decisions

TODOs

Blockers and bummers

Outcome