knut-popsim — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The canonical, pure-Rust, wasm-clean generator of the synthetic Swedish 11-million-person, 12-label population graph the knut demos load.
- Does: Holds only the model: the label set + real-register scale counts (
LABELS, 12 labels A–L,Personthe hub), deterministic geo placement (geo), per-label tie probabilities (PERSON_TIE_PROB,EKONOMISKT_BISTAND_RATE), and a generic in-memoryPopGraphproduced bysimulate/schemafromSimParams. Determinism is a contract — a seeded LCG (norand) yields byte-identical graphs. No FalkorDB/Arrow/tonic/reqwest/tokio/filesystem deps, so it compiles forwasm32-unknown-unknown. - Key deps: None mandatory — only optional
serde(featureserde, forPopGraph(de)serialization). Deliberately dependency-light. - Shape: lib only; small. Modules:
lib(labels/params/simulate/schema/PopGraph),geo(placement). MIT OR Apache-2.0 licensed (unlike the Apache-2.0-only rest of the workspace). - Observed role in the workspace: The single source of truth for the population model.
knut-popvizre-exportsLABELS/geoand adds the Arrow→FalkorDB/Iceberg load path; the facett wasm demo callssimulate/schemadirectly and rendersPopGraphwith no backend.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: