Skip to content

docs: forward-port main's versioning (v3.4 archive + label) + archive-link recurrence guard - #22420

Merged
AskAlexSharov merged 3 commits into
mainfrom
docs/main-forwardport-v34-archive
Jul 20, 2026
Merged

docs: forward-port main's versioning (v3.4 archive + label) + archive-link recurrence guard#22420
AskAlexSharov merged 3 commits into
mainfrom
docs/main-forwardport-v34-archive

Conversation

@bloxster

@bloxster bloxster commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

What

main's Docusaurus versioning was two transitions stale: current label 'v3.4' and versions.json = ["v3.3"] (only the v3.3 archive). Because release branches are cut from main, a future release/3.6 cut would inherit this wrong shelf — the site would come back labelled "v3.4 current" and missing the v3.4 archive. This brings main to parity with release/3.5's archive set (addresses section A of #22416):

  • add the frozen v3.4 archive (versioned_docs/version-v3.4/ + versioned_sidebars/version-v3.4-sidebars.json), copied verbatim from release/3.5
  • add "v3.4" to versions.json (newest-first → ["v3.4","v3.3"])
  • set the current-version label 'v3.4''v3.6'
  • fix all intra-archive links in versioned_docs/version-v3.4/: cross-page absolute links are now /v3.4/-prefixed and same-page anchors are local #… (matching the v3.3 archive pattern), keeping navigation within the v3.4 snapshot (76 links across 13 files)

main isn't deployed today (the live site builds from release/3.5), so this is inert until a release/3.6 cut — but it makes that cut inherit a correct shelf.

Deliberately NOT included: a v3.5 archive

v3.5 is the current stable — it lives as release/3.5's current, not an archive. It must be frozen from the real release/3.5 tip at the 3.6 transition; pre-copying it onto main now would go stale as release/3.5 keeps taking backported doc fixes. That at-cut step is tracked in #22416 (section B).

Decision needed: 'v3.6' vs 'Next'

I used label: 'v3.6' — it matches the repo convention (each branch labels its series) and means a release/3.6 cut inherits the correct label with zero edits. Trade-off: it re-stales the moment release/3.6 is cut (main becomes 3.7-dev while still labelled 'v3.6') — the exact failure mode this PR fixes. The alternative, 'Next', never goes stale and is idiomatic for an unreleased current version, at the cost of one relabel at cut. Happy to switch to 'Next' if preferred; otherwise "bump main's label" should join the at-cut checklist in #22416.

Verification

  • docs/site Docusaurus build green (onBrokenLinks/onBrokenAnchors/onBrokenMarkdownLinks all 'throw') — the v3.4 archive builds cleanly against main's current docs.
  • generate-llms.py --check passes, unchanged (74 pages — the generator ignores versioned_docs/).
  • The v3.4 archive's static-asset references (/img/{eth,gno,pol,shutter}.svg) all exist on main (no silent 404).
  • The generic versions.json-driven config wires {ERIGON_VERSION} for v3.4 with no per-version edit (same mechanism as release/3.5).
  • docs/site/scripts/test_archive_links.py guard added: fails CI (via the existing unittest discover step) if any archived version contains an unversioned absolute intra-docs link, preventing recurrence. 62 unittests pass.

Refs #22416.

… label)

main's Docusaurus versioning was two transitions stale (current label
'v3.4', versions.json ["v3.3"]), so a release/3.6 cut from main would
inherit a wrong version shelf ("v3.4 current", missing the v3.4 archive).
Bring main to parity with release/3.5's archive set:

- add the frozen v3.4 archive (versioned_docs/version-v3.4/ + its
  versioned_sidebars entry), copied verbatim from release/3.5
- add "v3.4" to versions.json (newest-first)
- set the current-version label 'v3.4' -> 'v3.6' (main is the 3.6-dev line)

Deliberately does NOT add a v3.5 archive: v3.5 must be frozen from the
real release/3.5 tip at the 3.6 transition; pre-copying it onto main now
would go stale under backports. See #22416 (section B) for the at-cut step.

Verified: docs/site build green (onBrokenLinks/onBrokenAnchors 'throw');
generate-llms.py --check passes (74 pages, unchanged); v3.4 archive is
byte-for-byte identical to release/3.5 and its static-asset references all
exist on main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI 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.

Pull request overview

Updates main’s Docusaurus versioning state to match the expected shelf for the next release cut by adding the missing v3.4 archive and bumping the “current” label.

Changes:

  • Adds v3.4 to docs/site/versions.json and introduces the v3.4 archived sidebar.
  • Adds a large set of versioned_docs/version-v3.4/** pages to populate the v3.4 archive.
  • Updates docs/site/docusaurus.config.ts current-version label from v3.4 to v3.6.

Reviewed changes

Copilot reviewed 78 out of 78 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
docs/site/versions.json Adds v3.4 to the archived version list.
docs/site/versioned_sidebars/version-v3.4-sidebars.json Adds sidebar definition for the v3.4 archived docs.
docs/site/versioned_docs/version-v3.4/index.mdx Adds v3.4 archive landing page.
docs/site/versioned_docs/version-v3.4/staking/category.json Adds v3.4 staking category metadata.
docs/site/versioned_docs/version-v3.4/staking/index.mdx Adds v3.4 staking landing page.
docs/site/versioned_docs/version-v3.4/staking/caplin.md Adds v3.4 staking doc (Caplin).
docs/site/versioned_docs/version-v3.4/staking/external-consensus-client-as-validator.md Adds v3.4 staking doc (external CL).
docs/site/versioned_docs/version-v3.4/staking/shutter-network.mdx Adds v3.4 staking doc (Shutter Network).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/category.json Adds v3.4 RPC reference category metadata.
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/index.md Adds v3.4 RPC reference landing page.
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/admin.md Adds v3.4 RPC reference page (admin).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/bor.md Adds v3.4 RPC reference page (bor).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/engine.md Adds v3.4 RPC reference page (engine).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/erigon.md Adds v3.4 RPC reference page (erigon).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/eth.md Adds v3.4 RPC reference page (eth).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/graphql.md Adds v3.4 RPC reference page (graphql).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/grpc.md Adds v3.4 RPC reference page (gRPC).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/internal.md Adds v3.4 RPC reference page (internal).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/net.md Adds v3.4 RPC reference page (net).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/ots.md Adds v3.4 RPC reference page (ots).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/overlay.md Adds v3.4 RPC reference page (overlay).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/parity.md Adds v3.4 RPC reference page (parity).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/txpool.md Adds v3.4 RPC reference page (txpool).
docs/site/versioned_docs/version-v3.4/interacting-with-erigon/web3.md Adds v3.4 RPC reference page (web3).
docs/site/versioned_docs/version-v3.4/get-started/category.json Adds v3.4 “Get Started” category metadata.
docs/site/versioned_docs/version-v3.4/get-started/index.mdx Adds v3.4 “Get Started” landing page.
docs/site/versioned_docs/version-v3.4/get-started/hardware-requirements.mdx Adds v3.4 hardware requirements page.
docs/site/versioned_docs/version-v3.4/get-started/migrating-from-geth.mdx Adds v3.4 migration guide.
docs/site/versioned_docs/version-v3.4/get-started/installation/category.json Adds v3.4 installation category metadata.
docs/site/versioned_docs/version-v3.4/get-started/installation/upgrading.md Adds v3.4 upgrade guide.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/category.json Adds v3.4 easy-nodes category metadata.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/index.mdx Adds v3.4 easy-nodes landing page.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-an-ethereum-node/category.json Adds v3.4 Ethereum easy-node category metadata.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-an-ethereum-node/index.md Adds v3.4 Ethereum easy-node guide.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-an-ethereum-node/ethereum-with-an-external-cl.mdx Adds v3.4 Ethereum + external CL guide.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-a-gnosis-chain-node/category.json Adds v3.4 Gnosis easy-node category metadata.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-a-gnosis-chain-node/index.md Adds v3.4 Gnosis easy-node guide.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-a-gnosis-chain-node/gnosis-with-an-external-cl.md Adds v3.4 Gnosis + external CL guide.
docs/site/versioned_docs/version-v3.4/get-started/easy-nodes/how-to-run-a-polygon-node.md Adds v3.4 Polygon easy-node guide.
docs/site/versioned_docs/version-v3.4/fundamentals/category.json Adds v3.4 fundamentals category metadata.
docs/site/versioned_docs/version-v3.4/fundamentals/index.mdx Adds v3.4 fundamentals landing page.
docs/site/versioned_docs/version-v3.4/fundamentals/basic-usage.mdx Adds v3.4 basic usage guide.
docs/site/versioned_docs/version-v3.4/fundamentals/caplin.md Adds v3.4 Caplin guide.
docs/site/versioned_docs/version-v3.4/fundamentals/configuring-erigon/category.json Adds v3.4 CLI-reference category metadata.
docs/site/versioned_docs/version-v3.4/fundamentals/configuring-erigon/nat.md Adds v3.4 NAT configuration guide.
docs/site/versioned_docs/version-v3.4/fundamentals/creating-a-dashboard.md Adds v3.4 monitoring/dashboard guide.
docs/site/versioned_docs/version-v3.4/fundamentals/default-ports.md Adds v3.4 default ports reference.
docs/site/versioned_docs/version-v3.4/fundamentals/docker-compose.md Adds v3.4 Docker Compose guide.
docs/site/versioned_docs/version-v3.4/fundamentals/jwt.md Adds v3.4 JWT secret guide.
docs/site/versioned_docs/version-v3.4/fundamentals/layer-2-networks.md Adds v3.4 L2 networks guide.
docs/site/versioned_docs/version-v3.4/fundamentals/logs.md Adds v3.4 logging guide.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/category.json Adds v3.4 modules category metadata.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/index.mdx Adds v3.4 modules landing page.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/downloader.mdx Adds v3.4 downloader module guide.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/rpc-daemon.md Adds v3.4 RPC daemon module guide.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/sentry.mdx Adds v3.4 sentry module guide.
docs/site/versioned_docs/version-v3.4/fundamentals/modules/txpool.md Adds v3.4 txpool module guide.
docs/site/versioned_docs/version-v3.4/fundamentals/multiple-instances.md Adds v3.4 multi-instance guide.
docs/site/versioned_docs/version-v3.4/fundamentals/optimizing-storage.md Adds v3.4 storage optimization guide.
docs/site/versioned_docs/version-v3.4/fundamentals/otterscan.md Adds v3.4 Otterscan guide.
docs/site/versioned_docs/version-v3.4/fundamentals/performance-tricks.md Adds v3.4 performance tuning guide.
docs/site/versioned_docs/version-v3.4/fundamentals/prune-modes.md Adds v3.4 prune modes guide.
docs/site/versioned_docs/version-v3.4/fundamentals/security.md Adds v3.4 security guidance.
docs/site/versioned_docs/version-v3.4/fundamentals/supported-networks.md Adds v3.4 supported networks reference.
docs/site/versioned_docs/version-v3.4/fundamentals/tls-authentication.md Adds v3.4 TLS authentication guide.
docs/site/versioned_docs/version-v3.4/fundamentals/web3-wallet.md Adds v3.4 web3 wallet guide.
docs/site/versioned_docs/version-v3.4/about/category.json Adds v3.4 about category metadata.
docs/site/versioned_docs/version-v3.4/about/index.mdx Adds v3.4 about landing page.
docs/site/versioned_docs/version-v3.4/about/contributing.md Adds v3.4 contributing page.
docs/site/versioned_docs/version-v3.4/about/disclaimer.md Adds v3.4 disclaimer page.
docs/site/versioned_docs/version-v3.4/about/license.md Adds v3.4 license page.
docs/site/docusaurus.config.ts Bumps current-version label to v3.6.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/site/versioned_docs/version-v3.4/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/get-started/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/fundamentals/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/fundamentals/modules/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/about/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/interacting-with-erigon/index.md Outdated
Comment thread docs/site/versioned_docs/version-v3.4/interacting-with-erigon/index.md Outdated
Comment thread docs/site/versioned_docs/version-v3.4/interacting-with-erigon/index.md Outdated
Comment thread docs/site/versioned_docs/version-v3.4/fundamentals/configuring-erigon/index.mdx Outdated
Comment thread docs/site/versioned_docs/version-v3.4/fundamentals/basic-usage.mdx Outdated
bloxster pushed a commit that referenced this pull request Jul 13, 2026
The frozen v3.4 archive used unversioned absolute links (e.g.
`/get-started/`) copied from the current docs. Inside an archive those
resolve to the *current* version, bouncing readers out of the v3.4
snapshot (flagged by Copilot on #22420; root cause #22416). The v3.3
archive was already self-contained; v3.4 was not.

Fix (76 links / 13 files): cross-page absolute links -> `/v3.4/`-prefixed,
same-page anchors -> local `#frag`. Left `/`, `/help-center/…`, `/img/…`,
external and already-`/vX.Y/` links untouched.

Prevention (docs/site/scripts/):
- fix-archive-links.py — reusable fixer + `--check`; per version it prefixes
  any unversioned absolute intra-docs link and localizes same-page anchors.
  Handles markdown/reference/JSX/HTML link forms, skips fenced code, and
  flags links into renamed/removed sections (the silent-leak blind spot).
  Run it after `docusaurus docs:version`.
- test_archive_links.py — guard: fails if any archived version has an
  unversioned absolute link. Auto-runs via the existing
  `unittest discover docs/site/scripts` step (no workflow change).
- test_fix_archive_links.py — unit tests for each link syntax/edge case.

Verified: build green (onBrokenLinks 'throw'); llms --check unchanged
(74 pages); 62 unittests pass; guard catches all 76 on the pre-fix archive.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…se/3.5)

Replaces the verbatim-copied v3.4 archive on this branch with the
self-contained version (unversioned absolute links -> /v3.4/-prefixed;
same-page anchors -> local), and adds the archive-link fixer + CI guard,
identical to the release/3.5 companion (#22426). Addresses the Copilot
review on this PR and closes the recurrence path (#22416).

Verified on main: build green; llms --check unchanged (74 pages); 62
unittests pass; guard reports the archives self-contained.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bloxster

Copy link
Copy Markdown
Collaborator Author

@copilot all 11 flagged v3.4 archive links are fixed in 9c45d44: cross-page absolute links are now /v3.4/-prefixed and same-page anchors are local #… (matching the v3.3 archive), so navigation stays within the v3.4 snapshot. 76 links across 13 files.

To prevent recurrence I also added docs/site/scripts/fix-archive-links.py (reusable fixer) + test_archive_links.py (a guard that fails CI via the existing unittest discover step if any archived version has an unversioned absolute intra-docs link). The same fix + guard land on release/3.5 in #22426. Build green, 62 unittests pass.

Copilot AI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot all 11 flagged v3.4 archive links are fixed in 9c45d44: cross-page absolute links are now /v3.4/-prefixed and same-page anchors are local #… (matching the v3.3 archive), so navigatio...

Verified — all remaining open threads are resolved in 9c45d44. Both the namespace links in interacting-with-erigon/index.md (lines 11–23) and the Docker tab link in fundamentals/basic-usage.mdx (line 23) now use the /v3.4/-prefixed routes, keeping navigation within the archived version.

@bloxster bloxster changed the title docs: forward-port main's versioning (v3.4 archive + current label) docs: forward-port main's versioning (v3.4 archive + label) + archive-link recurrence guard Jul 13, 2026
…/3.5)

Same script fixes as #22426: preserve full fence length in code-block
detection (4+ backtick fences), and use context managers + UTF-8 in the
test helper (+ 4-backtick regression test). Keeps main's scripts identical
to release/3.5. 63 unittests pass; ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bloxster
bloxster marked this pull request as ready for review July 13, 2026 09:22
@AskAlexSharov
AskAlexSharov added this pull request to the merge queue Jul 20, 2026
Merged via the queue into main with commit 78bd8e1 Jul 20, 2026
38 of 40 checks passed
@AskAlexSharov
AskAlexSharov deleted the docs/main-forwardport-v34-archive branch July 20, 2026 04:28
github-merge-queue Bot pushed a commit that referenced this pull request Jul 20, 2026
#22426)

## What

The frozen **v3.4 archive** used unversioned absolute links (e.g.
`/get-started/`) that were copied from the current docs. Inside an
archived version those resolve to the **current** version, so a reader
browsing the v3.4 docs is silently bounced into v3.5/v3.6. GitHub
Copilot flagged this on #22420; the root cause is tracked in #22416. The
v3.3 archive was already self-contained — v3.4 was the outlier (#22062
only fixed the links that broke the build).

**Fix (76 links / 13 files):** cross-page absolute links →
`/v3.4/`-prefixed (matching v3.3); same-page anchors → local `#frag`.
Left `/` (home), `/help-center/…` (separate unversioned instance),
`/img/…`, external, and already-`/vX.Y/` links untouched.

## Prevention (so future version cuts can't reintroduce this)

Three files under `docs/site/scripts/`:

- **`fix-archive-links.py`** — reusable fixer + `--check`. Per archived
version it prefixes any unversioned absolute intra-docs link and
localizes same-page anchors. Handles markdown inline/reference, JSX
`<Link>`, and HTML `<a href>` forms; skips fenced code; and flags links
into **renamed/removed** sections (the silent-leak case `onBrokenLinks`
can miss). Run it right after `docusaurus docs:version vX.Y`.
- **`test_archive_links.py`** — the guard: fails if any
`versioned_docs/version-*/` page has an unversioned absolute intra-docs
link. It **auto-runs in CI** via the existing `python3 -m unittest
discover docs/site/scripts` step in `docs-site-build.yml` (PR) and
`docs-deploy.yml` (push) — **no workflow change**, and it runs before
the npm build so neither path can bypass it.
- **`test_fix_archive_links.py`** — unit tests for each link syntax and
edge case.

## Verification

- `docs/site` build **green**
(`onBrokenLinks`/`onBrokenAnchors`/`onBrokenMarkdownLinks` all
`'throw'`).
- `generate-llms.py --check` unchanged (74 pages — generator ignores
`versioned_docs/`).
- **62 unittests pass**; the guard catches all **76** links on the
pre-fix archive (has teeth); fixer is idempotent and reproducible.
- v3.3 archive already passes the guard.

## Review

Adversarially reviewed by ChatGPT 5.5 + Fable (both
APPROVE-WITH-CHANGES). All findings folded in: broadened link-form
coverage, catch-all detection (fixes the renamed-section blind spot),
fenced-code skipping, `to=` word boundary (won't match
`photo=`/`auto=`), root-`index` `/#frag` localization, and `argparse`.

Companion: #22420 carries the same corrected v3.4 archive + these
scripts to `main`. Refs #22416, #22420.

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

---------

Co-authored-by: Bloxster <gianni.morselli@erigon.tech>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants