Schemas
JSON Schema 2020-12, published with the package (geopilot/schemas/*) and here.
| Schema | Document | Describes |
|---|---|---|
/schema/config/v1.json | geo.config.json | Configuration. Unknown keys are errors. |
/schema/report/v1.json | geo-report/v1 | Everything the engine emits: tool, run, framework tiers, routes, evaluations, readiness, coverage, confidence, scope, disclaimer. |
/schema/insights/v1.json | geo-insights/v1 | Agent output: recommendations and hypotheses with resolvable evidence. |
/schema/merged/v1.json | geo-merged/v1 | A report and validated insights, kept in separate sections. |
Stable output
Reports are serialised canonically (sorted keys, stable arrays), so two runs over the same input produce identical bytes except the documented volatile fields: run.id, run.startedAt and run.durationMs.
Fingerprints
geo1:<ruleId>:<first 12 hex of sha256(ruleId | normalised subject | stable anchor)>The anchor is the sub-check (plus, where one sub-check can fire several times, a stable token such as the path or crawler) — never a line number.
Evaluation
status is pass, fail, not_applicable, not_evaluated or error; anything other than pass/fail carries a statusReason. evidenceQuality is direct, partial or inferred. Each evaluation lists its sub-checks with the scope they ran in.