folio provenance
folio provenance <SHEET> <RECORD_ID> <FIELD> [--history]Reads provenance.jsonl and returns the latest entry for the given cell.
With --history, returns the full append-only chain (oldest first → most
recent last).
Latest
$ folio provenance ./customers cust_001 country_code{ "record_id": "cust_001", "field": "country_code", "source": "python", "actor": "agent:demo", "at": "2026-05-10T10:16:35Z", "input_hash": "sha256:ce82..."}If there’s no entry, the command prints null:
$ folio provenance ./customers cust_001 nonexistent_fieldnullFull history
$ folio provenance ./customers cust_001 country_code --history[ {"source":"python","actor":"agent:demo","at":"2026-05-08T...","input_hash":"sha256:..."}, {"source":"human","actor":"agent:human:akiko","at":"2026-05-09T...",}, {"source":"python","actor":"agent:demo","at":"2026-05-10T...","input_hash":"sha256:..."}]Read top-to-bottom for chronological order. The Viewer’s history tab renders this as a vertical timeline with a colored ring per source.
Use cases
- “Why is this field this value?” —
--historyshows the chain. - “Which model wrote it?” — the latest
modelfield foraientries. - “How much did this materialize cost?” — sum
cost_usdacross allaientries.
Comparison with folio status
folio provenance | folio status |
|---|---|
| One cell. | One field across all records. |
| Full history possible. | Latest only, aggregated. |
| Verbose. | Compact counts. |
For dashboards use status; for forensic drilldowns use provenance.