Phase 1 delivers the complete durability and storage layer:
- WAL with crash recovery: Append-only journal with BLAKE3 checksums,
fsync guarantees, and proper seek-to-EOF on reopen
- Storage engine: sled-backed KVStore with scan_prefix for range queries
- Content-addressed storage: H:{hash}, V:{hash}, E:{hash} key patterns
- Ingestor: Background worker tailing WAL, writing to KV with 8-byte
aligned record headers for rkyv zero-copy deserialization
- Comprehensive tests: 31 tests covering crash recovery, round-trips,
and multi-cycle durability
New crates: stemedb-wal, stemedb-storage, stemedb-ingest
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
lint-level-warn-to-deny
AUDIT (2026-01-31)
Pattern: Workspace clippy lints set to "warn" instead of "deny"
Problem:
unwrap_used = "warn"- New code can introduce unwrap() without CI failureexpect_used = "warn"- New code can introduce expect() without CI failurepanic = "warn"- New code can introduce panic!() without CI failuremissing_docs = "warn"(rust lint) - separate concern, keeping at warn is OK
Risk: Drift will happen. The CLAUDE.md says "No Unwrap" but there's no enforcement.
Current State:
Cargo.tomllines 21-23 have clippy lints at warn levelclippy.tomlcorrectly allows these in tests (allow-unwrap-in-tests = true)Makefileruns clippy with-D warningswhich turns warnings into errors- BUT: developers running
cargo clippydirectly won't see errors
Fix Strategy:
- Change clippy lints from "warn" to "deny" in Cargo.toml
- This enforces at the workspace level regardless of how clippy is invoked
- Combined with clippy.toml's test exceptions, tests remain unaffected
FIX
- Cargo.toml:21-23 - Changed unwrap_used, expect_used, panic from "warn" to "deny"
- Verified:
cargo clippy --workspacepasses - Verified:
cargo test --workspacepasses (test exceptions via clippy.toml work)
- Verified:
ENFORCE
- CLAUDE.md line 29 - Updated "No Unwrap" rule to mention enforcement mechanism
DOCUMENT
- .claude/guides/local/quality-checks.md - Added "Enforced Lints" section documenting:
- Which lints are at deny level
- Why tests are exempt (clippy.toml)
- How to add new enforced lints
COMPLETE (2026-01-31)
Before: 4 lints at "warn" level (unwrap_used, expect_used, panic, missing_docs) After: 3 lints at "deny" level, 1 at "warn" (missing_docs - intentional)
Enforcement added:
- Workspace Cargo.toml now fails on unwrap/expect/panic outside tests
- CLAUDE.md documents enforcement
- quality-checks.md explains the system
No drift possible: Changes are baked into workspace config, not just docs.