"After you submit a paid request and the line goes quiet, you do not know if it worked. Pretending you do is the bug."
Success and Failure Aren't the Only Answers
Most code models a network call as two outcomes: it worked, or it didn't. That model is a lie the moment money and a network are both involved. You send a paid synthesis request, and then the connection drops before the response comes back. Did the provider charge you? Maybe. Did it produce the audio? Maybe. You genuinely cannot tell from your side. This is the two-generals problem wearing an invoice.
Name the Uncertainty
Bellows refuses to collapse that uncertainty into a convenient lie. A timeout after submission is neither success nor failure — it's a distinct state: ambiguous. Marking it ambiguous is the whole trick. Call it failed and the natural next move is a retry, which risks paying a second time for audio you may already have. Call it success and you might mark a job done that produced nothing. Ambiguous is honest, and honesty is what lets you resolve it correctly later instead of guessing now.
Distinguish Before-Charge From After-Submit
Not every error is ambiguous. If the provider rejects the request before doing any work — bad input, auth error, rate limit — that's a clean failure, safe to retry, because no charge happened. The dangerous zone is specifically after you've submitted and before you've confirmed: a timeout, a dropped connection. Those become ambiguous. The distinction is the difference between "nothing happened" and "something might have."