Purpose
-------
FS-510 — incremental lint cache. Content-hash keyed so unchanged files
are not re-linted on subsequent runs.
Responsibilities
----------------
- Compute deterministic content hashes for source files.
- Store and retrieve per-file lint results from a JSON cache file.
- Invalidate entries when file content, active rules, or OCT version change.
- Thread-safe read/write via ``threading.Lock``.
Diagnostics
-----------
Domain: OCT-LINTER
Levels:
L3 — cache hits/misses
L4 — cache I/O details
Contracts
---------
- Cache file lives at ``.option_c/cache/lint-cache.json``.
- Corrupt or missing cache file is silently replaced (no crash).
- Cache is never authoritative — a ``--no-cache`` flag bypasses reads.