Repository navigation
chore: disable ix preview CI, jobs are failing due to compute exhaustion - #4680
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
⏭️ Performance benchmarks were skippedPerf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to To run them on this PR, do any of the following, then push a commit (or re-run CI):
|
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Disable the IX CI workflows. They've been hanging since Friday 10am PT, presumably because of capacity exhaustion, and are now just noise for both humans and agents.
Direct answers
baml-run-a9c278e0-mtd7weak000d(ix,ix-web) at 2026-08-28 17:44:53 UTC / 10:44:53 PDT. It began the substantive Rust-backed WASM build at 18:02:18 UTC / 11:02:18 PDT, loggedFinished release profile [optimized] target(s) in 42.85s, ran the browser test, logged1 passed, and completed successfully at 18:03:43 UTC / 11:03:43 PDT. API queue time was 3 seconds and execution time was 18m50s. The workflow event waspull_request, branchcodex/function-spec-streaming-redesign, run head SHA02fe831222f70c947ef7c31fabb9ea7f4179a2fb, and checked-out PR merge SHAe655eb0c306a12f4db7eab89c6cdd39bf29c93ab.For core Rust lanes, the latest job to acquire a runner was Cargo Tests (musl) job 98895925475, assigned at 2026-08-28 17:25:02 UTC / 10:25:02 PDT; it executed Rust compilation and then hit its 45-minute job timeout. The last successful core Cargo test was GNU job 98666282239, completed 2026-08-28 17:38:05 UTC / 10:38:05 PDT after waiting 20h32m52s for a runner and executing for 21m40s. The last Size Gate success was Linux job 98666282151, completed 2026-08-28 17:38:35 UTC / 10:38:35 PDT. The last WASM Pack success was job 97573349611, completed 2026-08-24 20:05:02 UTC / 13:05:02 PDT.
The most recently triggered run in which the intended ix suite was genuinely green was run 32339726862 for PR #4541: all 19 ix jobs acquired runners and succeeded, completing 2026-08-20 10:58:14 UTC / 03:58:14 PDT. An earlier-triggered canary run 32335256169 finished later in wall-clock time at 11:12:57 UTC / 04:12:57 PDT, with all 22 ix jobs successful. These were the only two genuinely all-ix-green attempts in the retained history.
Method and definition
The investigation paginated the complete retained history for
.github/workflows/ix-ci.yml: 574 workflow runs, run numbers 1-582, and 597 attempts including 23 reruns. Run numbers 15, 19, 20, 23, 34, and 100-102 were unavailable; because the workflow was introduced on August 18, this is not an age-based retention boundary, but the API does not reveal why those records are absent. Every retained attempt's jobs, steps, timestamps, conclusions, runner name/group/labels, annotations, and available logs were inspected. The current workflow and its four reusable workflows were compared with the relevant historical SHAs.An actual Rust CI workload means an ix-labelled Cargo Tests, Size Gate, WASM Pack Tests, Webview test, SDK test, or other Rust/build job that had a non-empty runner name, began runner-side steps, and executed substantive Cargo, Rust compilation, build, or test commands.
Determine changesalone, skipped job placeholders, and jobs that GitHub created but never assigned to a runner do not count. This distinction matters because queued self-hosted jobs can have an APIstarted_atequal tocreated_at; runner identity plus step/log evidence was required.Retained-history findings
In the bounded recent window from 2026-08-28 00:15:10 UTC through 2026-09-01 16:31:06 UTC, 244 attempts comprised 107 path-gated/no-ix attempts and 137 Rust-scheduled attempts. Of the scheduled attempts, 130 acquired no ix runner at all: 25 completed after the exact 24-hour runner wait, 81 were cancelled or superseded by concurrency, and 24 remained active/queued at the snapshot. The 137 attempts created 2,737 ix jobs; 414 were still queued at the snapshot and 585 unassigned jobs in the window reached the exact 24-hour limit. Only 19 jobs, across seven attempts, acquired ix runners: nine succeeded individually, six failed after losing runner communication, and four hit execution timeouts. There were zero substantive test/build failures and zero genuinely green suite attempts in this window. Attempt-level categories overlap for partially assigned runs.
Representative exact evidence:
The job has exceeded the maximum execution time while awaiting a runner for 24h0m0s.Canceling since a higher priority waiting request for ix-preview-4557/merge-4557 exists.The job has exceeded the maximum execution time of 45m0s.The self-hosted runner lost communication with the server.... All six recently assigned jobs whose conclusion wasfailurehad this annotation.Run C# sdk tests.Root cause and onset
The directly proven mechanism is that no eligible communicating ix runner became available after 2026-08-28 17:44:53 UTC. Hundreds of jobs reached GitHub's exact 24-hour self-hosted-runner acquisition limit; the final assigned jobs also included six runner-lost-communication failures. GitHub-hosted
Determine changesjobs continued to run, the same compound labels (ixplus family labels) had matched successfully before the cutoff, and a job'stimeout-minutesstarts after assignment, so workflow execution timeout does not explain the queue. Concurrency explains many superseded runs, but not the canary jobs that waited exactly 24 hours.The best-supported inference is that the ix control plane stopped supplying healthy matching runners at sufficient capacity, degrading from long queues to complete admission/provisioning failure. Repository evidence cannot distinguish ordinary provider VM/region capacity exhaustion from an ix GitHub App admission/provisioning outage or all matching organization runners being offline. The repository runners endpoint showed zero because these runners are organization-scoped, while the organization runner endpoint requires administration access and returned 403. There was no provider-side admission error in never-assigned job logs. Missing runner labels are unlikely because all label families matched previously; organization concurrency quota is also unlikely as the GitHub-hosted jobs continued while only ix-labelled jobs stalled, but neither can be excluded without organization/ix administrative telemetry.
Degradation was visible before the cutoff: the first assignment queue over one hour appeared on August 20; job 96621761615 was the first over 12 hours, waiting 16h51m9s before assignment on August 21; August 25 assignments waited 12-15 hours; August 26-27 commonly waited 18-24 hours. The final August 28 batch had 29 assignments in the 17:00 UTC hour with a median queue of 16h52m25s, although a few fresh web jobs acquired runners immediately. There were no assignments afterward.
The workflow was introduced on August 19 with
runs-on: [ix, family]. Provisioning moved from a repository reconciliation workflow to the ix GitHub App on August 21; shared R2 cache credentials followed on August 24. Runners continued to work for a week after the App switch, so it correlates with the degraded period but is not an immediate causal boundary. The Size Gate, WASM Pack, and Webview reusable workflows were byte-identical between the last green SHA and the latest actual-run SHA; Cargo changes affected package selection, not runner routing. No workflow change coincides with the final cutoff. The current production pool configuration is external to the repository. An abandoned pre-merge prototype showed 32 one-slot members with nine warm members across the runner families, but it is not authoritative evidence for the App-managed pool.The top-level concurrency key includes the PR number or SHA. New commits cancel old runs for the same PR, which explains many cancellations. On
canary, including the SHA means each push has a unique group, so old 19-22-job waves accumulate rather than supersede one another. Nested reusable-workflow concurrency keys independently cancel some WASM/Webview jobs, producing partial attempts.Follow-up recommendations
No ix workload scheduledso they cannot be confused with Rust CI success.Reproduction
Validation
actionlint .github/workflows/ix-ci.ymlgit diff --check