Conversation
…nded Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
palango
left a comment
There was a problem hiding this comment.
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.mdxhad 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 tohome/celo-l1.mdxor 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:10andhistorical-proofs.mdx:10,249also 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.envandcelo-sepolia.envshipOP_RETH__SNAPSHOT=true, whileconfiguration.mdx:17andrun-node.mdxsay the default isfalse.
| 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). |
There was a problem hiding this comment.
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.
| "destination": "/operate/operators/run-node" | ||
| }, | ||
| { | ||
| "source": "/operate/operators/migrate-node", |
There was a problem hiding this comment.
/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. |
There was a problem hiding this comment.
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) | |||
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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-migrateor 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).
| <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). |
There was a problem hiding this comment.
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). |
There was a problem hiding this comment.
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). |
There was a problem hiding this comment.
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 | |||
|
|
|||
There was a problem hiding this comment.
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 | |||
There was a problem hiding this comment.
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).
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.run-node.mdxandarchive-node.mdx, and the "op-geth variables" accordion inconfiguration.mdx.network-config.mdx; the bootnode note now names op-reth only.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 inrun-nodeand the notice.public-rpc-node.mdx.migrate-nodefromdocs.jsonnavigation.Redirects added
/operate/operators/migrate-nodeto/operate/operators/run-node/cel2/operators/migrate-nodere-pointed from the deleted page to/operate/operators/run-node(no redirect chain)Overlap with #2345
#2345 edits
archive-node,configuration,maintenance,network-configandrun-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.mdxis not touched here.Verification
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