Implement task 5: liveness and readiness probes for the HTTP stack.
- GET /healthz: 200 OK always (process + HTTP stack up). Deliberately
does NOT consult the media thread — liveness and readiness have
different restart semantics.
- GET /readyz: 200 + MediaStats JSON iff media thread answers Stats
within 250ms AND node is not draining AND sessions < max_sessions;
else 503 + JSON or "media thread unresponsive" (zombie case:
dead thread while HTTP stack still answers).
Unit test: readyz_503_when_media_thread_gone_but_healthz_200 (routes.rs)
shows the zombie-node failure path from 2026-07-04 review.
Integration test: readyz_200_with_stats_json_when_thread_alive
verifies 200 + valid JSON from a live media thread.
Both handlers follow the brief's signatures; no seam touches.
All existing tests remain green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012QndwfhjyTiZcUYp87dwW8
Signed-off-by: Aaron D. Lee <himself@adlee.work>