fix wave 1: plan environment text follows the global scratch rules (GOCACHE on disk; /tmp/k only for socket-length test dirs)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+3
−1
docs/superpowers/plans/2026-10-12-zero-downtime-flag-readiness-2.md+3 −1
diff --git a/docs/superpowers/plans/2026-10-12-zero-downtime-flag-readiness-2.md b/docs/superpowers/plans/2026-10-12-zero-downtime-flag-readiness-2.md| index c72648797..fd4239025 100644 |
| --- a/docs/superpowers/plans/2026-10-12-zero-downtime-flag-readiness-2.md |
| +++ b/docs/superpowers/plans/2026-10-12-zero-downtime-flag-readiness-2.md |
| @@ -23,7 +23,9 @@ |
| - No liveness trap: no instance may be left down forever with no supported recovery. |
| - New member-facing strings carry `// TODO-COPY(<id>)` on the literal's line, ids prefixed `zdd-readiness2.`. Draft text only: no em dashes (a full stop and a new sentence instead). Operator log lines are not copy. |
| - Cross-compile: linux-only syscalls need `//go:build linux` and a `!linux` stub; CI builds darwin and windows (`GOOS=darwin go build ./...`, `GOOS=windows go build ./...`). |
| -- Tests run serially and niced (`nice -n 19`). Session house rules for the environment: sandboxed Go uses `export GOCACHE=$TMPDIR/gocache GOFLAGS=-mod=mod GOPROXY=off` in every command (never delete that cache, it is shared); packages that bind unix sockets (activator, edge, host, some console tests) or touch cgroupfs run unsandboxed with `TMPDIR=/tmp/k GOFLAGS=-buildvcs=false` and the default Go cache (`mkdir -p /tmp/k` first; remove only what you created there afterwards). |
| +- Tests run serially and niced (`nice -n 19`). The environment follows the user's global scratch rules (scratch not directly in `/tmp`, which is a shared RAM-backed tmpfs; never `GOCACHE` or `GOTMPDIR` under `/tmp`): |
| + - Sandboxed Go uses `export GOCACHE=$TMPDIR/gocache GOFLAGS=-mod=mod GOPROXY=off` in every command. That cache is on disk, not in `/tmp`: the sandbox's `$TMPDIR` is under `~/.cache` (`~/.cache/tmp/claude-<uid>`). It is shared; never delete it. |
| + - Packages that bind unix sockets (activator, edge, host, some console tests) or touch cgroupfs run unsandboxed with the default Go cache (`~/.cache/go-build`) and `TMPDIR=/tmp/k GOFLAGS=-buildvcs=false`. `/tmp/k` is used only because a socket test needs a short real path: `sun_path` is 108 bytes, and a test temp dir under `~/.cache` is too long for it. It holds only the tests' own temp dirs, never a cache or a build. `mkdir -p /tmp/k` first, and empty what you created there after the run. |
| - Commits: the worktree's identity is set (`claude` / `claude~paul@keymail.dev`); check `git config user.email` before the first commit. Plain `git add <files>` and `git commit -m`; never `git stash`, `git checkout -- <file>`, `git worktree prune`, `git reset --hard`. |
| - Integrity: every test result reported is pasted from a real run. |
| - Simulation: `mutate.sh` tests `git archive HEAD`, so **commit before every mutate.sh run** and name the commit it tested (plan 11). `mutate.sh 300` inside a task; the one 3000-seed sweep per branch revision is the controller's, at `nice -n 19`, GOMAXPROCS=2. |