Server-readiness hardening of the network layer so the engine is safe to run across many watchlists on a schedule (the hosted SearchPass worker), not just one laptop run. Stdlib-only; no data-contract or CLI-output change.
- Retry with jittered exponential backoff on timeout / connection errors (configurable; disable-able).
- Conditional caching via an injectable ResponseCache honoring ETag / Last-Modified (304 Not Modified reuses the cached body).
- Per-host rate limiting via an injectable RateLimiter, wired through fetch_source / runner.py.
- Fetch failures now log via logging.getLogger("pathscout.fetchers") instead of being silently swallowed.
- New config knobs on network sources: retries, backoff_base_seconds, min_host_interval_seconds, cache_enabled.
runner.py per-source resilience and the http_get mock point are unchanged. 57 tests green.