From 153b3a0c2a4deca937bc473f14ca011eec4d3aab Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Wed, 8 Jul 2026 12:55:33 -0700 Subject: [PATCH] test(codex): unskip full-turn coverage --- docs-internal/registry-parity-worklist.md | 18 ++++++++++++++++-- packages/core/tests/codex-fullturn.test.ts | 12 ++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/docs-internal/registry-parity-worklist.md b/docs-internal/registry-parity-worklist.md index 037469df5f..c887b4425c 100644 --- a/docs-internal/registry-parity-worklist.md +++ b/docs-internal/registry-parity-worklist.md @@ -546,8 +546,22 @@ real e2e tests that prove Linux-parity behavior — not smoke tests. `2026-07-08T12-46-11-0700-item11-core-tsc-duckdb-final-file-after-refresh.log`; `2026-07-08T12-46-10-0700-item11-duckdb-biome-check-final-file-after-refresh.log`. Rev: `qrwnvouk`. - - **codex — TODO.** Needs the remaining real full-turn coverage un-skipped after - #9. + - **codex — DONE.** Un-skipped the remaining real `codex-exec --session-turn` + full-turn coverage. The suite now proves the model turn, on-request shell + tool call, real subprocess filesystem side effect, and adapter-supplied + history replay in one VM-backed file with 4/4 passing. For this coverage + rev, the package was staged from existing real 29 MB `codex`/`codex-exec` + artifacts because rebuilding the external Codex fork in this checkout hit + dependency gating failures (`path-dedot`, then `tokio`/`rustls-native-certs`); + the failed rebuild logs are kept as proof. Proof: + `2026-07-08T12-52-54-0700-item11-codex-cli-package-build-from-prior-artifacts-after-install.log`; + `2026-07-08T12-54-08-0700-item11-codex-fullturn-final-unskipped.log`; + `2026-07-08T12-54-42-0700-item11-core-tsc-codex-final.log`; + `2026-07-08T12-54-42-0700-item11-codex-biome-check-final.log`; + rebuild blockers: + `2026-07-08T12-48-46-0700-item11-codex-required-build-fresh-cargo-home.log`, + `2026-07-08T12-50-38-0700-item11-codex-required-build-path-dedot-cfg.log`. + Rev: `ryqtvoqv`. - **rev:** one per command, e.g. `test(duckdb): real analytical-SQL e2e; un-skip` ### 12. No tests at all — 9 software + 5 agents diff --git a/packages/core/tests/codex-fullturn.test.ts b/packages/core/tests/codex-fullturn.test.ts index 09952efb26..5e94242750 100644 --- a/packages/core/tests/codex-fullturn.test.ts +++ b/packages/core/tests/codex-fullturn.test.ts @@ -153,9 +153,7 @@ describe("codex full turn (real codex agent in the VM, mock OpenAI Responses)", expect(stdout).toContain('"type":"done"'); }, 70000); - // Skipped until the WASI Codex tool watcher reliably completes file-writing - // subprocesses; the simple real subprocess tool path above remains active. - test.skip("shell tool runs a REAL subprocess with an observable filesystem side effect", async () => { + test("shell tool runs a REAL subprocess with an observable filesystem side effect", async () => { // Proves codex's exec tool spawns a real subprocess via the secure-exec // host_process bridge (not a mocked/gated stub): the model asks to run a // shell command that WRITES A FILE, we approve it, and after the turn we @@ -215,6 +213,10 @@ describe("codex full turn (real codex agent in the VM, mock OpenAI Responses)", JSON.stringify({ decision: "allow" }) + "\n"; await vm.execArgv("mkdir", ["-p", "/root/.codex"]); + await vm.writeFile( + "/root/.codex/config.toml", + new TextEncoder().encode(codexConfig), + ); await vm.writeFile(sourcePath, new TextEncoder().encode(marker)); const r = await vm.execArgv("codex-exec", ["--session-turn"], { timeout: 45000, @@ -236,9 +238,7 @@ describe("codex full turn (real codex agent in the VM, mock OpenAI Responses)", } }, 70000); - // Skipped until the WASI session-turn wrapper reliably completes resumed-history - // turns instead of hanging after the mock response. - test.skip("replays adapter-supplied history on a resumed multi-turn session", async () => { + test("replays adapter-supplied history on a resumed multi-turn session", async () => { const { stdout, requests } = await runSessionTurn( [finalText("the answer is 4")], {