# Atlas Maintenance Checklist

This file documents the current maintenance contract so the implementation stays aligned.

## 1) Property policy
- **Unitary / strict**
  - MID
  - Wikidata QID
  - birth date
  - coordinates
- **Lenient for now**
  - VIAF (many-to-one / cluster-style)
  - ISNI
  - other ambiguous authority identifiers

## 2) Source responsibilities
- `resolve_entity`
  - searches / resolves
  - marks `wikidata_status = hit`
  - does not persist the full Wikidata payload by default
- `maintain_entities.py`
  - downloads the full Wikidata entity object
  - persists it
  - performs type-specific enrichment
  - supersedes conflicting claims when appropriate

## 3) Type inference
- Use Wikidata `P31` as the primary type signal.
- Reason over the Wikidata ontology hierarchy first.
- If the ontology cannot decide, ask the LLM.
- If the type is already clear, skip to enrichment + write-back.

## 4) Type-specific enrichment
- **Person**
  - birth date (strict)
  - birth place
  - citizenship
- **Location**
  - latitude (strict)
  - longitude (strict)
  - country / region when available
- **Organization**
  - inception
  - headquarters
  - industry

## 5) Supersession rules
- Never silently overwrite a claim.
- If a stronger claim replaces a weaker one:
  - mark the old claim as `superseded`
  - create the new claim as `active`
- Normal JSON must show only active claims.

## 6) JSON output policy
- Normal `resolve_entity` output should stay compact and human-readable.
- Use `payloads=true` for raw payload snapshots.
- Use `debug=true` for full claim/provenance detail.

## 7) Persistence policy
- Persist the full Wikidata object once, then reuse it.
- Refresh only on explicit command.
- Maintenance is the only path that should write enriched payloads back.

## 8) Verification
For a single entity, the test loop is:
1. resolve
2. maintain
3. resolve again
4. verify that type, identifiers, and type-specific enrichment are correct
