Conflict surface errors
When resolve itself refuses.
Written By Dustin
Last updated About 1 month ago
Creating a conflict is not an error โ the merge completed, conflicts are stored as first-class objects, and the exit code is 0. TVO-CONFLICT-* is for the cases where the conflict surface itself refuses.
Landing a conflicted change on a protected lane
TVO-CONFLICT-003. Resolve first:
tovio conflictstovio resolvetovio health --into mainSync refused on a protected lane
TVO-CONFLICT-009 is the same invariant enforced on the wire: a clone, pull, or sync will not advance a protected lane to a tip whose tree is not conflict-free. The ref-adoption gate refuses atomically โ objects may have arrived, but the protected ref never moves, so the lane cannot be wedged at a conflicted commit. The author resolves on the source lane and re-lands; or you pull the unprotected source lane instead.
The same check is re-applied when a Forge advances a review-required lane, where it surfaces over HTTP as 422. That is why a change cannot pass review and then land something conflicted.
An operation that needs a clean tree
TVO-CONFLICT-010, and worth knowing because it surprises people: diff, healthโs landing preview, a three-way land, and checkout/materialize all require one version per path and will refuse on a materialized conflict. A conflict objectโs address is not content, so these fail closed rather than coerce it.
tovio status --conflicts and the land result surface conflicts as data and do not raise this โ so you can always see where you stand.
tovio status --conflictstovio resolveResolution refused
TVO-CONFLICT-002: the conflict is already resolved, the resolution does not parse, or you lack conflict:resolve in scope. TVO-CONFLICT-015 is the neighbouring case โ --working-tree on a conflict whose resolution is not a choice of bytes at all, such as a mode, entry-kind, or rename-rename conflict.
tovio conflictsLists each conflict with its type and the resolutions that apply. Match the strategy to the type: --ours/--theirs/--base for content, --keep/--delete for delete-modify, --rename-to for rename-rename.
Resolve hangs or fails in CI
TVO-CONFLICT-012. With no strategy flag, tovio resolve asks for the interactive walk, which needs a terminal. In CI or any non-interactive run, pass an explicit strategy and a path.
--ai refused
TVO-CONFLICT-011โ no resolver plugin is bound. Binding a model is a deliberate owner decision the core never makes for you, and the conflict is left unchanged.TVO-CONFLICT-013โ resolving would have to send a policy-protected side to the model. Refused fail-closed, and it is the right answer.
Wrong resolution applied
tovio undoReporting it
The code and the conflict type โ content, delete-modify, rename-rename, mode. Never the conflicted content, the path, or either side of the diff.
Was this helpful?
More in Troubleshooting & error codes
How to read a TOVIO error codeCollect diagnostics safelytovio: command not found, or the wrong version runsI cannot read a protected fileStill need help? Ask the team