Question
What actually conflicts today when two devlaunch efforts run on one host, and
which of those conflicts does a nested Docker daemon fix?
The destination is "several branches developed and e2e-tested concurrently
without conflict", but the conflicts have never been enumerated, and the repo
already carries two isolation mechanisms that overlap:
- Per-branch workspaces.
dl owner/repo@branch already gives each branch its
own clone, workspace id and container. That is isolation the host already has.
- Scratch XDG dirs.
CLAUDE.md documents
XDG_CACHE_HOME=/tmp/dl-scratch/cache XDG_CONFIG_HOME=/tmp/dl-scratch/config dl-next ...
and is explicit that this "isolates the bookkeeping, not the machine — dl
drives devpod and docker on the host either way, so the workspaces a scratch
run creates are real ones that devpod list shows".
So enumerate the real collision surface and attribute each item. Candidates to
confirm or dismiss from the source, not from memory: metadata.json and the bare
clone cache under XDG_CACHE_HOME; the shared devpod list namespace and
workspace-id derivation (devlaunch/workspace_id.py); container name and port
collisions on the host daemon; the bare-clone directory layout; the host's
~/.ssh config entries for *.devpod.
Then say, per item, which of the three mechanisms resolves it — per-branch
workspace, scratch XDG dirs, or nested daemon — and whether any of the three is
made redundant by another. Principle 2: if two mechanisms cover the same
collision, the map should end up recommending one.
This ticket is deliberately unblocked: it scopes what the prototypes downstream
are allowed to conclude, and it can be answered by reading the tree.
How the outcome gets tested. No code; the answer is a table on this ticket
that later tickets cite. Its claims about devlaunch's behaviour must each name
the file and line they come from.
Question
What actually conflicts today when two devlaunch efforts run on one host, and
which of those conflicts does a nested Docker daemon fix?
The destination is "several branches developed and e2e-tested concurrently
without conflict", but the conflicts have never been enumerated, and the repo
already carries two isolation mechanisms that overlap:
dl owner/repo@branchalready gives each branch itsown clone, workspace id and container. That is isolation the host already has.
CLAUDE.mddocumentsXDG_CACHE_HOME=/tmp/dl-scratch/cache XDG_CONFIG_HOME=/tmp/dl-scratch/config dl-next ...and is explicit that this "isolates the bookkeeping, not the machine —
dldrives devpod and docker on the host either way, so the workspaces a scratch
run creates are real ones that
devpod listshows".So enumerate the real collision surface and attribute each item. Candidates to
confirm or dismiss from the source, not from memory:
metadata.jsonand the bareclone cache under
XDG_CACHE_HOME; the shareddevpod listnamespace andworkspace-id derivation (
devlaunch/workspace_id.py); container name and portcollisions on the host daemon; the bare-clone directory layout; the host's
~/.sshconfig entries for*.devpod.Then say, per item, which of the three mechanisms resolves it — per-branch
workspace, scratch XDG dirs, or nested daemon — and whether any of the three is
made redundant by another. Principle 2: if two mechanisms cover the same
collision, the map should end up recommending one.
This ticket is deliberately unblocked: it scopes what the prototypes downstream
are allowed to conclude, and it can be answered by reading the tree.
How the outcome gets tested. No code; the answer is a table on this ticket
that later tickets cite. Its claims about devlaunch's behaviour must each name
the file and line they come from.