Create, list and delete lanes

tovio lane — the create/list/delete surface, its naming rules, and its errors.

Written By Dustin

Last updated 26 minutes ago

tovio lane                 # list every live lanetovio lane feature-x       # create one at the current tiptovio lane -d feature-x    # delete one (--delete also works)

A lane is what Git calls a branch: a movable, HLC-stamped CRDT pointer you land finished work onto. Creating one does not move you to it — use tovio switch for that.

The git-compat spelling

tovio branch               # same commandtovio br feature-x         # short aliastovio checkout -b new-lane # create and switch in one step

branch and br are aliases for lane, kept so muscle memory keeps working. They take the same positional name and the same -d.

What a lane may be called

Names may have several /-separated components, so fix/parser and release/1.2 are fine. The rules are enforced identically by the CLI, the object store, and the sync protocol, so a name that works locally always works over the wire:

  • Each component uses only A-Z a-z 0-9 - _ .
  • No component may be empty, start with a dot, or end with a dot.
  • The whole name is at most 100 characters, and may not contain .., \, a leading or trailing /, or a doubled //.
  • No component may be a reserved Windows device name (con, nul, com1…), with or without an extension.
  • The name may not end in .tmp.

A rejected name is TVO-CLI-005, refused before anything is written.

One namespace to leave alone

Agents commit under agent/<name>/…, and tovio agent promote and tovio agent abandon resolve lanes by that shape. Nothing stops you creating a lane there by hand, but it will show up in agent tooling, so keep human work out of it.

Deleting

Deleting writes a tombstone over the reference. It removes the pointer, not the objects: work that has not landed anywhere is still reachable by its change id, garbage collection keeps every object the op-log can restore, and tovio undo puts the lane back.

What can go wrong

  • TVO-CLI-005 — the name breaks a rule above. Pick another.
  • TVO-CLI-006 — no live lane by that name; the message offers to create it.
  • TVO-CLI-007 — that lane already exists. Switch to it instead.
  • TVO-CLI-009 — you asked to delete the lane you are standing on. Switch away first.

Creating the very first lane in a repository with no commits is TVO-OP-004: there is no tip for it to point at, so commit once first. Every code's full entry lives in the error catalog, and the troubleshooting collection explains how to read one.

Lanes converge, they do not diverge

Two people advancing the same lane merge deterministically rather than producing a divergence error. There is no "pull before you push", and there is deliberately no error code for it.

Scripting it

tovio --json lane

Returns the lanes with their tips, for a script or a CI step.

Protection

A lane can be protected so landing requires review, passing checks, or reviewer coverage of protected paths. See the collaboration collection.