Local Observability

Every decision made by gitresolve is persisted to a local SQLite database (typically stored in .git/gitresolve.db). This gives you a permanent audit trail of how code evolved during merges.

JSON Reporting for CI

For automation addicts, the --json flag emits a structured object containing all critical health metrics of your merge environment.

gitresolve stats --json
{ "total_decisions": 47, "auto_resolved": 31, "escalated_to_manual": 16, "escalation_rate": 0.34, "top_escalation_reasons": [ { "reason": "semantic.field_type_conflict", "count": 9 }, { "reason": "validation.go_syntax_failed", "count": 4 }, { "reason": "parser.malformed_marker", "count": 3 } ] }

Stable Reason Codes

Reason codes follow a hierarchical namespace to help you identify whya conflict wasn't auto-resolved.

parser.*

Low-level failure to identify or recover balanced conflict markers.

semantic.*

High-level logic conflict, such as function signature or field type changes.

strategy.*

Decision blocked by active Policy Profile or explicit strategy constraints.

validation.*

Auto-resolution attempted but failed post-write syntax validation.

CI Release Gating

Leading teams use these stats to gate deployments. If the escalation_rate is too high on a stable release branch, it indicates the integration is too complex and may require a dedicated rebase period rather than a merge.