BRO-044: mtime.idx — cache each blob's introducing commit time

Now
DONE
Sev
MED

Every view that shows "when was this last touched" re-walks history to derive it: be list costs 2.8 s scoped to todo/ and 18 s at the repo root, and STILL renders entries unk at the LIST_MAX_WALK ceiling. Cache it instead, keyed by the OBJECT: (hashlet60 | type:4) -> ron60 ts, the commit time of the OLDEST commit carrying that blob or tree. A blob-keyed row never invalidates — new content is a new key — so the cache is filled once and only ever grows. Consumers: BRO-025's :list last-touch column via shared/lastcommit.js, and the postponed time-sort of TODO-004.

Input

Context

Goals

shared/mtimeidx.js: one kv64 lane, ext mtime.idx, in the store shard beside keeper.idx and meta.idx, filled incrementally by the history walk and read by every last-touch column.

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome