ungovr.providers.sgit.ai / The retrieval log — every fetch, including the failures
The retrieval log — every fetch, including the failures
The rule: write the raw response bytes to disk unmodified, hash those bytes, and log before parsing anything. A node that cannot name the bytes it came from is an assertion, not a retrieval.
Every number on this site derives from these bytes. Nothing on any page here is fetched at read time — the site makes no network call at all — so this log is the only thing standing between a published figure and an unsupported one.
| UTC | method | status | sha256 of the bytes | bytes | URL |
|---|---|---|---|---|---|
| 2026-09-09T01:47:30Z | GET | 200 | fa22c89c637f1e50… | 115 | https://data.ungovr.org/v1/meta/last-updated.json |
| 2026-09-09T01:47:31Z | GET | 200 | ac7ce7e32a70c65d… | 2182 | https://data.ungovr.org/v1/meta/schema.json |
| 2026-09-09T01:47:31Z | GET | 200 | 85d5b05756fe29f9… | 29099 | https://data.ungovr.org/v1/entities/index.json |
| 2026-09-09T01:47:32Z | GET | 200 | 4a4aa242a2d16941… | 1644990 | https://data.ungovr.org/v1/entities/us/ca.json |
| 2026-09-09T01:47:32Z | GET | 200 | 6b71da2f1a20fdff… | 109257 | https://data.ungovr.org/v1/laws/records/index.json |
| 2026-09-09T01:48:16Z | GET | 200 | ecb652db036b748f… | 29453 | https://data.ungovr.org/v1/entities/us.json |
| 2026-09-09T01:48:17Z | GET | 200 | 8d5e6db9e4056b2f… | 748 | https://data.ungovr.org/v1/entities/detail/us--ca--santa-barbara.json |
| 2026-09-09T01:48:17Z | GET | 200 | 7fa6641141d72042… | 146921 | https://data.ungovr.org/v1/entities/boundaries/us--ca--santa-barbara.geojson |
| 2026-09-09T01:49:05Z | GET | 200 | ec4d5238a7dd2c2f… | 584 | https://data.ungovr.org/v1/entities/detail/us--ca.json |
| 2026-09-09T01:49:05Z | GET | 404 | 9a599c694ea9b1dd… | 59 | https://data.ungovr.org/v1/laws/records/us/ca.json |
| 2026-09-09T01:49:06Z | GET | 200 | 66679b3cd1f7797c… | 15078 | https://data.ungovr.org/v1/laws/records/us.json |
| 2026-09-09T01:49:18Z | GET | 200 | ce8bc4744115befd… | 14265 | https://data.ungovr.org/v1/laws/records/us--ca.json |
| 2026-09-09T01:49:46Z | GET | 404 | 1101ad9a516874a8… | 75 | https://data.ungovr.org/v1/cgj/counties/us--ca--santa-barbara.json |
| 2026-09-09T01:49:46Z | GET | 401 | 525f078c1386edc6… | 164 | https://data.ungovr.org/v1/ai-laws/index.json |
| 2026-09-09T01:50:05Z | GET | 200 | 5c344d97b440690d… | 8853 | https://data.ungovr.org/v1/meta/openapi.yaml |
| 2026-09-09T01:50:05Z | GET | 200 | 484bdc2e83e1976e… | 224 | https://data.ungovr.org/.well-known/oauth-protected-resource |
| 2026-09-09T01:50:44Z | GET | 200 | d7518baf71f07b5e… | 2578858 | https://data.ungovr.org/v1/entities/us/ca/all.json |
| 2026-09-09T01:50:45Z | GET | 200 | e66f30636b3e178d… | 21468 | https://data.ungovr.org/v1/entities/fr.json |
| 2026-09-09T01:50:46Z | GET | 200 | fdb233ff13c4acc6… | 327513 | https://data.ungovr.org/v1/entities/gb.json |
| 2026-09-09T01:50:46Z | GET | 200 | 02f50b65433a4806… | 13316 | https://data.ungovr.org/v1/entities/de.json |
| 2026-09-09T01:50:47Z | GET | 200 | 9062951f8cf4bc6e… | 4070 | https://data.ungovr.org/v1/cgj/counties.json |
The raw response bytes were written to disk unmodified and hashed before anything parsed them. A node that cannot name the bytes it came from is an assertion, not a retrieval. The failures are rows here rather than absences, so a reader can see what was tried and refused.
The failures, and why they are rows
Three responses here are not 200, and they are the useful ones.
| Row | What it means |
|---|---|
404 on /v1/laws/records/us/ca.json | The path separator in the law corpus is --, not / — the same convention the entity detail endpoint uses. A guess, logged as a guess, then corrected to us--ca.json |
404 on /v1/cgj/counties/us--ca--santa-barbara.json | The CGJ corpus is keyed by bare county code (santa-barbara), not by entity slug. Two identifier schemes for the same county, in one API |
401 on /v1/ai-laws/index.json | Blocker B2. A key arrived while this report was being written and the row above is the last anonymous one — the corpus was then read verified 9 Sep 2026 |
Recording a refusal as an entry rather than leaving it as an absence is the point: a reader can see what was tried, what was declined, and that a shortcut existed and was not taken.
The 49-request sample
The coverage sample's per-request log is not inlined above — 49 near-identical detail fetches would drown the page — but it is complete and downloadable:
computation-1-sample-retrievals.tsv— timestamp, status, sha256 and URL for all 49
What is not here, and why
The AI-law corpus was read, and none of it is republished.
Six further requests were made under the key: the index, the vocabulary, the United States record, the JSON Schema, the export manifest, and one 404 that establishes the corpus is addressed by bare slug rather than by the entity API's -- convention. Their log rows — URL, status, byte count, sha256 — are metadata about our own requests and are in the table above.
Their content is not, and cannot be. That corpus carries its own licence block, whose grant field reads "No license is conveyed by receipt of this file." verified 9 Sep 2026 It is not CC BY 4.0, whatever the OpenAPI document declares at the top level. So this site describes it, measures it, and redistributes none of it — and tools/check_site.py fails the build if the payload ever appears in this repository or in the vault's tree.
This is the difference between a report and a mirror, and it is the one place on this project where the distinction had teeth.