01 / DEPENDABLE DELIVERYReuse validators on conditional requests
Keep a sourceโs validators with its last successful representation. Treat an unchanged response as a normal outcome rather than an empty feed. The delivery guide explains the relevant HTTP semantics and how to test them. Your consumer should distinguish a successful check, usable new content, and a parsing failure.
02 / DEPENDABLE DELIVERYRetry with bounds and source-level backoff
Give each source a bounded retry schedule and keep it separate from global concurrency controls. A transient failure, a configuration problem, and invalid content deserve different handling. Decide when the system should stop retrying automatically and ask for review. Recovery should not create a burst of requests that overwhelms a delayed source.
03 / DEPENDABLE DELIVERYMeasure freshness separately from availability
Expose the clocks that your operators and readers actually need. The last successful request, last accepted content change, and source publication time are different signals. Keep a durable checkpoint for completed work, not merely downloaded bytes. Test a restart between persistence and checkpoint advancement to make repeated processing predictable.
Rehearse an unchanged response and a restart
Use a local test source that can return new content, unchanged content, and a temporary failure. Verify that your worker keeps the last useful records while reporting each outcome accurately. Stop it after persistence but before checkpoint completion, then resume. A dependable first version handles that interruption without losing work or producing an unexpected second effect.