Skip to content

docs: document bridge node pruning and archival mode - #2402

Open
jcstein wants to merge 174 commits into
mainfrom
docs/bridge-node-pruning-updates
Open

docs: document bridge node pruning and archival mode#2402
jcstein wants to merge 174 commits into
mainfrom
docs/bridge-node-pruning-updates

Conversation

@jcstein

@jcstein jcstein commented Feb 5, 2026

Copy link
Copy Markdown
Member

Overview

Documents the bridge-node pruning and routing changes introduced by:

These changes have shipped across Arabica, Mocha, and Mainnet Beta. This refresh
rebases the original draft onto current main and describes the current
celestia-node behavior without release placeholders.

Changes

  • Document pruned mode as the bridge-node default.
  • Document --archival as a start-time option that must be supplied on every
    start.
  • Warn that a store which has already pruned data cannot switch back to
    archival mode.
  • Explain the automatic consensus/P2P routing behavior.
  • Add the current [Header.Syncer] configuration fields and default
    PruningWindow.
  • Clarify that bridge nodes can use non-archival consensus endpoints and
    retrieve older headers and data from P2P.
  • Document the archival hardware requirement separately from the consensus
    endpoint requirement.
  • Run the local-devnet bridge example in archival mode.

Validation

  • yarn lint (passes with one pre-existing warning in
    app/build/rpc/components/NodeAPIContent.tsx)
  • yarn build
  • Generated Markdown checked for the updated bridge, config, and network
    guidance
  • Current behavior verified against celestia-node v0.31.4 source and release
    notes
  • GitHub Actions: CodeQL, ESLint, link check, and preview deployment

Add comprehensive documentation updates for upcoming bridge node changes:
- Document new default pruning mode for bridge nodes (PR #4768)
- Add --archival flag documentation for full historical data retention
- Include routing exchange optimization notes (PR #4758)
- Update hardware requirements to clarify pruned vs archival modes
- Add migration guide for existing bridge node operators
- Update custom networks docs with genesis hash requirements
- Add breaking change warnings across all relevant pages

Note: Version placeholders (TODO) added pending release of PR #4768

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @jcstein, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request updates the Celestia documentation to reflect significant changes in bridge node behavior, primarily the shift to default pruning mode and the introduction of an explicit archival mode. It provides crucial information for operators on how to manage their nodes, including a migration guide and specific considerations for private networks. The updates aim to clarify the new operational paradigms and ensure users can configure their bridge nodes appropriately for their specific needs, whether for reduced storage or full historical data access.

Highlights

  • Default Pruning for Bridge Nodes: Bridge nodes will now default to pruning mode, significantly reducing storage requirements by only storing recent blocks within the availability window. This is a breaking change for existing operators.
  • New Archival Mode and Flag: A new --archival flag has been introduced for bridge nodes that need to store all historical data from genesis. This mode is necessary for applications requiring full historical access or for serving data outside the availability window.
  • Migration Guide for Existing Operators: Comprehensive instructions are provided for existing bridge node operators to either adapt to the new default pruning mode or migrate to archival mode using the --archival flag.
  • Private Network Genesis Hash Requirements: Documentation clarifies that bridge nodes on private networks, when running in pruned mode, must explicitly provide a genesis hash configuration or use the --archival flag to start successfully.
  • Routing Exchange Optimization: The documentation includes details on an automatic routing exchange optimization for bridge nodes, which enhances header synchronization without requiring any configuration.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • app/operate/data-availability/bridge-node/page.mdx
    • Added a prominent warning callout about bridge nodes defaulting to pruning mode and the requirement for the --archival flag.
    • Introduced new sections detailing 'Pruning vs archival modes' and 'Choosing between modes', explaining their functionalities and use cases.
    • Included an informational callout about the 'Routing Exchange Optimization' for header synchronization.
    • Updated celestia bridge init and celestia bridge start command examples to include both default (pruned) and --archival options across different networks.
    • Added a new 'Migration guide for existing bridge nodes' section, providing step-by-step instructions for adapting to the pruning changes, including specific advice for private networks.
  • app/operate/data-availability/config-reference/page.mdx
    • Added a new subsection 'Pruning Configuration (Bridge Nodes)' detailing PruningWindow, SyncFromHeight, SyncFromHash, and the --archival flag.
    • Provided example TOML configuration for pruned bridge nodes and bash commands for archival bridge nodes.
  • app/operate/data-availability/custom-networks/page.mdx
    • Added an important note for bridge nodes on private networks, emphasizing the need for --archival or genesis hash configuration.
    • Updated the celestia <node-type> start command examples to differentiate between pruned (default) and archival bridge nodes.
    • Introduced a new 'Bridge node specific configuration' section outlining three options for private network operators: archival mode, genesis hash configuration, or syncing from a specific height/hash.
  • app/operate/getting-started/hardware-requirements/page.mdx
    • Renamed 'Non-archival data availability nodes' to 'Non-archival data availability nodes (pruned)'.
    • Added a note indicating that bridge nodes now default to pruning mode and that the listed specifications are for pruned nodes.
    • Updated the 'Bridge node' entry in the archival table to 'Bridge node (--archival flag)'.
    • Added an important note clarifying that the --archival flag is required to run an archival bridge node.
  • app/operate/networks/arabica-devnet/page.mdx
    • Added a note to the 'Running Bridge Nodes' bullet point, indicating that bridge nodes will default to pruning mode in an upcoming release.
  • app/operate/networks/local-devnet/page.mdx
    • Added a note above the docker-compose.yml example explaining that the bridge node uses --archival mode to simplify private network setup.
    • Added the --archival flag to the celestia-bridge service in the docker-compose.yml example.
  • app/operate/networks/mainnet-beta/page.mdx
    • Added a note to the 'Running Bridge Nodes' bullet point, indicating the upcoming default pruning mode and the use of --archival for full history.
    • Introduced a warning callout in the 'Bridge node requirements' section about the default pruning change.
    • Expanded the 'Bridge node requirements' section to clearly distinguish between requirements for archival bridge nodes (using --archival) and pruned bridge nodes (default).
  • app/operate/networks/mocha-testnet/page.mdx
    • Added a note to the 'Bridge node' bullet point, indicating that bridge nodes will default to pruning mode in an upcoming release.
Activity
  • The pull request is currently a Work In Progress (WIP), as indicated by the title and description.
  • There are several placeholder [TODO: Add version from PR #4768] entries that need to be updated once the relevant celestia-node release version is known.
  • The author has provided a detailed 'TODO Before Merging' list, outlining remaining tasks such as confirming release versions, replacing placeholders, updating PR references, testing command examples, and verifying genesis hash behavior.
  • The pull request includes a review checklist, with most items marked as complete, but version number addition is pending the release.
  • The author has requested a review from @vgonkivs once the version is finalized.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request provides comprehensive and much-needed documentation for the recent changes to bridge node pruning. The explanations of pruned vs. archival modes, the new --archival flag, and the migration guide are clear and well-structured. The changes are consistently applied across all relevant documentation files, which will be very helpful for users.

I've left a few minor suggestions to improve clarity and consistency in the configuration reference and custom networks documentation. Overall, this is an excellent documentation update.

Comment thread app/operate/data-availability/config-reference/page.mdx Outdated
Comment thread app/operate/data-availability/config-reference/page.mdx Outdated
Comment thread app/operate/data-availability/custom-networks/page.mdx Outdated
@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Your preview is ready: https://celestiaorg.github.io/docs-preview/pr-2402/

Comment thread app/operate/data-availability/custom-networks/page.mdx Outdated
jcstein and others added 7 commits February 6, 2026 11:23
* Initial plan

* fix: replace broken external link in data availability docs

Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>
* Initial plan

* Remove dead BlackBlocks links from snapshots documentation

Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>
* feat: add LLM-ready markdown export feature

Implements automatic generation of clean markdown files from MDX sources,
making the docs easily consumable by LLMs and other tools.

Users can now append .md to any documentation URL to get a clean markdown version.

Changes:
- Enhanced generate-llms.js to create individual .md files for each .mdx page
- Integrated markdown generation into the build process via postbuild hook
- Added cleanMdxContent function to strip JSX, imports, and MDX-specific syntax
- Smart output directory selection (out/ for builds, public/ for dev)
- Updated README with feature documentation

Example usage:
https://docs.celestia.org/learn/TIA/overview.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: properly replace variables in markdown export for LLMs

- Add variable resolution from constants JSON files
- Handle both single-brace and double-brace variable formats
- Support bracket and dot notation for object properties
- Fix regex for page.md replacement to avoid edge cases
- Remove frontmatter from exported markdown (not standard markdown)
- Eliminate duplicate outputBase determination logic

Variables like {arabicaVersions['node-latest-tag']} and {{constants['arabicaChainId']}}
are now properly replaced with their actual values in the exported .md files

---------

Co-authored-by: Claude <noreply@anthropic.com>
- Add copyable code block with essential documentation access info
- Organize LLM support section with subsections for clarity
- Make it easy for developers to share access info with their agents
- Fixed confusing description that incorrectly implied 0 was default for non-archival nodes
- Clarified that 0 disables pruning (archival mode)
- Added note about typical default window for non-archival nodes
- Required if you need to serve data to light nodes for blocks outside the availability window

<Callout type="info">
**Routing Exchange Optimization**: Bridge nodes automatically optimize header synchronization using a routing exchange mechanism. Requests within the data availability window are routed to the core exchange for complete blocks, while requests outside the window are routed to the P2P exchange for headers only. This optimization happens automatically without any configuration needed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

before merging, review if this is necessary

jcstein and others added 17 commits February 6, 2026 16:15
- Removed premature migration instructions for unreleased feature
- Will add proper guidance once PR #4768 is released with version info
- Avoids confusion with untested migration steps
- Added tabs component to show pruned (default) vs archival mode options
- Cleaner presentation that reduces repetition in documentation
- Makes it clear which mode is the default behavior
* docs: update AWS KMS guide for op-alt-da v0.12.0

- Update guide to use v0.12.0+ which changes KMS configuration
- Remove cel-key workflow (no longer needed for key import)
- Remove deprecated config fields: alias_prefix, auto_create, import_key_name, import_key_hex
- Add new workflow: create KMS key directly via AWS CLI
- Update default_key_name to use full alias path format
- Use "POST and get error" approach to discover Celestia address
- Fix curl commands to suppress binary output warnings (-s -o /dev/null)
- Add IAM policy and production setup instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: suggestions from review

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* docs: remove BNs from DFP

* docs: make explicit on running both testnet and mainnet
…#2418)

* docs: add Hibiscus (v7) upgrade and move Matcha (v6) to past upgrades

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add Arabica v7 upgrade timestamp

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Initial plan

* Add ONLY_FAIL_ON_404_PATTERNS to handle nodestake URL

- Created new ONLY_FAIL_ON_404_PATTERNS array for URLs that should only fail on 404s
- Added explorer.nodestake.top/celestia to this pattern list
- Modified checkExternalLink to accept and handle onlyFailOn404Patterns parameter
- URLs matching these patterns will be treated as valid (skipped) unless they return a 404 status code
- Other errors like timeouts, connection failures, etc. are now ignored for these URLs

Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>

* Optimize pattern matching with Array.some()

Applied code review feedback to use Array.some() for more efficient pattern matching instead of a for loop with break statement.

Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>
* docs: add Mocha v7 activation height

* docs: normalize Hibiscus upgrade table formatting

* fix: lint

* docs: set Mocha v7 activation timestamp
Copilot AI and others added 25 commits June 23, 2026 23:50
[GH Action] Update release tags and commit SHAs for arabica
Stabilize link-check by treating Etherscan address pages as 404-only failures
…-endpoints-job

Fix endpoint-check workflow output delimiter parsing
[GH Action] Update release tags and commit SHAs for arabica
[GH Action] Update release tags and commit SHAs for mocha
[GH Action] Update release tags and commit SHAs for mainnet
…_and_yarn-0213aa4daa

chore(deps): bump dompurify from 3.4.3 to 3.4.10 in the npm_and_yarn group across 1 directory
…dates

Bumps the npm_and_yarn group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [axios](https://github.com/axios/axios) | `1.16.0` | `1.18.0` |
| [next](https://github.com/vercel/next.js) | `16.2.6` | `16.2.11` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.28.5` | `7.29.7` |
| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.10` | `3.4.12` |
| [form-data](https://github.com/form-data/form-data) | `4.0.5` | `4.0.6` |
| [js-yaml](https://github.com/nodeca/js-yaml) | `4.1.1` | `4.3.0` |



Updates `axios` from 1.16.0 to 1.18.0
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.16.0...v1.18.0)

Updates `next` from 16.2.6 to 16.2.11
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](vercel/next.js@v16.2.6...v16.2.11)

Updates `@babel/core` from 7.28.5 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)

Updates `dompurify` from 3.4.10 to 3.4.12
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.4.10...3.4.12)

Updates `form-data` from 4.0.5 to 4.0.6
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.5...v4.0.6)

Updates `js-yaml` from 4.1.1 to 4.3.0
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.1...4.3.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.18.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: next
  dependency-version: 16.2.11
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: "@babel/core"
  dependency-version: 7.29.7
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: dompurify
  dependency-version: 3.4.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: form-data
  dependency-version: 4.0.6
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: js-yaml
  dependency-version: 4.3.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
The _page._mdx file was renamed away from page.mdx during the Operate
migration and never rendered. Drop it, stop treating it as a route in
the link checker, and point the leftover /operate link at the IBC
relayer docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
…an-page

Remove unused Operate section stub page
…_and_yarn-e2394bf4d9

chore(deps): bump the npm_and_yarn group across 1 directory with 6 updates
@jcstein jcstein changed the title docs: add documentation for bridge node pruning changes (WIP) docs: document bridge node pruning and archival mode Jul 30, 2026
@jcstein
jcstein marked this pull request as ready for review July 30, 2026 17:43
@jcstein
jcstein requested a review from gbarros July 30, 2026 19:45
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.

6 participants