Record why you resolved it
--why and the rationale flags, so the next person is not guessing.
Written By Dustin
Last updated About 3 hours ago
A conflict resolution is a decision, and it is one of the few decisions in version control that leaves almost no trace of its reasoning. The diff shows what you chose. It never shows what you rejected, or why.
tovio resolve <path> --theirs --why "their retry loop handles the timeout case ours missed"This attaches a rationale to the resolving commit, where tovio log --why can surface it later.
The fuller form
Every one of these requires --why, and --why requires a strategy flag — so rationale attaches to a decision you actually made, never to a bare invocation.
tovio resolve src/auth.rs --ours --why "keep our session check; theirs drops the clock-skew tolerance" --rejected "take theirs :: simpler, but reintroduces the skew bug" --confidence high --ref chg:7f2aReusing a rationale you already wrote
tovio resolve <path> --ours --rationale-ref <addr>Links an existing rationale object instead of authoring one inline. It is mutually exclusive with the inline flags — one source or the other, not both.
Protected paths
When the resolved path is policy-protected, the rationale is sealed automatically. Explaining why you chose one side over another can say as much about a secret as the secret does, so it gets the same protection the path has. Readers with a key see it; everyone else sees a locked marker, never a partial hint.
It does not change the resolution
Rationale is passive metadata. Two resolutions that differ only in their rationale are the same resolution: it does not enter the key used to replay recorded resolutions, and it does not alter what lands. You can be as thorough as you like without affecting the result.
Reading it back
tovio log --whytovio blame <path> --why