fdad162240
The local library index used tokio::fs::write directly on the canonical library_index.json path. That truncates the existing index before writing the new bytes, so a crash or power loss could leave a zero-length or partial cache. Write the index through a sibling temp file, sync it, rename it over the canonical path, and sync the parent directory on Unix. Loading the index also sweeps a stale temp file before parsing the canonical file. That keeps the existing cache valid after an interrupted write while still letting a normal scan rebuild from disk if the canonical index is missing or corrupt. This follows the existing temp-plus-rename pattern used for version.ini and install intents. It intentionally does not add locking; local library writes are already serialized by the peer operation flow. Test Plan: just fmt just test just clippy Refs: none