Gunnar

nordisk/nornir

README.md

<!-- ⚠ GENERATED by nornir from .nornir/README.md — DO NOT EDIT this file -->

<p align="center">
  <img src=".nornir/assets/nornir.webp" alt="Urðr, Verðandi, Skuld — the three Norns" width="720" />
</p>

# nornir remembers every state your workspace has been in

**Time-travelling project-management for multi-crate Rust.**

- **Time-travel**: append-only, git-SHA-addressed warehouse — query any past state of code, tests, and releases
- **Unified**: code-intelligence, releases, tests, and a knowledge graph in one catalog — what Maven + Jira should have been
- **Gate**: a self-discovering completeness gate — the test-matrix knows what's unbuilt and untested
- **Embedded**: single-file ACID catalog (skade-katalog) — no Nessie/Polaris service to stand up
- **Fast**: 2.0M ops/s · 0.31 µs p50 catalog reads, lock-free per core

<!--
  A curated headline, not `mashup`: nornir's suite is now 154 arms and its arm ids are
  DOTTED (`nornir.mimir.search.…`). mashup infers rival "systems" from `_`-delimited
  prefixes, so on this suite it reads every arm as its own system and emits an
  87-column, 26-row sheet nobody can read. The arms below are the ones this page's
  bullets actually claim; the whole 154-arm set lives in the run itself.
-->
<!-- nornir:gen:start:benches bold=false cols=queries_per_sec,lookups_per_sec,rows_per_sec,p50_us,p99_us,elapsed_ms,speedup_vs_full,telem_cores_busy_avg compare=nornir.mimir.search.corpus_bytes,nornir.mimir.search.ragnar_as_of_100k,nornir.mimir.search.vec_hnsw_1k,nornir.knowledge_query,nornir.warehouse_query,nornir.delta_rescan,nornir.plan_dag_assemble -->
**v0.5.4 · oden · 32 cores · 2026-07-23**

| workload | queries_per_sec | lookups_per_sec | rows_per_sec | p50_us | p99_us | elapsed_ms | speedup_vs_full | telem_cores_busy_avg |
|---|---|---|---|---|---|---|---|---|
| nornir.mimir.search.corpus_bytes | 2.0334M | | | 0.32 | 0.36 | 0.06 | | 0 |
| nornir.mimir.search.ragnar_as_of_100k | | 13.05M | | 0.08 | 0.09 | 2.51 | | 1 |
| nornir.mimir.search.vec_hnsw_1k | 0.0126M | | | 79.10 | 85.02 | 20.34 | | 1 |
| nornir.knowledge_query | 0.0205M | | | | | 19.48 | | 1 |
| nornir.warehouse_query | | | 315139 | | | 1.59 | | 1 |
| nornir.delta_rescan | | | | | | 10.28 | 2.85 | 0 |
| nornir.plan_dag_assemble | | | | | | 103.46 | | 1 |
<!-- nornir:gen:end:benches -->

<!-- nornir:gen:start:bench_status -->
**v0.5.4 · oden · 32 cores · 2026-07-23**

| | |
|---|---|
| host | `oden` · 32 cores |
| version | `0.5.4` |
| measured | 2026-07-23 |
| arms | 154 |
| tests | 154/156 passed — **2 FAILING** |
| publishable | yes |

⚠ **2 tests failed in this run:**

- `nornir.mimir.search.vec_hnsw_100k` — HNSW recall@10 0.2656 fell below floor 0.9000 (rows=100000, dim=128)
- `nornir.mimir.search.vec_hnsw_10k` — HNSW recall@10 0.7320 fell below floor 0.9000 (rows=10000, dim=128)
<!-- nornir:gen:end:bench_status -->

<sub>Every table on this page is **rendered** from that run by `nornir docs render nornir`
— re-render it, never retype it. The host and core count are part of the stamp on purpose:
numbers from two different machines are two different measurements and must never be
merged into one trend line.</sub>

## Read the real docs

- 📖 **[The complete manual — `docs/book.pdf`](docs/book.pdf)** — every subsystem chapter (design, warehouse, docs generation, vector search, release & history).
- 📄 **[Full overview — `.nornir/README-full.md`](.nornir/README-full.md)** — the detailed pitch, quickstart, design, the full competitive matrix, and all measured benchmarks.
- 📝 [`docs/book.md`](docs/book.md) — the manual, as Markdown. Search it with `nornir docs search nornir "<query>"`.