Skip to content

docs(operators): remove op-geth how-to content now that support has ended - #2351

Open
GigaHierz wants to merge 1 commit into
mainfrom
GigaHierz/2325-remove-op-geth-howto
Open

GigaHierz wants to merge 1 commit into
mainfrom
GigaHierz/2325-remove-op-geth-howto

Conversation

@GigaHierz

Copy link
Copy Markdown
Contributor

What changed

Support for op-geth ended on Celo Sepolia on June 24, 2026 and on mainnet on July 22, 2026 (matches operate/notices/op-geth-deprecation). Operator pages no longer explain how to keep running it.

  • Deleted the "Still running op-geth?" accordions in run-node.mdx and archive-node.mdx, and the "op-geth variables" accordion in configuration.mdx.
  • Deleted the op-geth container images and the geth-format migrated chaindata link from network-config.mdx; the bootnode note now names op-reth only.
  • Deleted operate/operators/migrate-node.mdx. It was purely the L1 to L2 datadir guide for op-geth (its own banner says op-reth cannot use the output), so no "move off op-geth" content is left to keep. The op-reth path is already in run-node and the notice.
  • Callouts in run-node, archive-node and configuration now state the two dates in one sentence and link the notice; none point at removed sections.
  • Removed inbound links to migrate-node (overview, architecture, faq, run-node warning, archived l2-migration notice) and the op-geth-only sentence in public-rpc-node.mdx.
  • Removed migrate-node from docs.json navigation.

Redirects added

  • /operate/operators/migrate-node to /operate/operators/run-node
  • /cel2/operators/migrate-node re-pointed from the deleted page to /operate/operators/run-node (no redirect chain)

Overlap with #2345

#2345 edits archive-node, configuration, maintenance, network-config and run-node. This PR touches different lines (callout intros, accordions at the end of pages, network-config image and bootnode lines), so a textual conflict is not expected, but whichever merges second should be rebased. maintenance.mdx is not touched here.

Verification

$ mint broken-links
success no broken links found

$ bash scripts/check-orphans.sh
No orphan pages found.

Remaining mentions of op-geth are the deprecation notice, archived notices, and statements that op-geth datadirs cannot be reused.

Closes #2325

🤖 Generated with Claude Code

…nded

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@GigaHierz
GigaHierz requested review from a team as code owners October 1, 2026 14:16
@GigaHierz
GigaHierz requested review from palango and seolaoh and removed request for a team October 1, 2026 14:16

@palango palango left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for clearing this out. CI is green and the PR merges cleanly with #2345. Inline comments below, roughly in order of importance. The first four are worth fixing before merge.

A few points that don't anchor to changed lines:

  • operate/operators/archive-node.mdx:30: "Do not attempt to migrate an archive datadir." now warns against a procedure no page documents. Say it as a fact (the legacy archive datadir is used as-is) or drop it.
  • The deleted migrate-node.mdx had a section that wasn't about op-geth: "Extracting a Key from the Old Geth Keystore" (cast wallet decrypt-keystore). Former L1 node and validator operators now have no page for it. It could move to home/celo-l1.mdx or troubleshooting.
  • The PR body says the only remaining op-geth mentions are the deprecation notice, archived notices and datadir-reuse statements. overview.mdx:28,33, architecture.mdx:15, maintenance.mdx:24, operate/index.mdx:10 and historical-proofs.mdx:10,249 also mention it. None of them is a how-to, so the issue's acceptance criterion still holds, but the description becomes the squash commit, so it should be accurate.
  • Not from this PR: the compose repo's mainnet.env and celo-sepolia.env ship OP_RETH__SNAPSHOT=true, while configuration.mdx:17 and run-node.mdx say the default is false.

These instructions use `op-reth`, Celo's supported execution client. A fresh node starts from an empty datadir and bootstraps from a published snapshot (required on mainnet) or, on Celo Sepolia, syncs from genesis — no L1 data migration required.

Support for `op-geth` ended on each network's switch date — see [End of Support for op-geth](/operate/notices/op-geth-deprecation) for the dates, and the **Still running op-geth?** notes at the end of this guide.
Support for `op-geth` ended on Celo Sepolia on June 24, 2026 and on mainnet on July 22, 2026. A node still running it can follow the wrong chain; see [End of Support for op-geth](/operate/notices/op-geth-deprecation).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Operators still on op-geth are the ones at risk here, and after this PR all they get is "migrate to op-reth". The compose repo already has a switch-over guide, RETH_MIGRATION.md, which covers running op-reth next to op-geth, comparing the two, adding --l2.enginekind=reth to op-node and moving traffic across. Nothing in the docs links it. Could this callout and the op-geth-deprecation notice point to it?

Related: the migrate-node redirects could go to /operate/notices/op-geth-deprecation rather than run-node. Someone asking "how do I migrate my node" is better served by the notice than by a fresh-install guide.

Comment thread docs.json
"destination": "/operate/operators/run-node"
},
{
"source": "/operate/operators/migrate-node",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/infra-partners/operators/migrate-node also needs an exact entry. Today it reaches /operate/operators/migrate-node through the /infra-partners/:slug* wildcard:

$ curl -sI https://docs.celo.org/infra-partners/operators/migrate-node
HTTP/2 308
location: /operate/operators/migrate-node

After this PR that becomes a two-hop chain. The URL is live: celo-l2-node-docker-compose MIGRATION.md links it on lines 5 and 11. An exact source wins over the wildcard, so adding /infra-partners/operators/migrate-node → /operate/operators/run-node (or the deprecation notice, see my comment on run-node.mdx) fixes it.

## Serve transaction lookups by hash

A public RPC endpoint should return any transaction by its hash. op-reth exposes the standard `eth` namespace, so transactions are retrievable by hash within the node's retained history, and the [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) setup needs no extra configuration for this. (On the legacy op-geth setup this instead requires `--history.transactions=0`, which the compose setup sets for you.)
A public RPC endpoint should return any transaction by its hash. op-reth exposes the standard `eth` namespace, so transactions are retrievable by hash within the node's retained history, and the [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) setup needs no extra configuration for this.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without the op-geth caveat, this now says flatly that the compose setup needs no extra configuration to serve lookups by hash. That's not true for NODE_TYPE=minimal. The compose repo maps it to reth's --minimal, which sets transaction_lookup: Some(PruneMode::Full) (reth crates/node/core/src/args/pruning.rs, minimal_prune_modes; --full leaves it as None). On a minimal node, eth_getTransactionByHash returns null for every transaction. Worth saying that a public RPC node needs NODE_TYPE=full or archive.

@@ -20,9 +20,8 @@ The recommended [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l
- [L2 allocs](https://storage.googleapis.com/cel2-rollup-files/celo/l2-allocs.json)
- [rollup.json](https://storage.googleapis.com/cel2-rollup-files/celo/rollup.json)
- [Genesis](https://storage.googleapis.com/cel2-rollup-files/celo/genesis.json)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The compose repo still sends people here. MIGRATION.md "Option 1: Download Pre-Migrated Data" says to download migrated datadirs "from the official sources listed in the Celo Docs", and migrate.sh points at the same guide. After this PR they land on run-node, which lists neither. This needs a matching change in celo-l2-node-docker-compose (remove or rewrite MIGRATION.md), or at least a follow-up noted in this PR.

The instructions for migrating a Celo node from Layer 1 to Layer 2 are outlined [in this guide](/operate/operators/migrate-node). This process is necessary to transition your Celo L1 node to the new Celo L2 architecture based on the OP-Stack.

If you wish to run a Celo L2 node from scratch, you can follow the instructions in the [Running a Celo Node](/operate/operators/run-node) guide.
The L1 datadir migration guide has been removed because the tool only produced `op-geth` data. If you wish to run a Celo L2 node from scratch, you can follow the instructions in the [Running a Celo Node](/operate/operators/run-node) guide.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few things in this sentence:

  • "has been removed" describes the docs' own edit history. AGENTS.md §4 asks pages to document what is true now.
  • "the tool" isn't named anywhere earlier on the page. Either name celo-migrate or drop the clause.
  • "from scratch" suggests there's another option, and there isn't one now.

The frontmatter description also still promises "what node operators had to do", which the page no longer covers (AGENTS.md §8).

Comment thread operate/operators/faq.mdx
<Accordion title="How do I run a node or upgrade an existing node?">

See the guides for [running a node](/operate/operators/run-node) or the guide on [how to migrate an L1 node](/operate/operators/migrate-node).
See the guides for [running a node](/operate/operators/run-node).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The question is "How do I run a node or upgrade an existing node?", and this answers only the first half. "guides" is plural above a single link, too. Linking /operate/operators/maintenance (client upgrades) and /operate/notices/op-geth-deprecation (op-geth → op-reth) would cover the upgrade half that the migrate-node link used to.

**Datadirs from op-geth cannot be reused**

`op-reth` uses a different on-disk format. A datadir written by `op-geth` — including one produced by the [L1→L2 migration](/operate/operators/migrate-node) — cannot be used with `op-reth`. Start from an empty `DATADIR_PATH`. Pre-L2 historical state is served separately; see [Running an archive node](/operate/operators/archive-node).
`op-reth` uses a different on-disk format. A datadir written by `op-geth` cannot be used with `op-reth`. Start from an empty `DATADIR_PATH`. Pre-L2 historical state is served separately; see [Running an archive node](/operate/operators/archive-node).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropping "including one produced by the L1→L2 migration" makes this warning narrower. A celo-migrate output was never written by op-geth, so someone holding one can reasonably decide this doesn't apply to them. start-op-reth.sh will refuse to start because $DATADIR/geth exists, but the guide should say so first. I'd keep the clause and drop only the link: "including one produced by the L1→L2 migration tool".

**Execution client: op-reth**

The variables below configure `op-reth`, Celo's supported execution client. Support for `op-geth` ended on each network's switch date; for its variables, see the **op-geth variables** accordion below and [End of Support for op-geth](/operate/notices/op-geth-deprecation).
The variables below configure `op-reth`, Celo's supported execution client. Support for `op-geth` ended on Celo Sepolia on June 24, 2026 and on mainnet on July 22, 2026; see [End of Support for op-geth](/operate/notices/op-geth-deprecation).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With this change the switch dates appear in three callouts (here, run-node.mdx:14 and archive-node.mdx:16), while overview.mdx, architecture.mdx and operate/index.mdx just link to the notice. AGENTS.md §7 says dates and numbers live on one canonical page and everything else links there. The callouts on main already worked that way, so I'd keep the link and drop the dates.

@@ -86,23 +86,6 @@ These flags are set for you by the compose start scripts; they are listed here b

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The op-geth table you removed had the only documented image-pinning variable (IMAGE_TAG__OP_GETH). Compose supports IMAGE_TAG__OP_RETH and IMAGE_TAG__OP_NODE (docker-compose.yml:48, mainnet.env:145-147), but the reference doesn't mention them now. Worth adding, so operators can hold a version through a release.

@@ -132,20 +132,3 @@ Ensure any datadir you supply is not in use by a running node before proceeding.
```bash
cast balance --block <pre-migration-block-number> <address> --rpc-url http://localhost:9993

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: <pre-migration-block-number> doesn't say where to find that number, and this PR deletes one of the pages that listed it. A link to the archived l2-migration notice or operate/specification/deployments here would help (mainnet L1 ended at block 31056499).

@GigaHierz
GigaHierz requested a review from palango October 1, 2026 16:07

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.

task: remove or reframe op-geth how-to content now that support has ended

2 participants