Prune archived entries that exceed the age TTL (max_age_hours) or that push
the on-disk store past its size budget (max_disk_mb). The content file,
metadata, and FTS index are removed together so the two stores stay in sync.
Returns the number of entries removed.
Remove only the on-disk content + metadata files for an archive id, leaving
the FTS index untouched. Used by the FTS cap-enforcer so the .txt/.meta.json
blobs of rows it evicts can’t outlive their index entry as orphans (#417).
Describe the JSON structure of an archived entry: top-level keys with type hints,
array lengths + element types, etc. An optional dot/slash path (e.g. data.items.0)
navigates into the structure first. Returns None when the archive is missing or its
content is not valid JSON, so callers can fall back to a raw retrieval hint.