f4842ed100
- Use json_schema structured output (newer LM Studio rejects json_object), escalating through json_schema -> json_object -> text and pinning the first format the server accepts to avoid wasted round-trips. - Make per-article failures non-fatal and commit incrementally so a single timeout no longer discards the whole batch. - Raise default timeout to 180s (configurable via GOODNEWS_LLM_TIMEOUT) for larger local reasoning models. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>