circleci: make implicit-medium optimism jobs explicit (12 jobs, mixed gen2 sizes)#20957
Open
hdcesario-op wants to merge 1 commit into
Open
circleci: make implicit-medium optimism jobs explicit (12 jobs, mixed gen2 sizes)#20957hdcesario-op wants to merge 1 commit into
hdcesario-op wants to merge 1 commit into
Conversation
… gen2 sizes) Removes the last 12 jobs in this repo that declared no resource_class field. Post-#20917/#20927 every other job is on explicit Gen2; these stragglers were running on Gen1 medium by CircleCI default. Each is now set to an explicit Gen2 class right-sized to its workload, with two machine-image pins to preserve the Gen1 OS where it would otherwise have silently upgraded jammy → noble. → small.gen2 (6 docker jobs): ci-gate, l2-chains-sync-check, op-deployer-forge-version, required-rust-ci, required-rust-e2e, bump-nightly → medium.gen2 (6 jobs): prepare-continuation-config (docker, SPOF for all CI) cannon-stf-verify (docker, setup_remote_docker) todo-issues (machine) cannon-prestate (machine) stale-check (machine) close-issue (machine) Image pins (preserve Gen1 ubuntu-2204:current): todo-issues : was image: <<pipeline.parameters.c-base_image>> (defaults to "default") cannon-prestate : no image was declared stale-check and close-issue already pin ubuntu-2204:2024.08.1; no image change. Refs: #20899 #20917 #20927 #20931
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #20957 +/- ##
==========================================
- Coverage 76.3% 76.1% -0.3%
==========================================
Files 185 185
Lines 10712 10712
==========================================
- Hits 8178 8156 -22
- Misses 2390 2412 +22
Partials 144 144
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
falcorocks
approved these changes
May 22, 2026
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.
Summary
Removes the last 12 jobs in this repo that declared no
resource_class:field. Post-#20917 / #20927 every other job is on an explicit Gen2 class; these were the remaining stragglers running on Gen1 medium by CircleCI default. Each is set to an explicit Gen2 class right-sized to its workload, plus two machine-image pins to preserve the Gen1 OS where it would otherwise have silently upgraded jammy → noble.This completes the optimism repo's Gen2 migration. No further
resource_classwork is planned here.Why Gen2, not Gen1
Post-#20927 the whole repo is on Gen2. Mixing Gen1 in for these last 12 jobs would create two-class drift we'd just have to clean up later.
Why one PR, not two phases
The original handoff (and #20917's pattern) anticipated ~110 implicit-medium jobs, which would have justified splitting "make explicit" (Phase A) from "right-size" (Phase B). The actual scope is 12 jobs — small enough that per-job rationale fits in one audit-grade PR.
Per-job rationale
.circleci/config.ymlprepare-continuation-configmedium.gen2checkout. Conservative: blast radius if it OOMs is every pipeline..circleci/continue/main.ymlci-gatesmall.gen2utils/ci-gatecall. Pure API gate, deterministic workload..circleci/continue/main.ymll2-chains-sync-checksmall.gen2check-l2-chains-sync.sh) verifying two files are in sync..circleci/continue/main.ymltodo-issuesmedium.gen2image: ubuntu-2204:currentmedium. Image paramc-base_imageresolves to the literal string"default", so swapping class would silently switch host from jammy to noble. Pin preserves Gen1 OS..circleci/continue/main.ymlcannon-prestatemedium.gen2image: ubuntu-2204:currentjust reproducible-prestate), and nomachine.imagedeclared today — so the highest-risk job for the Gen1→Gen2 OS-default change. Pin first; broader right-sizing question left for a follow-up..circleci/continue/main.ymlcannon-stf-verifymedium.gen2setup_remote_docker, which is not supported onsmall.gen2, plus a cannon build step..circleci/continue/main.ymlop-deployer-forge-versionsmall.gen2just check-forge-versioncall..circleci/continue/main.ymlstale-checkmedium.gen2medium. Image already pinned toubuntu-2204:2024.08.1— no OS-default risk..circleci/continue/main.ymlclose-issuemedium.gen2stale-check: machine minimum, image already pinned..circleci/continue/rust-ci.ymlrequired-rust-cismall.gen2utils/ci-gateonly)..circleci/continue/rust-e2e.ymlrequired-rust-e2esmall.gen2utils/ci-gateonly)..circleci/rust-nightly-bump.ymlbump-nightlysmall.gen2gh pr create. Pure version bump.Totals: 6 →
small.gen2, 6 →medium.gen2, 2 image pins.Methodology for picking
small.gen2Bias toward determinism-of-workload, not just utilization numbers. From the #20899 / #20931 fuzz lesson: telemetry doesn't capture outlier-seed spikes for distribution-tailed workloads, so a job that averages low but is non-deterministic should stay larger than the averages suggest.
Applied here as a checklist —
small.gen2only if all of these are true:*-gate,*-check,version-bump,*-aggregator, prepare/setup)go test/cargo test/forge test/ build commandssetup_remote_docker(CircleCI does not support it onsmall.gen2)parallelism: N(none of the 12 declare this anyway)docker(machine has nosmalltier)Of the 12 jobs, 6 cleared every condition.
Machine-executor image-pin notes
Per the #20927 zstd lesson: machine jobs that don't explicitly pin
machine.imageinherit the class default (Gen1 →ubuntu-2204:current/ jammy, Gen2 →ubuntu-2404:current/ noble). Swapping<class>→<class>.gen2therefore silently upgrades the host OS.Two of the four machine jobs in this PR were exposed to that:
cannon-prestatedeclared noimage:at all.todo-issuesreferenced<<pipeline.parameters.c-base_image>>, which defaults to the literal string"default"— CircleCI's sentinel for "use the class default".Both now pin
image: ubuntu-2204:currentto preserve the Gen1 OS.stale-checkandclose-issuewere already on pinnedubuntu-2204:2024.08.1and need no image change.Validation gate
git diff --stat)resource_class:field now have oneyaml.safe_loadRefs