ethereum-optimism / ethereum-optimism/optimism

opgeth-decoupling: CI ratchet — scheduled upstream-geth build with a tightening baseline

Open
#21,748 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.