48c099ba03
CI / check (pull_request) Successful in 1m40s
FsStore previously CBOR-decoded all .bin nodes into memory at startup, making cold-open O(n) in time and memory. Now it scans only filenames into a Set<Hash> at init and reads/decodes nodes from disk on first get(). has() and listAll() use the filename set; put() write-throughs to cache; delete() clears cache and disk. Index/meta migration still performs a one-time scan when _index/ is missing. Adds 12 new tests (L1-L12) covering startup-no-decode, lazy get, filename-based has/listAll, write-through put, delete cleanup, list operations, and migration/bootstrap regression. All existing tests pass unchanged. Fixes #85