garrytan
0642559f60
B1: Codex reviews whose sandbox could not start are unavailable, not a pass
...
In containers without unprivileged user namespaces every Codex command
fails, yet the review exits 0 and concludes 'no findings' (captured in
test/fixtures/codex-sandbox/). The validator now takes execution evidence:
'codex exec --json' command events and the 'codex review' stderr transcript
(a command that succeeded proves execution); sandbox failure lines on
stderr or in failed command output return unavailable(sandbox_unavailable);
exact 'could not run commands / read the diff' phrases are the last
fallback. Review text that merely discusses bwrap or namespaces still passes.
A free 'codex sandbox ... true' preflight (Linux, 10 s) runs before the paid
model probe and every automatic outside review; CODEX_MODE gains
sandbox_unavailable, and an inconclusive model probe reports unverified
instead of ready (exit code kept for stale callers). Every Codex site
(outside-voice resolver, /codex review, challenge, consult) takes its sandbox
from _GSTACK_CODEX_SANDBOX and pipes its result through the validator; a
static test parses rendered command positions for both. GSTACK_CODEX_NO_SANDBOX=1
(exactly 1, shell env only) switches to danger-full-access with a warning on
every use. Sandbox pins in existing tests move from the literal read-only to
the selected-sandbox variable; captured autoplan probes are judged against
the probe block they executed.
2026-10-03 21:04:21 +00:00
..
2026-09-29 08:58:49 -07:00
2026-10-03 07:54:09 -07:00
2026-09-25 13:27:07 -04:00
2026-08-15 22:20:30 -07:00
2026-08-29 10:10:35 -07:00
2026-09-06 08:54:25 -07:00
2026-10-03 07:54:09 -07:00
2026-09-25 13:27:07 -04:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-09-29 08:58:49 -07:00
2026-09-29 08:58:49 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 21:04:21 +00:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-05 14:45:28 -07:00
2026-09-09 08:57:21 -07:00
2026-09-29 06:07:35 -07:00
2026-08-29 09:06:54 -07:00
2026-08-27 09:50:31 -07:00
2026-08-31 08:55:30 -07:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-29 08:58:49 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-10-01 11:57:48 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 11:57:48 -07:00
2026-10-01 11:57:48 -07:00
2026-10-01 11:57:48 -07:00
2026-10-03 07:54:09 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-10-03 07:54:09 -07:00
2026-09-26 18:57:53 -04:00
2026-10-01 13:55:16 -07:00
2026-09-26 18:57:53 -04:00
2026-09-25 12:06:45 -04:00
2026-10-03 07:54:09 -07:00
2026-10-03 07:54:09 -07:00
2026-09-29 08:58:49 -07:00
2026-09-25 12:06:45 -04:00
2026-09-14 15:14:58 -07:00
2026-09-14 15:14:58 -07:00
2026-10-03 01:19:03 -07:00
2026-09-29 06:07:35 -07:00
2026-10-01 11:57:48 -07:00
2026-10-01 11:57:48 -07:00
2026-10-03 07:54:09 -07:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 07:54:09 -07:00
2026-08-24 08:55:58 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-08-28 11:43:13 -07:00
2026-10-02 11:11:00 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 07:54:09 -07:00
2026-10-01 11:57:48 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-09-14 14:32:45 -07:00
2026-09-29 06:07:35 -07:00
2026-09-14 14:32:45 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-29 08:58:49 -07:00
2026-09-14 15:14:58 -07:00
2026-10-03 07:54:09 -07:00
2026-09-24 01:53:58 -04:00
2026-10-03 07:54:09 -07:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-09-24 01:53:58 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-09-29 08:58:49 -07:00
2026-09-29 08:58:49 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-10-01 11:57:48 -07:00
2026-09-14 14:32:45 -07:00
2026-09-29 06:07:35 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-29 06:07:35 -07:00
2026-10-03 01:19:03 -07:00
2026-10-01 13:55:16 -07:00
2026-09-29 08:58:49 -07:00
2026-09-29 08:58:49 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-09-29 08:58:49 -07:00
2026-09-29 06:07:35 -07:00
2026-09-23 08:54:53 -04:00
2026-10-03 07:54:09 -07:00
2026-09-28 16:00:12 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-09-29 06:07:35 -07:00
2026-10-01 13:55:16 -07:00
2026-09-24 01:53:58 -04:00
2026-09-29 06:07:35 -07:00
2026-10-03 07:54:09 -07:00
2026-09-29 06:07:35 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-09-29 06:07:35 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-09-25 13:27:07 -04:00
2026-09-06 08:54:25 -07:00
2026-09-29 08:58:49 -07:00
2026-10-03 07:54:09 -07:00
2026-08-15 22:20:30 -07:00
2026-10-03 07:54:09 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00