Verify Provenance Guide
The verify-provenance verb runs a claim-provenance audit over a produced application. It re-checks every claim minted during the build, read-only. A Markdown report is written to stdout and never into the audited project.
Usage
tenant-tail verify-provenance --project <dir> [OPTIONS]
Flags
--project <dir>: (Required) The application directory to re-check.--corpus <path>: Override the corpus path. Supports typed JSON (ExtractionOutput) or a legacy.txtdirectory.--fail-on-rejected: Exit1if any claim is rejected. By default, the audit is diagnostic and exits0even with rejected claims, but the verdict text is identical either way.
What the Audit Checks
The audit verifies that every claim in the project carries valid provenance:
- It has a valid citation against the extraction corpus.
- Or, it is explicitly tagged as an
ASSUMPTIONand fits within the project's assumption budget.
The Extraction Corpus
The corpus is the source of truth for claims. It can be a typed JSON artifact store (spec-120) or synthesized from legacy .txt files. The report explicitly marks synthesizedCorpus: true if it falls back to text files.
The Assumption Budget
Projects have an assumption budget that limits the number of un-cited claims. The audit verifies that the total number of assumptions does not exceed this budget.
Reading the Markdown Report
The report is printed to stdout and includes:
- Metadata: Schema versions, corpus source, and hashes.
- Summary Table: Counts of claims by mode (
derived,assumption,rejected, etc.) and the overallprovenanceHealthpercentage. - Findings: Detailed breakdown of each claim, its anchor hash, and search results.
- Suggested Next Actions: Guidance on fixing rejected or orphaned claims.
Fail-Closed Mode
For CI or strict enforcement, use --fail-on-rejected. This causes the verifier to exit 1 if any claim is rejected, acting as a tenant-ward fail-closed gate.