sh-a3f9c21d). --name lets you
name it instead — a handle that works everywhere an id does (exec, ls,
cd, rm, --worktree) and reads back in the NODE column. It turns a session
of boxes and worktrees into something you address by intent, not by hash.
Screens verified by
walkthroughs/test_names.py.Name what you cut
Name a worktree and the branch is cut after it —dabs/<name>, not a random id:
--name sets the id the boot line prints:
Reach it by name
The name is a handle everywhere an id is — reach into the box with it:cd into a node
dabs cd <node> prints a node’s working place as a bare path, resolved per
kind: a project to its source repo, a worktree to its checkout, a box to its own
node dir. For a project and a worktree that is the path INFO shows above; for a
box it is not — a box has no working directory, so its INFO cell carries the
dabs exec … bash line that shells into it, while cd gives you the node dir on
the host. A child process cannot move its parent’s shell, so you wrap it:
dabs cd de → the same path),
and an ambiguous one is refused rather than guessed. A box’s node dir holds its
three spaces as subdirectories — volume/, held/, tmp/ (see
Spaces); dabs cd login-fix lands in the worktree’s checkout
instead, which is that node’s own held/worktree.
A name is claimed while its work is live
A name held by active work refuses a new claim — it is never silently reused:dabs rm login-fix) and the name frees up; a name left
by an inactive node is reclaimed on the fly. Winding a session down reads as
plainly as it named it: