RAIN rng-node real-network test → https://rain-rng-node-lab-polt.onrender.com  (1000 spins per run, 60 ms animation gap, from joni-user7-86dfb47d47-5q65n)

baseline GET /healthz  cold-connection  p50 102.3 · p95 147.4 · p99 254.5 · max 254.5 ms (min 96.2, σ 26.3, IQR 14.4)
baseline GET /healthz  keep-alive       p50 101.3 · p95 264.8 · p99 293.7 · max 293.7 ms (min 93.9, σ 43.0, IQR 16.2)

HTTP pipelining OFF  settled 1000/1000 replayed 0 errors 0
  spin critical path     p50 88.5 · p95 101.8 · p99 119.3 · max 177.1 ms (min 79.7, σ 7.4, IQR 6.0)
  commit→reveal (wire)   p50 87.8 · p95 101.1 · p99 118.8 · max 170.8 ms (min 79.2, σ 7.3, IQR 6.1)

HTTP pipelining ON   settled 1000/1000 replayed 0 errors 0
  spin critical path     p50 36.0 · p95 49.0 · p99 67.5 · max 330.6 ms (min 5.1, σ 15.5, IQR 15.7)
  commit→reveal (wire)   p50 98.1 · p95 109.6 · p99 127.5 · max 329.5 ms (min 80.4, σ 14.1, IQR 15.5)   ← ran during the animation gap, NOT on the critical path

WS   pipelining OFF  settled 1000/1000 replayed 0 errors 0
  spin critical path     p50 91.1 · p95 100.2 · p99 101.5 · max 217.6 ms (min 90.5, σ 4.8, IQR 0.6)
  commit→reveal (wire)   p50 90.3 · p95 99.5 · p99 100.9 · max 216.9 ms (min 89.8, σ 4.8, IQR 0.5)

WS   pipelining ON   settled 1000/1000 replayed 0 errors 0
  spin critical path     p50 23.3 · p95 39.7 · p99 57.9 · max 210.2 ms (min 3.6, σ 10.3, IQR 1.5)
  commit→reveal (wire)   p50 82.9 · p95 99.3 · p99 120.0 · max 209.2 ms (min 82.4, σ 8.6, IQR 1.4)   ← ran during the animation gap, NOT on the critical path

HTTP: pipelining removes 52.9 ms from the p95 critical path (101.8 → 49.0 ms) against a measured keep-alive RTT p50 of 101.3 ms.
