01 · Summary
Start with status and scope
FAIL — 1 structural regression introduced. Policy: fail on new findings from [layers] at confidence >= 1.00.
PASS or FAIL describes the active policy, not whether findings exist. A check can pass while reporting findings when their categories are not selected by --fail-on.
02 · Findings
Read the evidence for each finding
| Field | Use |
|---|---|
| Category | The exact name used by --fail-on. |
| Status | Whether the finding was introduced, resolved, or unchanged. |
| Evidence | The files, symbols, and relations that produced the finding. |
| Confidence | The reported certainty. Use --min-confidence to filter before policy is evaluated. |
03 · Exit codes
Handle the command result
| Code | Meaning |
|---|---|
| 0 | The active policy passed, including checks with ungraded findings. |
| 1 | A finding selected by policy, or configured spillover, failed the check. |
| 2 | The invocation or policy is invalid. |
| 3 | The current snapshot cannot be compared with the baseline. |
04 · Receipt
Confirm how the graph was produced
The receipt records the Enola version, repository identity, git state, ignore settings, extractors, providers, and fact counts. Check it when results differ between machines or a comparison returns code 3.
05 · Coverage
Check unresolved relationships
A missing edge is not proof that no runtime relationship exists. Review unresolved calls, unsupported syntax, generated code, and unmatched cross-repository links before treating impact or reachability as complete.
06 · Automation
Choose output for the consumer
enola check --json enola check --format=annotations --host=github enola check --format=annotations --host=buildkite enola check --format=sarif > enola.sarif
Use JSON for custom scripts, annotations for native CI messages, and SARIF for code-scanning systems. Preserve the process exit code for control flow.