01c1ae2605
After getting fish-s2 finally healthy on attempt #5, the playbook's verify still failed because /v1/audio/voices doesn't exist. Discovery: the Fish wrapper has a custom API surface, not OpenAI-compatible. Real endpoints: POST /v1/tts — synthesis (text body, optional `references` field for voice cloning, returns audio/wav) GET /v1/health — liveness (used by Docker healthcheck) GET /heartbeat — alternate liveness signal GET / — Swagger Editor UI for the OpenAPI spec No /v1/audio/speech, /v1/audio/voices, /v1/models — those return 404. Updated: * Playbook verify — replaced the JSON-shape /v1/audio/voices check with a POST /v1/tts smoke that asserts a real RIFF WAV comes back. * README API section — replaced the OpenAI-compat examples with Fish's actual {"text":"...","references":[...]} body shape. * README disk footprint — corrected ~9 GB → ~11 GB (codec.pth was larger than I estimated; 1.9 GB + 9 GB safetensors). * README Lessons learned section — recorded the 5-iteration deploy story so the next time we touch a Fish-style upstream we don't re-walk the dockerfile / target / pre-pull / API-shape traps.