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

baseline GET /healthz  cold-connection  p50 117.1 · p95 320.8 · p99 394.8 · max 394.8 ms (min 96.3, σ 80.3, IQR 134.2)
baseline GET /healthz  keep-alive       p50 104.3 · p95 251.4 · p99 300.1 · max 300.1 ms (min 95.1, σ 42.4, IQR 24.6)

HTTP pipelining OFF  settled 300/300 replayed 0 errors 0
  spin critical path     p50 87.7 · p95 103.9 · p99 135.9 · max 308.6 ms (min 77.7, σ 15.7, IQR 11.5)
  commit→reveal (wire)   p50 87.0 · p95 103.1 · p99 135.3 · max 301.7 ms (min 76.9, σ 15.4, IQR 11.3)

HTTP pipelining ON   settled 300/300 replayed 0 errors 0
  spin critical path     p50 1.2 · p95 1.6 · p99 4.7 · max 511.6 ms (min 0.8, σ 29.4, IQR 0.1)
  commit→reveal (wire)   p50 86.0 · p95 99.7 · p99 121.8 · max 510.4 ms (min 77.3, σ 25.4, IQR 6.5)   ← ran during the animation gap, NOT on the critical path

WS   pipelining OFF  settled 300/300 replayed 0 errors 0
  spin critical path     p50 71.2 · p95 85.1 · p99 108.9 · max 512.9 ms (min 70.6, σ 26.3, IQR 1.7)
  commit→reveal (wire)   p50 70.4 · p95 84.1 · p99 108.2 · max 512.2 ms (min 69.9, σ 26.3, IQR 1.4)

WS   pipelining ON   settled 300/300 replayed 0 errors 0
  spin critical path     p50 1.0 · p95 1.5 · p99 2.4 · max 118.5 ms (min 0.7, σ 6.8, IQR 0.1)
  commit→reveal (wire)   p50 79.2 · p95 90.9 · p99 94.9 · max 117.5 ms (min 78.5, σ 4.2, IQR 1.6)   ← ran during the animation gap, NOT on the critical path

HTTP: pipelining removes 102.3 ms from the p95 critical path (103.9 → 1.6 ms) against a measured keep-alive RTT p50 of 104.3 ms.
