Checklist when reviewing a crawler
Some things that are easy to forget but critical for new crawlers. Scope and per-attribute completeness are governed by the data priorities guide, and code conduct by the patterns — check the crawler against both before merging.
- Metadata
- All metadata meets Dataset metadata, and every claim in it is backed by the source or otherwise justified
- Crawler
- It follows strict interpretation
- It reads the best data path the source offers (see source recon)
- It emits as many entities as are available at the source, including past terms or expired designations the source publishes
- Entities carry the identifying attributes the source offers, and nothing is marked active or risky beyond what the source says
- Its effort is proportionate: no large amounts of code spent on details that don't matter to users, such as elaborate title cleaning (see priorities)
- It matches crawlers for similar sources, for example in its
list.*tag and topics - Topics follow topics
- A full live run leaves
issues.logempty- note: code designed to warn when there are issues with the data if something changes later is very welcome!
- all IDs are created via
Context.make_slugorContext.make_id(it enforces validity) and follow the entity ID guide, keyed on raw source values - QIDs validated by is_qid are an exception
- all Persons have a
nameproperty. Add first and last name viahelpers.apply_name. - each entity is emitted after the last helper that writes to it, such as
h.make_sanction(see patterns)