2026-10-13 14:04:02 +02:00
|
|
|
# INTENT
|
|
|
|
|
|
|
|
|
|
`web-fetcher` exists to give research repositories a shared, trustworthy way
|
|
|
|
|
to pull data from the web and from public APIs.
|
|
|
|
|
|
|
|
|
|
**Core commitments**
|
|
|
|
|
|
|
|
|
|
1. **Provenance first.** No value without source, URL, retrieval time and
|
|
|
|
|
payload hash.
|
|
|
|
|
2. **Never invent.** Missing data is an explicit `not_found`, never a guess.
|
|
|
|
|
Language models are not a data source here.
|
|
|
|
|
3. **Reusable adapters.** Statistics APIs, CSV/JSON endpoints and
|
|
|
|
|
spreadsheets behind one small interface. New sources are added as adapters
|
|
|
|
|
with offline fixture tests.
|
|
|
|
|
4. **Replayable.** An optional content-addressed cache reproduces a run from
|
|
|
|
|
the exact bytes it used.
|
|
|
|
|
5. **Minimal footprint.** Standard library only, so it runs inside executors
|
|
|
|
|
(for example rein-aharness on railiance01) without dependency management.
|
|
|
|
|
|
2026-10-19 13:51:40 +02:00
|
|
|
**Contract.** Consumers depend on the `Observation` fields and the spec
|
|
|
|
|
format documented in `README.md`; adapters may be added freely, but changing
|
|
|
|
|
those fields is a breaking change. Discoverable through reuse-surface as
|
|
|
|
|
`capability.infotech.provenance-fetch`.
|
|
|
|
|
|
2026-10-13 14:04:02 +02:00
|
|
|
Out of scope: crawling, scraping behind logins, LLM-based extraction,
|
|
|
|
|
scheduling (activity-core owns *when*), and execution orchestration
|
|
|
|
|
(rein-aharness owns *how it runs*).
|