Branches are called lanes

The rename, and the more important thing underneath it.

Written By Dustin

Last updated 29 minutes ago

tovio lane is what you would call git branch. The rename exists because the underlying object is genuinely different.

A lane is a CRDT reference

A Git branch is a pointer, and two people moving it independently produce a conflict that one of them must resolve by force. A lane is a conflict-free replicated reference ordered by a hybrid logical clock: two replicas that advance the same lane converge.

This is why the native path has no diverged-history error, no pull-before-you-push, and no force-push ritual.

The commands

tovio lane                 # list, marking the current onetovio lane feature-x       # create at the current tiptovio lane -d feature-x    # delete (undoable)tovio switch feature-x     # move to it, carrying dirty worktovio land --into main     # integrate

The name is one positional argument: omit it to list, give it to create, add -d (or --delete) to delete. Deleting a lane is fully undoable — it never strands work — and deleting the lane you are standing on is refused.

tovio branch, tovio br and tovio checkout are hidden git-compat aliases that take the same arguments and print a note. tovio checkout -b <name> creates the lane at the current tip and switches to it, and records which lane it came from so auto-sync knows its upstream.

Landing is not always a merge commit

tovio land --into main                  # the default: merge or fast-forwardtovio land lane-a lane-b --into main    # native N-way (octopus) landtovio land --into main --dry-run --explain

--dry-run assesses the land and advances nothing; adding --explain prints the whole merge trace — base, per-file algebra, and every gate. --rebase integrates by re-deriving the source onto the target instead of writing a merge commit, which gives you a linear mainline at the cost of re-signing each change as the lander. It is opt-in and two-way only, and never the default.

Tags are not lanes

A tag is immutable. Re-pointing an existing tag at a different commit is refused with TVO-TAG-001 unless you pass --force and hold the authority for it. That is deliberate: a tag that moves silently is a supply-chain problem.