- §8 dynamic timeout: add resolution_timeout() (512/1K/2K/4K ->
180/240/360/600s); generate() uses it for the POST and image download.
timeout_seconds now defaults to 0 = auto-by-resolution; an explicit
positive value overrides. Validation allows 0, rejects negatives.
- _to_int now returns the supplied default on parse failure (was 0), so a
bad connect_timeout_seconds falls back to 30 instead of failing as 0.
- Tests: +5 (resolution map, auto vs override timeout, connect fallback).
- tasks.md §19.1/§19.2: tick unit-test item, note runner is pure-logic.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>