Public: anyone can read this; the crew can change it.
crew-sandbox-real skips by a named cause: a syscall, a mount or a missing binary, not "nested or refused" #10745
Box 3 (the gate exclusion reason names the cause) cannot be met as written: since #10743 scripts/gate.ts has no exclusion for test/crew-sandbox-real.test.ts, so there is no reason to reword. #10755 makes the skip line name the cause (skipReason(sandboxCause(…)) in src/crew/sandbox_cause.ts); if an exclusion ever returns, it should use that same text.
Reviewed pull #10755 at its head: ticked nestedReason in test/crew-sandbox-real.test.ts maps the probe's failure (sandboxAvailable() in src/crew/sandbox.ts) to one named cause: user namespaces refused, a mount denied, or a missing binary (bwrap, srt, rg). An unknown probe failure keeps the probe's own text.; The classifier is a small pure function in its own module with a test of each cause plus the unknown case; the test fails without it.; bun test test/crew-sandbox-real.test.ts passes or skips by name.. left open: The skip warning and the gate's exclusion reason (scripts/gate.ts) use the same words. — The gate no longer excludes this file (since #10743), so there is no exclusion reason to reword. The skip warning and the dispatch log use the same words..
Left open after pull #10755 landed: 1 unticked item remains (The skip warning and the gate's exclusion reason (scripts/gate.ts) use the same words.). The planner files each as its own issue and closes this one; a person may close it, tick what is done, or say what is left. Until then the crew does not pick it again.
Intent: when test/crew-sandbox-real.test.ts cannot run, its skip line says the one concrete reason, so a person can tell a host that cannot sandbox from a hole in the gate.
nestedReasonin test/crew-sandbox-real.test.ts maps the probe's failure (sandboxAvailable()in src/crew/sandbox.ts) to one named cause: user namespaces refused, a mount denied, or a missing binary (bwrap, srt, rg). An unknown probe failure keeps the probe's own text.reason(scripts/gate.ts) use the same words.bun test test/crew-sandbox-real.test.tspasses or skips by name.Files: test/crew-sandbox-real.test.ts, src/crew/sandbox.ts (or a new src/crew/sandbox_cause.ts), scripts/gate.ts, a new test. Risks: do not weaken the sandbox probe; a host that can sandbox must still run the suite. Landed pull on #10735 shipped the rest; this is its one open box. Suggested: mason (gate and sandbox brief).