IngaDB 0.1 · Product documentation
IngaDB/DocumentationAPI v1
Browse documentation
BENCHMARKS

Measured latency by graph size.

Incidents pool into events as evidence, so volume never bloats the graph — size is set by the tree's events and gates. Here is the analysis pipeline measured at each size.

MeasuredReproducibleRelease build

How the data flows

INCIDENTSMECHANISM GRAPHCOMPILE → ANALYSISloop detectedTOP EVENTP50 · 4.94%
01

Pool Incident volume aggregates into event probabilities by (component × failure mode) — count never grows the graph

02

Propagate The mechanism is a free graph, loops included. loops and over-deep branches are cut and reported with reasons

03

Compute A tree compiles per hazard and quantifies deterministically

The numbers

compute+persist what-if median
1101001000502005001000events (log scale)ms (log scale)36 ms1.35 s3.7 ms701 ms
eventsgatescompute+persistwhat-if medianwhat-if / s*
50836 ms3.7 ms≈ 270
20030138 ms24.0 ms≈ 41
50072445 ms120.2 ms≈ 8.3
10001441.35 s701 ms≈ 1.4

* Derived from median latency, single stream. Measured 2026-08-08 on an Apple M-series dev machine, release build, Docker, balanced OR trees (fanout 8). "Compute+persist" is one cold pass of the full pipeline — evidence quantification, cut-set enumeration, importance, fixed-seed MC, revision stamping. What-if is the median of 20 calls. A debug build is ~30× slower on this path.

Boundaries, reported as numbers

Realistic FTA/RCA sizes — tens to a few hundred events — recompute in milliseconds, so re-analysis on every edit and interactive what-if sweeps are free. Growth is super-linear (~n1.7 in this shape), which puts a full counterfactual at ~0.7 s around 1,000 events. Every boundary is reported inside the response:

  • Cut sets keep the top 10,000 per gate in probability order, with the discarded probability mass included in the response.
  • Propagation depth cuts at 24; every cut branch is listed in cut_branches with its reason.
  • k-of-n expansion stops at 64 combinations — beyond that, the tree is no longer one a person can review.

Reproduce it

terminalbash
docker compose -f deploy/docker-compose.yml -p bench up -d
CAUSAL_DB_URL=http://localhost:9876 python3 tools/benchmark-analyze.py

Where to go next