After a search, read only the sources selected for the question and retain a disposition for every selected URL. Discovery, source selection and reading are separate stages. A fast partial read should not be presented as complete evidence.
Build a source-reading manifest
| Field | Purpose |
|---|---|
| Discovery query and market | Identify how the candidate was found |
| Candidate URL and selection reason | Make the reading choice reviewable |
| Normalized URL and identity | Avoid scheduling the same source twice |
| Read status and access time | Retain failures and source age |
| Required passage check | Decide whether the text completes the task |
| Partial-evidence decision | Stop, continue within budget or return unresolved |
Schedule selected work inside an account budget
Select from a validated SERP envelope, deduplicate source identities under an explicit URL policy and cap the number of URLs admitted to the reading stage. Use a worker count within account capacity, a per-read deadline and a total work budget.
The accompanying three-worker fixture retains one successful input and one explicit timeout while deduplicating a repeated input. That validates the local partial-failure contract; it is not a provider latency or completeness benchmark. The Python executor implementation has its own guide.
Decide what partial evidence permits
This page completes the source-selection and read-disposition task. It does not repeat a broad RAG architecture, a Python thread-pool tutorial or a generic parallel-search performance promise.
- Do not count a failed read as evidence against the source’s factual claim.
- Check whether the remaining sources support the required answer.
- Spend another read only when it fits the defined budget and adds relevant evidence.
- If a required claim remains unsupported, omit it or return an unresolved result.
Reference documentation: www.searchcans.com — /google-search-api; www.searchcans.com — /reader-api.