Skip to content

A failing voice endpoint never reopens the setup path — segments skip silently forever #97

Description

@wine-fall

What it is

When a configured voice endpoint starts failing (expired key, revoked key, provider outage), Director.synthesizeOrSkip (src/director.ts:599-610) retries, then prints "voice synthesis failed (…); skipping this segment" — per segment, forever. The setup offer never reopens because detectGaps only checks that a URL exists, not that it works. A user whose free-tier key lapses gets a silently mute radio with no path back to the guide short of the shell. Surfaced by the 2026-08-01 fish.audio onboarding research (suspected broader than fish.audio: any hosted endpoint can rot).

Spec

specs/spec03/03-03-guide-harness.md §7.1 (gap detection / trigger policy).

Done when

Repeated auth-shaped synth failures (401/402/403) surface as a named gap — one info line pointing at --setup, or the next boot's offer includes the voice gap again. Not a blocker, no auto-reopen mid-broadcast, no retry-storm. Unit test at the director/startup seam.

Metadata

Metadata

Assignees

No one assigned

    Labels

    engEngineering work: a measured defect or a performance targetenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions