pdftract/crates
jedarden 624fc49290 feat(pdftract-172kr): implement filesystem layout for cache directory
Implements Phase 6.9.1: the two-byte-prefix directory scheme that keeps
any single directory under 65K entries even at millions of cached entries.

Changes:
- Add zstd dependency to Cargo.toml
- Create cache module with layout.rs implementing path construction
- Add CacheIndex struct for index.json metadata (schema version, timestamps)
- Implement entry_path(), fingerprint_dir(), parse helpers
- Add load_index()/save_index() for cache metadata persistence
- Ensure mkdir -p semantics with ensure_fingerprint_dir()
- 18 tests covering all acceptance criteria

Acceptance criteria verified:
✓ entry_path produces correct two-level prefix layout
✓ Different opts_hashes for same fingerprint share fp_dir
✓ Different fingerprints with same prefix share first-level dir
✓ index.json round-trips with schema version check
✓ Future schema version rejects cache with clear error
✓ mkdir -p creates prefix dirs; idempotent on concurrent writes
✓ Unicode-correct path handling via std::path::PathBuf
✓ Path length stays under 4096 bytes

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-23 04:40:25 -04:00
..
pdftract-cer-diff fix(pdftract-2t9): update regression-corpus step image and secret 2026-05-18 01:20:53 -04:00
pdftract-cli feat(pdftract-39g4j): implement --receipts CLI flag + ExtractionOptions threading 2026-05-23 04:27:36 -04:00
pdftract-core feat(pdftract-172kr): implement filesystem layout for cache directory 2026-05-23 04:40:25 -04:00
pdftract-py feat(pdftract-67tm8): implement MCP stdio transport with integration tests 2026-05-23 00:16:42 -04:00