trace · git:20260921.b4cdfe3 · 2026-09-21 · sha256 c17efda499d34cab
trace git:20260921.b4cdfe3A
Immutable. This exact content is served forever at /api/v1/blob/c17efda499d34cab.
---
name: trace
description: Show the provenance trace, linking every reported number to the SQL that produced it with a confidence badge. Use after an analysis when someone asks "where did that number come from?"
---
# /trace: expose the query logic behind every number
Renders one self-contained HTML that ties each reported number (a **finding**) back to the **query**
that produced it, labeled by confidence: **cited** (the agent named the query), **value-match** (a
query's captured `result_value` equals the number), or **inferred** (nearest query in time). Unmatched
findings and orphan queries are shown, not hidden. An unverified number is the most important thing to
surface. This is the on-demand artifact for any "prove it" moment.
It reads the provenance infrastructure: the query log (hook-stamped with `analysis_id` +
`result_value`), the findings manifest, and the reconciler.
## Steps
1. **Resolve the analysis.** Read the current `analysis_id` and active dataset:
```bash
python3 -c "
import sys; sys.path.insert(0, '.')
from helpers.knowledge.analysis_context import current_analysis_id
from helpers.provenance.eval_driver import _active_dataset
print(current_analysis_id(create=False) or '', _active_dataset())
"
```
If there is no current analysis, there is nothing to trace yet. Say so and stop (or, for a past
run, point `build_trace` at that analysis_id explicitly).
2. **Build + render the trace.** Date is today (`date '+%Y-%m-%d'`):
```bash
python3 -c "
import sys; sys.path.insert(0, '.')
from helpers.provenance.trace_viewer import build_trace
print(build_trace('<analysis_id>', '<dataset>', '<YYYY-MM-DD>'))
"
```
This reconciles (writes `working/provenance_<analysis_id>.json`) and renders
`working/trace_<analysis_id>.html`. Both are gitignored working files.
3. **Open it.** `open working/trace_<analysis_id>.html` (macOS). It's self-contained and
projection-friendly, with large type, collapsible SQL, and colored confidence badges.
4. **Read it out.** Walk the findings top to bottom: the number, its badge, the SQL. Call out anything
**unmatched** (a number with no query behind it). That is the honesty check and the thing to fix.
## Notes
- **Confidence is itself provenance.** A `value-match` is strong because the SQL actually returned that
number. `inferred` is a hint, not proof, so say so when reading it out.
- **Teaching tie-in.** This is the concrete answer to "how do I know the agent didn't make the number
up?" Pair it with the provenance-chain diagram.