Skip to content

docs(node-operation): single node type, verify-mode, drop deprecated zkTrie migration (#988)#148

Open
curryxbo wants to merge 4 commits into
mainfrom
docs-988-node-operation-sequencer
Open

docs(node-operation): single node type, verify-mode, drop deprecated zkTrie migration (#988)#148
curryxbo wants to merge 4 commits into
mainfrom
docs-988-node-operation-sequencer

Conversation

@curryxbo

@curryxbo curryxbo commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Closes morph-l2/morph#988

What

Update the node operation docs for the single-node model (issue morph-l2/morph#988; aligns with run-morph-node PR morph-l2/run-morph-node#100, verify-mode behavior from morph-l2/morph#966).

Changes

  • Remove the separate "Run a validator node" page — there is one node type now. Drop its sidebar entry.
  • Full node page: add a "single node type" note and a Batch verification mode section documenting DERIVATION_VERIFY_MODE:
    • local (default): rebuild blob from local L2 + compare versioned hashes vs L1.
    • layer1: pull L1 beacon blob + derive via engine — equivalent to the former validator node. Reminder: set layer1 for that old validator-style L1-derivation behavior.
  • Docker upgrade guide: remove the now-defunct make run-validator / make stop-validator commands.
  • Remove the deprecated zkTrie → MPT migration guide — mainnet/Hoodi have been on MPT for a long time. Drops the page, its sidebar entry, and inbound links (full-node tip, prune-state caution).

Scope

Limited to the node-operation module. No style rewrites; unrelated outdated content left untouched. Verified with a local pnpm build (exit 0, no broken links under onBrokenLinks: 'throw').

Note: the failing Cloudflare Pages / Workers Builds: pre-rail checks also fail on main — they are a pre-existing repo CI/config issue, not caused by this PR.

Note: issue lives in morph-l2/morph, so GitHub won't auto-close it cross-repo on merge — close morph-l2/morph#988 manually after merge.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated node operation guides to reflect that node verification is always L1-based and configured via DERIVATION_VERIFY_MODE (including guidance to restore former validator L1 behavior).
    • Expanded verification guidance with a batch verification mode and example mismatch output.
    • Simplified the Docker upgrade guide by removing validator-specific stop/start steps.
    • Removed legacy validator node documentation, and removed outdated zkTrie→MPT migration content and a related reference link in the prune-state guide.

…h-l2/morph#988)

- Remove the separate "validator node" page; there is one node type now.
- Document DERIVATION_VERIFY_MODE on the node page: local (default, rebuild +
  compare versioned hashes vs L1) vs layer1 (pull beacon blob + derive via
  engine, equivalent to the former validator). Remind operators to set layer1
  for the old validator-like L1-derivation behavior.
- Drop the now-removed `make run-validator` commands from the docker upgrade guide.
- Remove validator-node entry from the node-operators sidebar.

Ref morph-l2/morph#966 (Feat: Sequencer Final PR) for the verify-mode behavior.
@curryxbo curryxbo requested a review from a team as a code owner June 12, 2026 03:28
@curryxbo curryxbo requested review from r3aker86 and removed request for a team June 12, 2026 03:28
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying morph-doc with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1ca5cd4
Status:🚫  Build failed.

View logs

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
pre-rail 1ca5cd4 Jun 15 2026, 07:16 AM

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@curryxbo, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 13 minutes and 43 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ecdb446e-12f7-48d2-9460-e7773da52608

📥 Commits

Reviewing files that changed from the base of the PR and between bfcf72d and 1ca5cd4.

📒 Files selected for processing (2)
  • docs/build-on-morph/developer-resources/node-operation/upgrade-node/0-centralized-sequencer-upgrade.md
  • sidebars.js
📝 Walkthrough

Walkthrough

This PR consolidates the separate validator node role into the full node, introducing a DERIVATION_VERIFY_MODE configuration parameter to control verification behavior. Documentation updates clarify the removal of the standalone validator node, describe the two verification modes, provide upgrade path guidance, and update navigation accordingly.

Changes

Validator Node Consolidation

Layer / File(s) Summary
Full-node guide: validator consolidation and verification modes
docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md
Adds info callout explaining that validator nodes no longer exist separately and that DERIVATION_VERIFY_MODE configuration controls verification behavior. Introduces Batch verification mode section detailing local (default) vs layer1 behaviors, how to restore validator-style behavior via DERIVATION_VERIFY_MODE=layer1, and example mismatch log output.
Upgrade guide: remove validator-specific commands
docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md
Removes validator-only make stop-validator and make run-validator commands, simplifying upgrades to use only standard node restart commands.
Navigation and documentation cleanup
sidebars.js, docs/build-on-morph/developer-resources/node-operation/1-prune-state.md
Updates NodeOperatorsSidebar "Run Node" category to link to the full-node guide instead of the removed validator-node guide. Removes outdated reference to the zkTrie-to-MPT migration guide from the prune-state caution notice.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related issues

  • morph-l2/morph#988: The PR's removal of separate validator node documentation and consolidation into a unified full-node guide with L1-based verification via DERIVATION_VERIFY_MODE implements the documentation updates required for migration to a centralized-sequencer architecture where nodes transition from distinct validator/follower roles to a unified follower/verifier model.

Possibly related PRs

  • morph-l2/morph-doc#140: Both PRs touch the same node-operation docs—especially docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md (node verification sections) and 1-prune-state.md (pruning guidance)—so this PR's verification-mode and validator-node consolidation updates are directly related to #140's doc restructuring.

Suggested reviewers

  • r3aker86

Poem

🐰 A validator once stood tall and proud,
Now it's just a mode, part of the crowd,
Full nodes with config, cleaner and light,
The upgrade guide's simpler, everything's right! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the three main changes: consolidating to a single node type, introducing DERIVATION_VERIFY_MODE configuration, and removing the deprecated zkTrie migration guide.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs-988-node-operation-sequencer

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md`:
- Around line 199-203: The fenced log example in the docs is missing a language
tag which triggers markdownlint; update the fenced block around the log line
(`root hash or withdrawal hash is not equal  originStateRootHash=0x...
deriveStateRootHash=0x...`) to include a language tag such as `text` (i.e.,
change ``` to ```text) so the markdown linter passes and the docs build cleanly.
- Around line 11-13: The callout's claim that there is "no longer a separate
'validator node' to run" should be softened and scoped to this specific guide to
avoid contradiction with other pages; update the text around the "Single node
type" callout to prefix it with a scope qualifier like "In this guide," or "For
this walkthrough," and avoid site‑wide absolutes, while keeping the existing
details about DERIVATION_VERIFY_MODE and the 'layer1' option and linking to
"Batch verification mode"; optionally add a short cross‑reference noting that
other docs (e.g., the integration one‑page) may still reference a separate
validator node and will be updated separately.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 84b991d1-81b3-459f-933f-09c39667bc69

📥 Commits

Reviewing files that changed from the base of the PR and between e00b434 and d69e73c.

📒 Files selected for processing (4)
  • docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md
  • docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md
  • docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md
  • sidebars.js
💤 Files with no reviewable changes (3)
  • docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md
  • docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md
  • sidebars.js

Comment on lines +11 to +13
:::info Single node type
There is no longer a separate "validator node" to run. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](#batch-verification-mode) below.
:::

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Keep the validator-node wording scoped to this guide.

This callout is fine here, but docs/build-on-morph/build-on-morph/1-integration-one-page.md still tells readers to run a “full node and validator node”, so the docs read as contradictory until that page is updated too. Either update that doc in the same PR or soften this note to avoid a site-wide claim.

♻️ Proposed fix
-There is no longer a separate "validator node" to run. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](`#batch-verification-mode`) below.
+There is no longer a separate "validator node" to run in this guide. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](`#batch-verification-mode`) below.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md`
around lines 11 - 13, The callout's claim that there is "no longer a separate
'validator node' to run" should be softened and scoped to this specific guide to
avoid contradiction with other pages; update the text around the "Single node
type" callout to prefix it with a scope qualifier like "In this guide," or "For
this walkthrough," and avoid site‑wide absolutes, while keeping the existing
details about DERIVATION_VERIFY_MODE and the 'layer1' option and linking to
"Batch verification mode"; optionally add a short cross‑reference noting that
other docs (e.g., the integration one‑page) may still reference a separate
validator node and will be updated separately.

Comment on lines +199 to +203
If a node detects a mismatch between the sequencer's submission and its own verification, it logs a line such as:

```
root hash or withdrawal hash is not equal originStateRootHash=0x... deriveStateRootHash=0x...
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the log example fence.

Markdownlint flags this fenced block as missing a language. Use text (or another appropriate language) so the docs build stays clean.

🧹 Proposed fix
-```
+```text
 root hash or withdrawal hash is not equal  originStateRootHash=0x... deriveStateRootHash=0x...
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 201-201: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md
around lines 199 - 203, The fenced log example in the docs is missing a language
tag which triggers markdownlint; update the fenced block around the log line
(root hash or withdrawal hash is not equal originStateRootHash=0x... deriveStateRootHash=0x...) to include a language tag such as text (i.e.,
change totext) so the markdown linter passes and the docs build cleanly.


</details>

<!-- fingerprinting:phantom:triton:quartz -->

<!-- cr-comment:v1:19a1f728dc4cf36e4152ad1b -->

_Source: Linters/SAST tools_

<!-- This is an auto-generated comment by CodeRabbit -->

Mainnet/Hoodi have been on MPT for a long time; the migration guide is no
longer needed. Remove the page, its sidebar entry, and the inbound links
from the full-node page (tip) and prune-state (caution).
@curryxbo curryxbo changed the title docs(node-operation): single node type + DERIVATION_VERIFY_MODE (#988) docs(node-operation): single node type, verify-mode, drop deprecated zkTrie migration (#988) Jun 15, 2026
corey added 2 commits June 15, 2026 15:09
New Upgrade Node page for operators with an already-running node:
in-place upgrade steps, env vars now required for all nodes,
DERIVATION_VERIFY_MODE (local default / layer1 = former validator),
and a caution to upgrade before the consensus switch height.
… is new

Confirmed against morph node/derivation/config.go: BeaconRpc is the only
required field (errors if empty); rollup/deposit/heights use per-network
defaults. So upgrading the binary is enough; former validators just add
DERIVATION_VERIFY_MODE=layer1.
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.

docs(morph-doc): adapt node operation guide for centralized sequencer

1 participant