SOP-04 — Source silence: did-not-answer and not-read
Owner: Owner-operator (Document Owner and Records Owner for every SOP; no delegate exists). Version 2026-10-09 · effective 2026-10-04 · reviewed every 90 days · last reviewed 2026-10-09 · next review due 2027-01-07.
Purpose
Make a source that could not be read visible on the receipt as a fact, never as an empty result.
Scope
Every check, every origin.
Procedure
- did_not_answer: the source exists and was attempted but returned an error, timeout, 429 or unparseable content. The check prints did_not_answer with the time; the receipt lists it in did_not_answer[]; a batch row is marked partial and retried after 24 h, up to the retry limit.
- not_read: the source is known but not read by policy or access (bot wall, registration, offline program). It is printed on every receipt and in Known Limits with the reason.
- Rate limits (SAM.gov quota, DOL 429) set a hold in db.*_api_state; while held, the check prints did_not_answer and does not retry into the limit.
- Sentinel raises source_silent_today when ≥5 receipts in a day have >50% did_not_answer; live_source_down_2h when a live endpoint fails 8 consecutive checks.
- No copy anywhere may describe a did_not_answer or not_read check as 'no results', 'clear' or 'none found'.
- Refused reads. A source whose robots.txt disallows automated reading, or that answers only behind a login, CAPTCHA or anti-automation control, is printed as 'not read — the source refuses automated reads' with the official link, dated. It is never bypassed, never read under a borrowed browser identity, and never written as 'no row'. Where the body publishes its own alerts or exports, the owner subscribes by hand and the subscription is recorded; a dated row is printed only from a published export.
Records this procedure produces — and who keeps them current
| Record | Where | Updated by | Update trigger | Retention | Public |
|---|
| Per-receipt telemetry | receipt_registry.telemetry | system | every receipt | indefinite | True |
| API hold state | db.sam_api_state, db.dol_api_state | system | rate-limit response | rolling | True |
Evidence
/unanswered · /api/public-record/known-limits · /audit
Change log
| Date | Change |
|---|
| 2026-10-06 | Written as SOP. |
| 2026-10-09 | Refused-read rule written down: costars.state.pa.us, emarketplace.state.pa.us, pennbid.bonfirehub.com and ohiobuys.ohio.gov all publish robots.txt Disallow: / (read 2026-10-09) → not read, official link printed, owner e-alerts. The legacy FedConnect read under a browser user-agent was retired the same day as a breach of this rule. |
Quality Manual · All SOPs · Records Register