Skip to content

ci: unblock fork CI runner selection and npm staging - #32

Closed
dzianisv wants to merge 9 commits into
mainfrom
issue-28-runner-availability
Closed

dzianisv wants to merge 9 commits into
mainfrom
issue-28-runner-availability

Conversation

@dzianisv

@dzianisv dzianisv commented Mar 17, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • resolve npm staging rust-release lookup against openai/codex
  • fix the repo-level Prettier failures surfaced by build-test
  • keep openai/codex on larger/custom runners while routing forks to hosted runners for rust-ci and Bazel macOS jobs

Why

Two separate CI regressions were blocking real signal on this fork:

  1. build-test could not find upstream rust-release runs because the staging script searched the fork by default.
  2. rust-ci and Bazel macOS jobs targeted runner labels the fork cannot provision, so they failed before step 1.

In practice issue #27 cannot merge cleanly without issue #28, so this PR is the combined merge vehicle.

Testing

  • python3 -m unittest scripts/test_stage_npm_packages.py
  • pnpm dlx prettier@3.5.3 --check *.json *.md docs/*.md .github/workflows/*.yml **/*.js
  • Ruby YAML parse of .github/workflows/rust-ci.yml and .github/workflows/bazel.yml
  • go run github.com/rhysd/actionlint/cmd/actionlint@latest .github/workflows/rust-ci.yml .github/workflows/bazel.yml
  • GitHub Actions verification on this PR that the former zero-step jobs now schedule on hosted labels and execute real steps

Issues

@dzianisv
dzianisv force-pushed the issue-28-runner-availability branch from e2078e3 to f6abc76 Compare March 17, 2026 07:24
@dzianisv dzianisv changed the title ci: add fork-safe runner fallbacks ci: unblock fork CI runner selection and npm staging Mar 17, 2026
@dzianisv
dzianisv changed the base branch from issue-27-build-test-release-workflow to main March 17, 2026 07:28
@OpenCodeEngineer

Copy link
Copy Markdown

Pushed follow-up commit d3d11f1137fab1aabd5a9c70db8a5bf808fe4b5d to keep PR #32 moving after the runner fix exposed real hosted-CI failures.

Included in this push:

  • cli/build.rs: remove expect() on CARGO_MANIFEST_DIR, fall back to CODEX_CLI_VERSION=unknown
  • core/src/codex.rs: remove expect() in the reflection path
  • core/src/models_manager/manager.rs: fix newly active clippy lints (redundant_closure_for_method_calls)
  • bazel.yml: move fork-vs-upstream matrix selection into fromJSON(...) include lists so forks only schedule currently viable hosted Bazel lanes

Local validation for this SHA:

  • just fmt
  • cargo test -p codex-cli
  • cargo clippy -p codex-cli --all-features --tests -- -D warnings

Current watcher snapshot on this SHA:

  • mergeable: yes
  • review feedback: none
  • checks: 1 passed, 26 pending, 0 failed

I’m continuing to watch this PR until the new SHA settles.

@OpenCodeEngineer

Copy link
Copy Markdown

Pushed follow-up commit 0f01a92c8 after diagnosing the red clippy lanes on the previous SHA.

Root cause of the failures on d3d11f1137fab1aabd5a9c70db8a5bf808fe4b5d:

  • all completed Lint/Build failures were the same clippy::single_component_path_imports error on codex-rs/core/tests/common/lib.rs
  • the reported Tests — ubuntu-24.04-arm - aarch64-unknown-linux-gnu failure was only a cancellation caused by the workflow already being red, not a distinct test regression

Fix in this commit:

  • remove the redundant use serde_json; import from codex-rs/core/tests/common/lib.rs

Local validation:

  • just fmt
  • cargo clippy -p core_test_support --all-features --tests -- -D warnings

I am restarting the watch on the new SHA now.

@OpenCodeEngineer

Copy link
Copy Markdown

Pushed follow-up commit 365c5a7c6 to clear the workspace test-target clippy failures that appeared after the second hosted rerun.

What this commit fixes:

  • codex-rs/tui/tests/suite/model_switching_e2e.rs
    • narrow too_many_arguments expectation on the helper with many test knobs
    • replace the complex return type with a type alias
    • remove the redundant provider_api.clone()
  • codex-rs/core/tests/suite/cli_stream.rs
    • remove a needless_collect in the /responses assertion
  • codex-rs/core/tests/suite/eval_swe_bench.rs
    • narrow expect_used expectations to the intentionally panic-on-misconfigured Azure eval helpers
    • switch deprecated Command::cargo_bin("codex") to Command::new(codex_utils_cargo_bin::cargo_bin("codex").unwrap())
    • drop the now-unused assert_cmd::prelude::* import
  • codex-rs/core/tests/suite/reflection.rs
    • narrow expect_used expectations to the intentionally panic-on-misconfigured Azure reflection helpers
    • switch deprecated Command::cargo_bin("codex") to Command::new(codex_utils_cargo_bin::cargo_bin("codex").unwrap())

Local validation for this batch:

  • just fmt
  • cargo clippy -p codex-tui --all-features --tests -- -D warnings
  • cargo clippy -p codex-core --all-features --tests -- -D warnings with CARGO_BUILD_JOBS=1

I’m resetting the PR-32 watch to this new SHA now. The Linux GNU Bazel fetch failure is still tracked separately as the remaining known flaky/external class.

@OpenCodeEngineer

Copy link
Copy Markdown

Pushed follow-up commit e607fb8e4 to address the real hosted failure that surfaced on the previous SHA.

Root cause from the Bazel log on 365c5a7c6:

  • core/tests/common/lib.rs tried to include_str!("../../models.json")
  • that relative compile-time path does not exist when core/tests/common is built as its own Bazel package
  • this broke both the Bazel workflow and hosted test lanes that compile core_test_support

Fix in e607fb8e4:

  • replace the compile-time include with a shared runtime loader using codex_utils_cargo_bin::find_resource!("../../models.json")
  • reuse the same loader from core/tests/common/test_codex.rs
  • remove the now-unused anyhow::Context import

Local validation on the final tree:

  • cargo test -p core_test_support ✅
  • bazel test //codex-rs/core/tests/common:common-unit-tests --test_output=errors ✅

Watcher is now following the new head SHA e607fb8e4e47353c0009486bab0eca00b0762cb0, which has already restarted CI.

@OpenCodeEngineer

Copy link
Copy Markdown

Pushed 1a8218d135a642244c182a77805fb7b32757bc83 to this PR (codex: fix PR #32 hosted test regressions).

This follow-up addresses the hosted failures that were still exposed after the runner fallback work:

  • app-server and core test cache fixtures now include provider_scope, matching the current models_cache.json schema
  • TUI model-switch tests now avoid in-test Cargo builds by preferring sibling/target binaries, and Windows TOML fixture paths are quoted correctly
  • rust-ci now prebuilds codex and test_stdio_server before nextest
  • memories prompts now use Bazel-safe include_str!() templates instead of Askama file path resolution
  • the experimental popup snapshot is split for Linux so the Bubblewrap row does not break the non-Linux snapshot

Local validation on this SHA:

  • cargo test -p core_test_support
  • cargo test -p codex-core --test all suite::models_cache_ttl::uses_cache_when_version_matches -- --nocapture --exact
  • cargo test -p codex-core --test all suite::remote_models::remote_models_truncation_policy_with_tool_output_override -- --nocapture --exact
  • cargo test -p codex-core --test all suite::rmcp_client::stdio_image_responses_are_sanitized_for_text_only_model -- --nocapture --exact
  • cargo test -p codex-core memories::prompts::tests -- --nocapture
  • cargo test -p codex-app-server --test all suite::v2::model_list -- --nocapture
  • cargo test -p codex-tui --test all suite::model_switching_e2e::models_dev_provider_config_parses_custom_provider -- --nocapture --exact
  • cargo test -p codex-tui --test all suite::model_switching_e2e::ollama_model_switch_then_prompt_uses_responses_api -- --nocapture --exact
  • cargo test -p codex-tui --test all suite::model_availability_nux::resume_startup_does_not_consume_model_availability_nux_count -- --nocapture --exact
  • cargo test -p codex-tui chatwidget::tests::experimental_popup_marks_reflection_enabled_when_feature_flag_is_enabled -- --nocapture

GitHub reruns are active on this commit now. Current check snapshot immediately after push: 4 passed, 23 pending, 0 failed. I’m keeping watch on the new SHA.

@OpenCodeEngineer

Copy link
Copy Markdown

Pushed a narrow workflow-only follow-up at d6a06413f38b688f4529aebbd6c14e110a57a420 (codex: fix PR #32 windows arm node setup).

Why this was needed:

  • the rerun on 1a8218d13 exposed a new immediate failure in Tests — windows-11-arm - aarch64-pc-windows-msvc
  • the job never reached Rust; it failed in step 3, actions/setup-node@v6, immediately after resolving codex-rs/node-version.txt to Node 22.22.0

What changed:

  • keep the normal Node setup path for every non-Windows-ARM test lane
  • install x64 Node explicitly on the Windows ARM test lane so js_repl setup uses the x64 runtime under emulation instead of the failing default architecture path

Validation:

  • local YAML parse of .github/workflows/rust-ci.yml

The matrix restarted on d6a06413f and is pending again. Current snapshot right after push: 2 passed, 25 pending, 0 failed. I’m keeping watch on the new rerun.

@dzianisv

Copy link
Copy Markdown
Owner Author

Superseded by #35, which now carries this branch's changes on the consolidated integration branch.

@dzianisv dzianisv closed this Mar 17, 2026
@dzianisv
dzianisv deleted the issue-28-runner-availability branch March 17, 2026 17:06
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 18, 2026
dzianisv pushed a commit that referenced this pull request Mar 20, 2026
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.

2 participants