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.