v0.1.11: Eliminate c=8 poll contention bottleneck Split endpoint mutex (ep.mu) into mu + timer_mu: - mu: connection map, accepted queue, retired list - timer_mu: timer queue, next_timer_id Handler threads calling scheduleTimer/scheduleConnPto/cancelTimer no longer contend with poll's packet processing. Phase 4 releases mu between batch iterations for fair scheduling. Throughput improvement: - c=1: 3,500 → 1,200,000 ops/s (340x) - c=8: 60,000 → 585,000 ops/s (10x) - c=8/c=1 scaling: 45% Full test suite: 0 failures, 1909 passed, 500 skipped