v0.3.0 — async extraction, source verification, read links
Async extraction jobs are now polled transparently: await scout.extract(...) behaves the same whether the server needed one pass or ninety. A large page returns a 202 job handle, which 0.2.0 could not handle at all.
- Async extract: free polling with backoff,
maxWaitMs(default 120s) whose timeout error carries thestatus_url— losing patience is not losing the extraction, the job keeps running server-side. winning_rung: "chunked"pluschunks/merge_conflicts. A non-zeromerge_conflictsmeans two passes disagreed on a scalar and the winner was chosen by position — part of that answer is a guess, and you can now see it.- Source verification documented on
ExtractResult, with its limits: token-like values are checked against the fetched page and dropped if absent, but prose is exempt and only array items are removed. Schema-valid remains a shape check plus a literal check — not a truth check. read({ links })typed and actually forwarded (previously typed but never sent).
Additive only; existing calls behave identically. Pay-on-success is unchanged and holds across the async path: charged once when a schema-valid result exists, never for a failed job, never per poll.