Skip to content

ci: offloaded suite runs the hosted lanes' set for each event - #1705

Open
ViperJuice wants to merge 1 commit into
mainfrom
claude/ci-offload-parity
Open

ViperJuice wants to merge 1 commit into
mainfrom
claude/ci-offload-parity

Conversation

@ViperJuice

@ViperJuice ViperJuice commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Offload has been off since agent-harness#908, and the hosted lanes kept changing in that time. The Dagger module did not follow. If offload were turned back on today, the offload path would differ from the hosted path in three ways:

  • Pull requests do more work. agent-harness#1029 cut hosted PR runs to py3.10 plus the wheel smoke. An offloaded PR would still run py3.10, 3.11, 3.12 and the full Gate A, which is slower than hosted.
  • Known flakes run on PRs. The quarantine deselect (PHASE_LOOP_DESELECT_QUARANTINE) is set only in the hosted lanes.
  • Two guards disappear. The model-id guard (scripts/check_model_id_sources.py) and phase-loop doctor --fail-on-stale run only in the hosted pytest job, which is skipped when the run is eligible for offload.

This PR is the parity work that has to land before the offload default flips. It does not flip it: OFFLOAD_SANDBOX_READY stays 'false'.

What

  • ci/dagger/.../main.py:
    • all(source, chronology, pull_request=False). On a pull request it runs the py3.10 suite and a new wheel_smoke stage. That stage runs gate_a_cleanroom.sh with PHASE_LOOP_SKIP_GATE_A_SUITE=1, the same switch the hosted wheel-smoke job uses.
    • Every other event runs the three suites and Gate A, as today. The default is the full set.
    • verdicts.txt records which stage set ran.
  • _suite:
    • exports PHASE_LOOP_DESELECT_QUARANTINE (1 on a PR, 0 otherwise);
    • runs the model-id guard before the suite and phase-loop doctor --fail-on-stale after it, as each hosted lane does.
  • ci/offload-gate.sh: passes --pull-request from OFFLOAD_PULL_REQUEST, which must be true or false. Unset means the full set.
  • test.yml: the offload step gets one new env line, OFFLOAD_PULL_REQUEST: ${{ github.event_name == 'pull_request' }}. No other hunk.
  • tests/test_ci_xdist_adoption.py: re-records the _suite digest. The pin's own comment allows a change if the pin is updated with it.

Tests

  • New tests/test_ci_offload_parity.py:
    • the module's PR lane set equals the hosted matrix minus its PR exclude;
    • wheel smoke runs on a PR and Gate A otherwise, in both places;
    • the quarantine switch follows the event in both places;
    • the offload job hands the event to the gate script, and the gate script passes the right --pull-request value to dagger (unset, false, true; an unknown value is refused);
    • every hosted pytest step either runs its command in the module's _suite or is on a short, reasoned list of setup steps the offload job already covers. A future hosted-only guard therefore fails the test.
  • Mutation checks, each run locally:
    • widening the PR lane set fails 1 test;
    • dropping the --pull-request hand-off fails 3;
    • adding a hosted-only guard step fails 1.
  • test_ci_offload_parity, test_ci_xdist_adoption, test_ci_chronology_scope, test_ci_offload_lock and test_ci_quarantine: 143 passed, 1 skipped. ruff check is clean.
  • dagger -m ci/dagger call all --help loads the module locally (v0.21.9) and lists --pull-request.
  • Not exercised: a real offloaded run. Offload stays off until an offload environment is proven with the proof dispatch from agent-harness#1703.

Coordination

agent-harness#1703 edits the same offload step: it adds ssh-user under with:, and this PR adds an env line. If git conflicts on the second landing, keep both lines.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PEJEudHgxc7NftvDdc8K6P


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

While the offload path was off, the hosted lanes changed and the Dagger
module did not follow. An offloaded pull request would have run all
three interpreters and the full Gate A (agent-harness#1029 cut hosted PRs
to py3.10 + wheel smoke), run the quarantined known flakes, and skipped
the model-id guard and `phase-loop doctor --fail-on-stale`, which live
only in the hosted pytest job.

- `all(..., pull_request)`: a PR runs py3.10 and the new `wheel_smoke`
  stage (gate_a_cleanroom.sh with PHASE_LOOP_SKIP_GATE_A_SUITE=1).
  Every other event runs the three suites and Gate A. The default is
  the full set.
- `_suite` exports PHASE_LOOP_DESELECT_QUARANTINE (1 on a PR, else 0)
  and runs the model-id guard before the suite and the doctor after
  it, as each hosted lane does. The xdist adoption pin for `_suite` is
  re-recorded.
- ci/offload-gate.sh passes `--pull-request` from OFFLOAD_PULL_REQUEST
  (validated true|false, unset = full set). The offload job sets it
  from the event.
- tests/test_ci_offload_parity.py pins module against workflow. Each
  check was mutation-tested: widening the PR lane set, dropping the
  `--pull-request` hand-off, and adding a hosted-only guard step each
  fail it.

The default path is unchanged: OFFLOAD_SANDBOX_READY stays 'false'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PEJEudHgxc7NftvDdc8K6P
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T17:38:08.375752Z d44cc20 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This branch has not been deployed

No deployments
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