v0.11.0 — surface provider errors as HTTP 400 instead of empty text RunResult gains provider_error: str | None. chat_completions checks it ahead of exit-code / parse-error handling and returns 400 with the provider's message instead of a 200 with empty text. run_with_json_retry stops re-prompting as soon as a provider error appears instead of burning the retry budget against a rejection that will never parse. Breaking for API clients that assumed a 200 always meant a usable (if empty) completion. Adapters that don't set provider_error see no change. 169/169 tests green.