sources: list places things into the box at a path. Exactly one
of four kinds names each source’s origin — and the kind decides whether the
box’s writes ever reach your disk.
Screens verified by
tests/test_sources.py.| kind | what lands in the box | your files |
|---|---|---|
mount: | a live bind — writes hit the host | shared with the box |
mkmount: | a live bind; the host dir is created (0700) if absent | shared; provisioned on first use |
copy: | a snapshot taken at box start | untouched |
worktree: | a fresh git branch off HEAD, mounted live | untouched — the branch is elsewhere |
ro: true to any mount to make it read-only inside the box.
Copy vs mount, demonstrated
This recipe hands the box a snapshot of the project and a read-only reference directory:What a copy leaves behind
Acopy: . source snapshots your cwd into a workdir node (its bytes live
in that node’s held space), and the boot says so:
dabs rm <workdir-id> -y.
mkmount: provisioning on first boot
mkmount: is mount: that creates its host origin if missing — say it where
you mean “provision this”. The canonical use: a login/config dir a harness
fills on first run, shared by every later box that names it:
mount: whose origin is missing is treated as a typo and refused:
Where a snapshot lands: at:
For worktree: and copy: sources, at: says where the bytes land in the
new node’s own spaces — e.g. at: $NODE_HELD/worktree (the default), so rm
asks before reaping the checkout. See Spaces.