Same contract
Each stack exposed ping, users, projects, events, search, and mixed-flow endpoints against PostgreSQL-backed application data.
Benchmark evidence
The 1.0.12 candidate, its exact 1.0.4 control, and three production-shaped peers ran the same PostgreSQL-backed contract in Kubernetes. Results are medians of every retained repetition, with correctness, repeatability, and cluster-stability gates.
Method
This is an end-to-end, paced homelab workload—not a max-throughput or capacity ceiling.
Each stack exposed ping, users, projects, events, search, and mixed-flow endpoints against PostgreSQL-backed application data.
Each app used one replica, 1 CPU, 512MiB, ClusterIP exposure, and identical database pool bounds. PostgreSQL used 1 CPU and 1GiB with a 512MiB memory-backed data volume. Three pinned k6 runners were used sequentially—one per retained stage, never one per cell—at 1 CPU and 512MiB.
Every cell had a 5s warmup and 20s measured window. The base used three rotated repetitions; CV-flagged groups received complete three-sample batches with every value retained, up to nine samples. CV and raw summaries remain available.
1.0.12 campaign
Each number is the median of all retained samples shown in the n column. CV is included because a fast result without repeatability is weak evidence; 0.00% failures and 100.00% checks were mandatory.
24 of 25 stack/profile groups met every repeatability limit. Spring ping average-latency CV finished at 15.58% against the 15% limit after the maximum nine retained samples. No sample was discarded and no threshold changed; every Nidus candidate/control group passed.
| Profile | Stack | n | median req/s | median avg | median p95 | req/s CV | avg CV | p95 CV | failed | checks |
|---|---|---|---|---|---|---|---|---|---|---|
| ping | rust-nidus 1.0.12 |
3 | 156.35/s | 414.79us | 684.29us | 0.02% | 0.71% | 4.01% | 0.00% | 100.00% |
| ping | python-fastapi |
3 | 154.76/s | 1.27ms | 2.02ms | 0.10% | 2.88% | 2.21% | 0.00% | 100.00% |
| ping | java-springrepeatability note |
9 | 156.35/s | 462.31us | 744.51us | 0.16% | 15.58% | 12.65% | 0.00% | 100.00% |
| ping | node-express |
3 | 156.21/s | 920.28us | 1.36ms | 0.08% | 3.07% | 4.66% | 0.00% | 100.00% |
| users | rust-nidus 1.0.12 |
3 | 301.26/s | 1.17ms | 1.79ms | 0.19% | 2.81% | 0.89% | 0.00% | 100.00% |
| users | python-fastapi |
3 | 279.41/s | 3.31ms | 4.78ms | 1.28% | 11.62% | 3.81% | 0.00% | 100.00% |
| users | java-spring |
3 | 306.20/s | 666.61us | 1.22ms | 0.24% | 8.35% | 8.72% | 0.00% | 100.00% |
| users | node-express |
3 | 298.42/s | 1.48ms | 2.65ms | 0.22% | 3.31% | 4.50% | 0.00% | 100.00% |
| projects | rust-nidus 1.0.12 |
3 | 443.34/s | 1.11ms | 1.67ms | 0.14% | 2.57% | 3.15% | 0.00% | 100.00% |
| projects | python-fastapi |
3 | 381.15/s | 4.06ms | 5.59ms | 1.01% | 5.22% | 5.86% | 0.00% | 100.00% |
| projects | java-spring |
3 | 453.54/s | 648.42us | 1.25ms | 0.11% | 3.00% | 4.07% | 0.00% | 100.00% |
| projects | node-express |
3 | 437.53/s | 1.37ms | 2.53ms | 0.36% | 5.04% | 10.27% | 0.00% | 100.00% |
| events | rust-nidus 1.0.12 |
3 | 300.57/s | 1.23ms | 1.78ms | 0.11% | 1.97% | 2.83% | 0.00% | 100.00% |
| events | python-fastapi |
3 | 273.89/s | 3.86ms | 5.25ms | 1.64% | 12.87% | 5.82% | 0.00% | 100.00% |
| events | java-spring |
3 | 305.38/s | 740.54us | 1.30ms | 0.13% | 5.15% | 2.79% | 0.00% | 100.00% |
| events | node-express |
3 | 298.92/s | 1.43ms | 2.50ms | 0.08% | 3.19% | 3.47% | 0.00% | 100.00% |
| mixed | rust-nidus 1.0.12 |
3 | 231.55/s | 991.29us | 1.71ms | 0.16% | 6.47% | 2.02% | 0.00% | 100.00% |
| mixed | python-fastapi |
3 | 215.62/s | 3.47ms | 5.14ms | 0.57% | 6.64% | 6.21% | 0.00% | 100.00% |
| mixed | java-spring |
3 | 233.42/s | 774.92us | 1.75ms | 0.03% | 1.13% | 1.63% | 0.00% | 100.00% |
| mixed | node-express |
6 | 228.54/s | 1.39ms | 2.51ms | 0.54% | 11.30% | 11.60% | 0.00% | 100.00% |
Publication status: qualified. 179 raw summaries, 179 executions across 3 stage-pinned k6 runners, 60 consecutive preflight stability samples, and 687 continuous health samples.
Open the machine-readable summary Verify the evidence manifestVersion comparison
Both Nidus binaries ran inside this same campaign, on the same node and matrix. Positive throughput change is better; negative latency change is better. The original 1.0.4 publication is not used to calculate these deltas.
| Profile | samples 1.0.4 / 1.0.12 | 1.0.4 req/s | 1.0.12 req/s | req/s Δ | 1.0.4 avg | 1.0.12 avg | avg Δ | 1.0.4 p95 | 1.0.12 p95 | p95 Δ |
|---|---|---|---|---|---|---|---|---|---|---|
| ping | 3 / 3 | 156.31/s | 156.35/s | +0.03% | 405.14us | 414.79us | +2.38% | 645.69us | 684.29us | +5.98% |
| users | 3 / 3 | 300.76/s | 301.26/s | +0.17% | 1.20ms | 1.17ms | -2.06% | 1.77ms | 1.79ms | +0.94% |
| projects | 3 / 3 | 442.29/s | 443.34/s | +0.24% | 1.16ms | 1.11ms | -4.39% | 1.70ms | 1.67ms | -1.66% |
| events | 3 / 3 | 300.51/s | 300.57/s | +0.02% | 1.23ms | 1.23ms | +0.41% | 1.85ms | 1.78ms | -3.46% |
| mixed | 6 / 3 | 230.63/s | 231.55/s | +0.40% | 1.19ms | 991.29us | -16.89% | 1.88ms | 1.71ms | -8.89% |
The control is built from the exact v1.0.4 tag at ddbfd3e29bfd; the 1.0.12 benchmark candidate is local source c0b6d82e9649. Only documentation and release metadata changed after that measured source commit.
1.0.4 historical
This preserves the site’s June 30, 2026 results exactly. Its raw k6 summaries and repetition series were not retained, so it remains useful historical evidence but is excluded from version-delta calculations.
| Profile | Stack | req/s | avg latency | p95 latency | failed | checks |
|---|---|---|---|---|---|---|
| ping | rust-nidus 1.0.4 |
156.89/s | 423.72us | 659.57us | 0.00% | 100.00% |
| ping | python-fastapi |
148.26/s | 3.35ms | 4.22ms | 0.00% | 100.00% |
| ping | java-spring |
154.82/s | 1.13ms | 1.88ms | 0.00% | 100.00% |
| ping | node-express |
155.44/s | 1.08ms | 1.78ms | 0.00% | 100.00% |
| users | rust-nidus 1.0.4 |
297.48/s | 1.59ms | 3.45ms | 0.00% | 100.00% |
| users | python-fastapi |
278.86/s | 3.32ms | 6.01ms | 0.00% | 100.00% |
| users | java-spring |
292.90/s | 1.97ms | 3.82ms | 0.00% | 100.00% |
| users | node-express |
291.55/s | 2.11ms | 4.31ms | 0.00% | 100.00% |
| projects | rust-nidus 1.0.4 |
423.94/s | 1.95ms | 3.46ms | 0.00% | 100.00% |
| projects | python-fastapi |
380.64/s | 4.03ms | 7.17ms | 0.00% | 100.00% |
| projects | java-spring |
417.12/s | 2.26ms | 4.17ms | 0.00% | 100.00% |
| projects | node-express |
414.23/s | 2.37ms | 4.24ms | 0.00% | 100.00% |
| events | rust-nidus 1.0.4 |
282.36/s | 2.97ms | 4.07ms | 0.00% | 100.00% |
| events | python-fastapi |
267.55/s | 4.50ms | 6.86ms | 0.00% | 100.00% |
| events | java-spring |
281.79/s | 3.03ms | 4.22ms | 0.00% | 100.00% |
| events | node-express |
279.67/s | 3.23ms | 4.65ms | 0.00% | 100.00% |
| mixed | rust-nidus 1.0.4 |
232.59/s | 2.72ms | 7.05ms | 0.00% | 100.00% |
| mixed | python-fastapi |
223.82/s | 4.01ms | 8.35ms | 0.00% | 100.00% |
| mixed | java-spring |
232.94/s | 2.70ms | 6.84ms | 0.00% | 100.00% |
| mixed | node-express |
230.30/s | 3.03ms | 7.30ms | 0.00% | 100.00% |
Historical run label: 20260630T001754Z. One 20s measured window per stack/profile, 8 VUs, and the same paced profile shape.
Interpretation
Under this conservative Kubernetes workload, the 1.0.12 candidate and every peer completed the shared contract with zero request failures. The Nidus version deltas are directly paired, and all ten Nidus groups met the repeatability policy.
The req/s values are end-to-end paced workload results on a shared homelab. They describe this contract and envelope, not absolute production capacity.
The full qualified result set, repetition medians, CV, identities, row-count checks, and cluster-health evidence ship with the repository. The Spring qualification is preserved; benchmark source does not ship.