No marketing benchmarks. Every result comes from automated tests in CI. The test files, datasets, and Rust harness are all in the repo. Run them yourself.
Attest ships a custom Rust storage engine as the default backend — append-only claim log with maintained indexes, file locking, and CRC32 crash recovery.
| Operation | Performance | Notes |
|---|---|---|
| Claim ingestion | 1.3M claims/sec | Append-only log with maintained indexes |
| Entity query | 8 µs | In-memory adjacency lookup |
| BFS traversal (depth 2) | 15 µs | Full subgraph extraction |
| Adjacency list build (1K claims) | 223 µs | Cold start from claim log |
rust/attest-store/benches/store_bench.rs. 1,000 pre-built claims, 100 entities, in-memory store. black_box() prevents compiler optimization.# Rust microbenchmarks $ cd rust && cargo bench # Python performance tests $ uv run pytest tests/integration/test_performance.py -v
The curator triages incoming claims: store, skip, or flag for review. We test this against a set of 250 expert-labeled claims.
| Metric | Result | Target |
|---|---|---|
| Overall accuracy | 98% | >80% |
| False positive rate | <1% | — |
| False negative rate | <2% | — |
This is the heuristic curator (no LLM). It runs offline, with zero API calls. LLM-backed curators can achieve higher accuracy on nuanced claims but require an API key.
$ uv run pytest tests/eval/test_curator_accuracy.py -v
The Python and Rust backends must produce identical results — same entity IDs, same claim hashes, same content IDs. We verify this with 96 golden test vectors covering entity normalization, claim ID computation, and content ID computation.
| What's tested | Vectors | Status |
|---|---|---|
| Entity normalization (Unicode, Greek, whitespace) | 32 | Bit-identical |
| Claim ID computation (SHA-256) | 32 | Bit-identical |
| Content ID computation (SHA-256) | 32 | Bit-identical |
# Generate vectors from Python $ uv run python scripts/generate_golden_vectors.py # Verify in Rust $ cd rust && cargo test
Traditional graph database benchmarks (LDBC SNB, etc.) measure query throughput and traversal latency. Those benchmarks don't test the things that make Attest different, because no other database does them.
Retract a source and every downstream claim is automatically marked as degraded. Corroborated facts survive. Tested end-to-end in test_provenance_cascade.py.
Same fact from two independent sources? The engine tracks it as corroboration, not a duplicate. Verified in test_symmetric.py.
Query the knowledge base as it existed at any past timestamp. Append-only claim log makes this free. Tested in test_time_travel.py.
Every fact traces back to its source. Every extraction traces to the conversation turn. No claim exists without provenance — the engine rejects it.
| Suite | Tests | Runtime |
|---|---|---|
| Python unit + integration | 514 | ~60s |
| Rust unit + golden vectors | 46 | ~3s |
| Eval (Hetionet, curator accuracy) | 6 | ~9 min |
# Run everything except slow eval tests $ uv run pytest tests/unit/ tests/integration/ -q # Run Rust tests $ cd rust && cargo test # Run full eval suite (slow, downloads data) $ uv run pytest tests/eval/ -m slow -s