Files
bullpen/docs
marfrit b594bba104 docs(deus_ex): fixed sandbox alias /tmp/sandbox — no more per-campaign slug in tickets
Repeated handoff failures traced back to the slug in /tmp/bullpen-build/<slug>/:
a ticket with the wrong or missing slug produces DIR NOT FOUND on an otherwise-
correct agent. markus proposed switching the shared basis to "/" so everyone
agrees on one reference point; investigated first since he flagged the exact
risk himself (is "/" the same thing everywhere?).

It is not: boltzmann (the grind host, where @testdesigner now executes per the
earlier host-boundary fix) is BARE METAL (systemd-detect-virt: none) -- the
real physical Pi, which itself hosts other Incus containers. orca (@foreman)
and deus are each their own isolated Incus container filesystem. Three
different roots; giving an unconfined bare-metal agent a "/" mental model is
a real safety risk, not just an inconvenience -- a confused absolute path
could touch the real host instead of a sandbox.

Landed on a fixed SYMLINK instead: /tmp/sandbox -> /tmp/bullpen-build/<slug>,
repointed at the start of each campaign. Solves the actual pain (one name,
never changes, no slug to get wrong) without expanding what any agent can
reach -- stays inside the already-safe /tmp boundary. Verified end-to-end on
boltzmann: opencode reads/writes through the symlink transparently, and the
grinder's os.path.realpath() safety check resolves it correctly.

The slug dir itself is unchanged and still required (real git-tracked archive,
baseline commit, diff target) -- only ticket-facing references (REPO:, SPEC:,
the healthy-chain diagram, the DIR-NOT-FOUND failure signature, the checklist)
now say /tmp/sandbox instead of the slug path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE
2026-07-25 14:11:03 +02:00
..