# CAIN-42 BFT performance report (MEASURED in-process; no network)

- **label**: MEASURED in-process (4 real engines, 1 process, no network, fast path OFF)
- **NORMAL**: n=200, p50_ms=86.6, p95_ms=132.23, p99_ms=263.81, p999_ms=453.87, max_ms=453.87, committed=200, messages_per_commit=31.2, throughput_commits_s=10.7
- **ONE_BYZANTINE_REPLICA (silent n4)**: n=200, p50_ms=74.93, p95_ms=99.83, p99_ms=124.96, p999_ms=130.63, max_ms=130.63, committed=200
- **NETWORK_DELAY (30% held, reordered)**: n=200, p50_ms=106.34, p95_ms=1061.7, p99_ms=3553.26, p999_ms=3578.16, max_ms=3578.16, committed=131
- **NETWORK_PARTITION (1|3)**: n=200, p50_ms=63.96, p95_ms=91.36, p99_ms=129.93, p999_ms=149.21, max_ms=149.21, committed=200
- **RECOVERY (restart + catch-up of 50 commits)**: n=5, p50_ms=274.48, p95_ms=313.84, p99_ms=313.84, p999_ms=313.84, max_ms=313.84
- **VIEW_CHANGE (primary crash -> new view installed)**: n=10, p50_ms=51.14, p95_ms=120.79, p99_ms=120.79, p999_ms=120.79, max_ms=120.79
- **process**: wall_s=167.6, cpu_user_s=64.1, cpu_sys_s=13.5, max_rss_mb=81.5
- **bottleneck_note**: In-process the cost is Ed25519 sign/verify + canonical JSON per message (~O(n^2) messages per commit). On the live cluster the consensus round is network-bound (prior audits: consensus = ~94% of hosted decision latency).
