ethereum-optimism / ethereum-optimism/optimism
opgeth-decoupling: CI ratchet — scheduled upstream-geth build with a tightening baseline
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 145
Description
Part of #20257.
## Goal
Make decoupling progress measurable and regression-proof: a scheduled CI job that continuously
rehearses the #20266 cutover, so the final flip is a formality instead of a leap of faith.
## Design
- Script (also runnable locally): in a throwaway checkout, drop the go.mod `replace` for
go-ethereum, pin the upstream version matching the current op-geth base, `go mod tidy`,
then `go build`/`go vet` the tree and emit the list of packages that fail.
- Compare against a **committed baseline** file of known-failing packages:
- a package failing that is *not* in the baseline → job fails (regression: someone reintroduced
a fork-API use into a clean package);
- a baselined package now building clean → job asks to remove it from the baseline (ratchet
tightens; only ever shrinks).
- Scheduled daily (per current CI conventions for scheduled tests), plus manually triggerable.
- Cutover (#20266) = baseline reaches empty; the flip PR deletes the job and the baseline.
Notes: the differential tests in op-core are expected baseline members until cutover (they import
op-geth-only symbols by design). Go reports only frontier packages — the baseline compares
*failing package sets*, not error counts, which is stable under that behavior.
## Acceptance criteria
- Scheduled job green on the current baseline; a seeded fork-API regression in a clean package
turns it red.
- Baseline file + one-command local reproduction documented in the decoupling doc.
🤖 *Generated by Claude Code*
Contributor guide
Research direction
Start with the op-geth decoupling context in #20257 and the cutover described in #20266, then inspect go.mod and the repository's existing scheduled-test CI conventions. Define the local reproduction around removing the go-ethereum replace, pinning the upstream version, running go mod tidy, go build, and go vet. Done means the scheduled and manual job compares failing package sets against a committed baseline, detects regressions, and documents the one-command reproduction in the decoupling doc.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, go
- Domain
- build-system, ci-cd
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100