dig-store-cache 0.1.1

On-disk LRU (pluggable-policy), pin-aware, crash-safe cache of already-verified DIG `.dig` capsules for the DIG Node — the cache + reshare leg of the content-replication flywheel.
Documentation
# dig-store-cache runbooks

## Deployment (release to crates.io)

`dig-store-cache` is a library crate published to crates.io on a version tag (per-merge-tag model,
CLAUDE.md §3.6-B).

1. A PR bumps `version` in `Cargo.toml` (SemVer; version-increment CI gate enforced) and merges to
   `main` via the full gate set (fmt, clippy, test, coverage ≥80%, build, commitlint).
2. `.github/workflows/release.yml` regenerates `CHANGELOG.md` (git-cliff), commits it, and pushes the
   `vX.Y.Z` tag using `RELEASE_TOKEN`.
3. The tag triggers `.github/workflows/publish.yml`, which `cargo publish --locked`es to crates.io
   using `CARGO_REGISTRY_TOKEN` and cuts a GitHub Release.

Prerequisites (repo secrets):
- `CARGO_REGISTRY_TOKEN` — crates.io publish token (org-level).
- `RELEASE_TOKEN` — a classic PAT allowed past branch protection (pushes the changelog commit + tag).

Release ordering: `dig-store` must be published to crates.io before `dig-store-cache` (already is,
≥0.5). First release only: `release.yml` does not auto-run on the first squash-merge — kick it with an
empty commit (RELEASE_TOKEN) or `workflow_dispatch`.

Verify: `cargo search dig-store-cache` shows the new version; the GitHub Release exists for the tag.

## Local development

Prerequisites: a stable Rust toolchain (`rustup`), `cargo-llvm-cov` + `cargo-nextest` for coverage.

```sh
cargo fmt --all --check
cargo clippy --all-targets -- -D warnings
cargo test                      # or: cargo nextest run --all
cargo llvm-cov nextest --all --fail-under-lines 80   # coverage gate
cargo doc --no-deps
```

There is no service to run — the crate is a library consumed by dig-node. Point a `Cache` at any
writable directory (`Cache::open(root, CacheConfig::default())`).