Skip to content

Add a Linux x64 PR gate for codex-rs - #4

Merged
Harold Hunt (huntharo) merged 1 commit into
pwragentfrom
agent/pwragent-ci
Aug 19, 2026
Merged

Add a Linux x64 PR gate for codex-rs#4
Harold Hunt (huntharo) merged 1 commit into
pwragentfrom
agent/pwragent-ci

Conversation

@huntharo

Copy link
Copy Markdown

Upstream's blocking-ci fans out to Bazel, nextest, and the SDK suites across
self-hosted runner groups that do not exist on this fork, so it is disabled
here. That left codex-rs changes with no verification of any kind: PR #1 has
zero checks today.

This is the useful sliver — one ubuntu-24.04 runner, two parallel jobs:

cargo test --locked -p codex-core --lib
cargo clippy --locked -p codex-core --all-targets

--locked is deliberate. It fails when Cargo.lock does not already satisfy the
manifests, which is exactly the check a hand-edited lockfile needs and which a
plain build would paper over.

Scoped to codex-core's lib tests rather than tests/suite. The integration suite
is environment-sensitive (sandbox helpers, exec servers, network fixtures) and
upstream runs it on dedicated infrastructure; pulling it onto a hosted runner
would produce failures that say more about the runner than the change. Widen
later if it proves stable.

Formatting is not checked. The canonical command is just fmt-check, which
shells out to scripts/format.py, and codex-rs/rustfmt.toml sets
imports_granularity — a nightly-only option that stable cargo fmt silently
ignores. Wiring that up is separate work rather than something to fake here.

Standard hosted runners are free on public repositories, so this costs nothing
per pull request.


This PR is its own first test: it touches .github/workflows/pwragent-ci.yml, which is in the path filter, so the gate runs against itself.

What it does not cover, so nobody assumes more than it proves:

  • One platform only (Linux x64). Cross-platform breakage still surfaces first in the release pipeline.
  • codex-core only, not the whole workspace.
  • Lib unit tests only, not core/tests/suite.
  • No formatting check (see the commit message).

Unverified until it runs: whether a hosted ubuntu-24.04 runner has the disk and time for this workspace. The reclaim step buys ~20 GB and the timeout is 90 minutes; if either proves short, the next lever is sccache or narrowing the test scope further.

🤖 Generated with Claude Code

Upstream's blocking-ci fans out to Bazel, nextest, and the SDK suites across
self-hosted runner groups that do not exist on this fork, so it is disabled
here. That left codex-rs changes with no verification of any kind.

One ubuntu-24.04 runner, two parallel jobs:

  cargo nextest run --locked -p codex-core --lib --no-fail-fast
  cargo clippy    --locked -p codex-core --all-targets

Three things this workspace requires that took a run each to find:

- RUST_MIN_STACK=8388608. `cargo test` runs each test on a spawned thread with
  Rust's 2 MiB default and codex-core overflows it. Upstream sets the same 8 MiB
  in rust-ci.yml, rust-ci-full.yml, the nextest platform workflow, and .bazelrc.
- nextest rather than `cargo test`. codex-rs/.config/nextest.toml is the real
  test contract — retries, slow-timeout, and max-threads groups for tests that
  cannot run concurrently — and cargo test honors none of it. Sharing one
  process across 2217 tests also leaks global tracing-subscriber state, which
  failed session::turn::tests::post_sampling_token_estimate_is_disabled_by_
  always_on_sinks and exec::tests::process_exec_tool_call_cancellation_allows_
  sigterm_cleanup. Both pass under process-per-test isolation: 2217 run, 2217
  passed, in 131s.
- `--locked`, so a Cargo.lock that does not satisfy the manifests fails here
  rather than being silently regenerated.

Scoped to codex-core's lib tests rather than tests/suite. The integration suite
wants sandbox helpers, exec servers, and network fixtures; upstream runs it on
dedicated infrastructure, and on a hosted runner it would fail in ways that
describe the runner rather than the change.

Formatting is not checked. The canonical command is `just fmt-check`, and
codex-rs/rustfmt.toml sets imports_granularity, a nightly-only option that
stable cargo fmt silently ignores. Wiring that up properly is separate work.

Standard hosted runners are free on public repositories, so this costs nothing
per pull request.
@huntharo Harold Hunt (huntharo) added the ci:release-signing Run the full release pipeline on this PR, signing included label Aug 19, 2026
@huntharo Harold Hunt (huntharo) removed the ci:release-signing Run the full release pipeline on this PR, signing included label Aug 19, 2026
@huntharo
Harold Hunt (huntharo) merged commit e7e3a70 into pwragent Aug 19, 2026
33 of 37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant