Skip to content

docs: Update IS-IS page to VyOS 1.5 standards#2102

Draft
LiudmylaNad wants to merge 2 commits into
vyos:rollingfrom
LiudmylaNad:revise-is-is
Draft

docs: Update IS-IS page to VyOS 1.5 standards#2102
LiudmylaNad wants to merge 2 commits into
vyos:rollingfrom
LiudmylaNad:revise-is-is

Conversation

@LiudmylaNad

Copy link
Copy Markdown
Contributor

Change Summary

This PR refactors the IS-IS page to comply with the current VyOS documentation style guide.

Changes:

  • AI & SEO Context: Added :description: and :keywords: metadata tags.
  • Content: Proofread and improved.
  • Technical accuracy: Verified commands against VyOS 1.5.
  • Added examples for all commands.

Added new conf-mode commands:

set protocols isis advertise-high-metrics
set protocols isis advertise-passive-only
set protocols isis log-adjacency-changes
set protocols isis topology <ipv4-multicast | ipv4-mgmt | ipv6-unicast | ipv6-multicast | ipv6-mgmt | ipv6-dstsrc>
set protocols isis area-password plaintext-password
set protocols isis area-password md5
set protocols isis domain-password plaintext-password
set protocols isis domain-password md5
set protocols isis default-information originate ipv4 level-1 always
set protocols isis default-information originate ipv4 level-1 metric <0-16777215>
set protocols isis default-information originate ipv4 level-1 route-map
set protocols isis default-information originate ipv6 level-1 always
set protocols isis default-information originate ipv6 level-1 metric <0-16777215>
set protocols isis default-information originate ipv6 level-1 route-map
set protocols isis default-information originate ipv4 level-2 always
set protocols isis default-information originate ipv4 level-2 metric <0-16777215>
set protocols isis default-information originate ipv4 level-2 route-map
set protocols isis default-information originate ipv6 level-2 always
set protocols isis default-information originate ipv6 level-2 metric <0-16777215>
set protocols isis default-information originate ipv6 level-2 route-map
set protocols isis interface password md5
set protocols isis interface bfd profile
set protocols isis redistribute ipv4 <babel | nhrp> level-1
set protocols isis redistribute ipv4 <babel | nhrp> level-1 metric <0-16777215>
set protocols isis redistribute ipv4 <babel | nhrp> level-1 route-map
set protocols isis redistribute ipv4 <babel | nhrp> level-2
set protocols isis redistribute ipv4 <babel | nhrp> level-2 metric <0-16777215>
set protocols isis redistribute ipv4 <babel | nhrp> level-2 route-map
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-1
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-1 metric <0-16777215>
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-1 route-map
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-2
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-2 metric <0-16777215>
set protocols isis redistribute ipv6 <bgp | connected | kernel | ospf6 | ripng | babel | static> level-2 route-map

Added value range for:

set protocols isis lsp-mtu <128-4352>
set protocols isis lsp-gen-interval <1-120>
set protocols isis spf-interval <1-120>
set protocols isis max-lsp-lifetime <350-65535>
set protocols isis spf-delay-ietf holddown <0-60000>
set protocols isis spf-delay-ietf init-delay <0-60000>
set protocols isis interface hello-interval <1-600>
set protocols isis interface hello-multiplier <2-100>
set protocols isis interface metric <0-16777215>
set protocols isis interface priority <0-127>
set protocols isis interface psnp-interval <0-127>
set protocols isis interface fast-reroute remote-lfa level-1 maximum-metric <1-16777215>
set protocols isis interface fast-reroute remote-lfa level-2 maximum-metric <1-16777215>
set protocols isis fast-reroute lfa local tiebreaker <downstream | lowest-backup-metric | node-protecting> index <1-255> level-1
set protocols isis fast-reroute lfa local tiebreaker <downstream | lowest-backup-metric | node-protecting> index <1-255> level-2

Related Task(s)

VD-3731

Related PR(s)

Backport

Checklist:

  • I have read the CONTRIBUTING document
  • The style guide checklist was applied.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 54616e4e-d0aa-4e36-8ae4-0f3728ecbc36

📥 Commits

Reviewing files that changed from the base of the PR and between 95d1708 and 3433ca5.

📒 Files selected for processing (1)
  • docs/configuration/protocols/isis.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • ansible/ansible (manual)
💤 Files with no reviewable changes (1)
  • docs/configuration/protocols/isis.md
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: validate
  • GitHub Check: Mergify Merge Protections
  • GitHub Check: Summary
🧰 Additional context used
🔍 Remote MCP Context7

Additional relevant facts for reviewing PR #2102

  • Repository and page location: VyOS documentation repo (/vyos/vyos-documentation), file docs/configuration/protocols/isis.md on branch rolling.,

  • Format and directive requirements:

    • Docs are written in MyST Markdown and use Sphinx; configuration blocks must use VyOS-specific fenced directives (cfgcmd for config, opcmd for operational).
  • Branch/version guidance:

    • Branch "rolling" tracks the rolling release; "circinus" tracks 1.5.x. Cite version-appropriate docs when validating CLI syntax.
  • CLI validation rules (important for verifying new commands):

    • VyOS CLI commands must be present in the docs; do not assume FRR options are valid VyOS CLI if not documented. Commit runs validation; invalid commands will fail to commit.
  • Example IP address policy:

    • Documentation must use reserved documentation address space (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32). The PR uses 198.51.100.x as noted — this matches policy.
  • Existing documented IS-IS commands and examples (confirm presence/syntax to cross-check PR):

    • Examples exist in repo showing IS-IS + SRv6 config and commands such as:
      • set protocols isis net '49.0001.1921.6825.5255.00'
      • set protocols isis interface
      • set protocols isis segment-routing srv6 locator
      • set protocols isis log-adjacency-changes
      • set protocols isis metric-style 'wide'
      • set protocols isis net and segment-routing prefix/index and maximum-label-depth
    • Segment-routing and SRv6 example configurations for multiple nodes are present. Use these to validate PR example updates.
  • Feature-specific references to verify in PR:

    • advertise-high-metrics, advertise-passive-only and log-adjacency-changes are documented in the repo examples and should match CLI syntax there.
    • LSP MTU and other parameter ranges (e.g., lsp-mtu 128–4352) and metric-style (narrow/transition/wide) are referenced in docs — ensure PR's ranges match authoritative docs.
  • Process reminders for review:

    • Ensure cfgcmd/opcmd directive usage, reserved IPs in examples, and that every new command documented exists in the repository’s authoritative CLI docs (branch-appropriate).

Sources:

  • Context7 library resolver and query of /vyos/vyos-documentation (search results and file examples).,

📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Rewrote and reorganized IS-IS configuration guide into a structured, standardized format for easier navigation.
    • Added in-depth coverage: NET/interface setup, global options, authentication, IPv4/IPv6 route origination, LDP/IGP sync, detailed interface parameters, and fast-reroute.
    • Expanded Segment Routing (MPLS and SRv6) sections and refreshed configuration examples and command output illustrations.

Walkthrough

The IS-IS protocol documentation (docs/configuration/protocols/isis.md) was restructured into a MyST-formatted reference (lines 1-1831) and examples were updated with new loopback IPs and NET values; multiple example show-outputs and SR/SRv6 sections were refreshed (lines 1842-2139).

Changes

IS-IS Documentation Restructuring

Layer / File(s) Summary
Core documentation structure and reference sections
docs/configuration/protocols/isis.md (lines 1-1831)
Replaced the main page with a MyST-formatted reference covering global options, authentication, default-route origination, LDP synchronization, interface configuration, timers, fast-reroute (LFA/TI-LFA/remote-LFA), redistribution, and SRv6/SRv6 uSID.
Basic IS-IS configuration and neighbor examples
docs/configuration/protocols/isis.md (lines 1842,1855-1861,1878,1889-1897,1910-1920)
Updated the "Enable IS-IS" example Node 2 loopback, reworked show isis neighbor output, and refreshed show ip route isis outputs and related scenario text.
Redistribution and IGP-LDP synchronization examples
docs/configuration/protocols/isis.md (lines 1910-1920,1938-1957)
Updated redistribution example NET values for both nodes and reworked the IGP-LDP synchronization example with new Node 1 loopback/NET and MPLS LDP discovery/router-id lines.
Segment Routing and SRv6 examples
docs/configuration/protocols/isis.md (lines 1971-2004,2042,2053-2073,2083-2105,2117,2127,2139)
Refreshed Segment Routing (MPLS) example, Segment Routing over IPv6 example, and SRv6 uSID experimental example: updated loopbacks, NET values, label/prefix-SID parameters, locator/prefix blocks, and corresponding show ip route isis output lines.

Possibly related PRs

  • vyos/vyos-documentation#2067: Updates IS-IS Segment Routing/SRv6 documentation with MyST-style command blocks and example configuration showing updated NET and label parameters, directly overlapping Segment Routing content refresh.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly summarizes the main change: updating IS-IS documentation to VyOS 1.5 standards.
Description check ✅ Passed Description is directly related to the changeset, detailing documentation refactoring, content improvements, command additions, and value range specifications.
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
✨ Simplify code
  • Create PR with simplified code

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.

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @LiudmylaNad's task in 7m 32s —— View job


Claude Code Review – IS-IS docs update

  • Read pass1-findings.json (16 HIGH-confidence ERROR findings — all false positives, see Stats)
  • Inspect the new docs/configuration/protocols/isis.md (2148 lines)
  • Cross-reference commands & defaults with .vyos-1x/ (branch: current)
  • Post inline comments for confirmed issues
  • Post review summary

Nice rewrite — the new page is well organized, RFC citations check out, and the new commands listed in the PR description all match XML definitions in protocols_isis.xml.in and its includes. Comments below are minor consistency fixes.

Issues

# Severity File:Line Summary
1 WARNING docs/configuration/protocols/isis.md:1413 lsp-refresh-interval <seconds> is missing its <2-65235> range; XML default 900 not documented.
2 WARNING docs/configuration/protocols/isis.md:1505 spf-delay-ietf time-to-learn <milliseconds> should be <0-60000> for consistency with holddown / init-delay.
3 WARNING docs/configuration/protocols/isis.md:1524 spf-delay-ietf long-delay <milliseconds> should be <0-60000>.
4 WARNING docs/configuration/protocols/isis.md:1537 spf-delay-ietf short-delay <milliseconds> should be <0-60000>.
5 WARNING docs/configuration/protocols/isis.md:906 Per-interface ldp-sync holddown <seconds> should be <0-10000> (reuses the same <leafNode> as the protocol-wide command, which is correctly rendered with the range at line 654).
6 INFO docs/configuration/protocols/isis.md:1231–1391 redistribute section omits the level / process-level constraint that protocols_isis.py:134-149 enforces; the analogous default-information sections do call it out. Suggest adding a {note}.

All six are posted as inline comments with suggestions where applicable.

Needs Verification

None — the questionable findings from Pass 1 were all verified against the XML/conf_mode source and found to be false positives (see Stats).

Stats

  • Validated 1 MyST file (docs/configuration/protocols/isis.md).
  • Skipped 0 RST files awaiting MyST migration.
  • Cross-referenced ~60 CLI paths against .vyos-1x/interface-definitions/protocols_isis.xml.in and includes; verified value ranges, defaults, and the conf-mode constraints in .vyos-1x/src/conf_mode/protocols_isis.py.
  • Branch reviewed: rolling (vyos-1x: current).
  • Pass 1: 16 HIGH-confidence ERROR findings, all FALSE POSITIVES. Cause: the reference DB collapses multi-level <choice> paths, so it flagged paths like protocols isis redistribute ipv4 level-1 and ... fast-reroute lfa local tiebreaker index level-1 as missing. The actual XML structure inserts a node between (redistribute ipv4 <protocol> level-1, tiebreaker <downstream|lowest-backup-metric|node-protecting> index <1-255> level-1), so the documented paths are correct.
    · Branch: revise-is-is

@coderabbitai coderabbitai 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/configuration/protocols/isis.md (1)

1836-1852: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Recompute the NETs after changing the example IPs.

These examples still use the old NET encodings from the pre-refactor 192.168.255.x
addresses, so the samples no longer match the new loopback/IP values or the NET
derivation rule documented above.

✅ Suggested fixes
- set protocols isis net '49.0001.1921.6825.5255.00'
+ set protocols isis net '49.0001.1980.5110.0001.00'

- set protocols isis net '49.0001.1921.6825.5254.00'
+ set protocols isis net '49.0001.1980.5110.0002.00'

- set protocols isis net '49.0001.2030.1130.0001.00'
+ set protocols isis net '49.0001.2030.0011.3001.00'

- set protocols isis net '49.0001.1985.1100.0001.00'
+ set protocols isis net '49.0001.1980.5110.0001.00'

Also applies to: 1914-1925, 1948-1962

🤖 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/configuration/protocols/isis.md` around lines 1836 - 1852, Recompute and
replace the hard-coded ISIS NET values so they match the new loopback addresses
shown: update the set protocols isis net entries (currently
'49.0001.1921.6825.5255.00' and '49.0001.1921.6825.5254.00') to the correct NET
encodings derived from the loopback IPs 198.51.100.1/32 and 198.51.100.2/32 per
the documented NET derivation rule; ensure you update every occurrence
(including the other affected blocks around the ranges mentioned: 1914-1925 and
1948-1962) so the NETs are consistent with the new loopback values and the set
protocols isis net statements for each node.
🤖 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.

Outside diff comments:
In `@docs/configuration/protocols/isis.md`:
- Around line 1836-1852: Recompute and replace the hard-coded ISIS NET values so
they match the new loopback addresses shown: update the set protocols isis net
entries (currently '49.0001.1921.6825.5255.00' and '49.0001.1921.6825.5254.00')
to the correct NET encodings derived from the loopback IPs 198.51.100.1/32 and
198.51.100.2/32 per the documented NET derivation rule; ensure you update every
occurrence (including the other affected blocks around the ranges mentioned:
1914-1925 and 1948-1962) so the NETs are consistent with the new loopback values
and the set protocols isis net statements for each node.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 7d194e55-ea50-4781-9b9e-36d58f820522

📥 Commits

Reviewing files that changed from the base of the PR and between 623ae17 and 95d1708.

📒 Files selected for processing (1)
  • docs/configuration/protocols/isis.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • ansible/ansible (manual)
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: validate
  • GitHub Check: Mergify Merge Protections
  • GitHub Check: Summary
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{md,rst,txt}

📄 CodeRabbit inference engine (.github/instructions/doc-linter.instructions.md)

**/*.{md,rst,txt}: Use only documentation-reserved IP addresses in examples: IPv4 ranges 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 (RFC 5737) or IPv6 range 2001:db8::/32 (RFC 3849). Real public IPs require suppression markers.
RFC 1918 private addresses (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and link-local (169.254.0.0/16) are allowed without suppression markers.
Enforce a maximum line length of 80 characters per line in documentation files.
Skip line-length checks inside fenced code blocks: MyST/Markdown and ::: ::: blocks (with any info string including {eval-rst}, {cfgcmd}, etc.), and RST code-block:: directives.
Place suppression stop markers on their own line immediately before the content that needs suppression, and place start markers on their own line immediately after the content.
Always re-enable the linter after suppression—never leave the linter stopped for the rest of the file.
Suppress the smallest possible region when using suppression markers. Do not suppress content that can use documentation-reserved addresses instead.

Files:

  • docs/configuration/protocols/isis.md
**/*.md

📄 CodeRabbit inference engine (.github/instructions/doc-linter.instructions.md)

**/*.md: Use MyST comment form % stop_vyoslinter / % start_vyoslinter for suppression in Markdown (.md) files.
When using RST suppression markers inside {eval-rst} blocks in MyST files, use the RST form .. stop_vyoslinter / .. start_vyoslinter since the embedded content is parsed as RST.

Files:

  • docs/configuration/protocols/isis.md
docs/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

docs/**/*.md: Use MyST Markdown (.md) format for canonical documentation pages. The migration off RST is complete — all canonical pages are .md files.
Do not replace VyOS command directives (cfgcmd, opcmd, cmdincludemd) with plain text or bash fences. These directives must be used in MyST pages as fenced code blocks with {cfgcmd}, {opcmd}, or {cmdincludemd} as the info string, as they are tracked for command coverage.
Use ATX-style headings (#, ##, ###, etc.) in MyST Markdown pages. RST heading hierarchy with overline/underline applies only to RST contexts.
Enforce an 80-character line limit in MyST Markdown files (exception: inside fenced code blocks where <pre> preserves source verbatim). Longer lines (e.g., URLs, certificate fingerprints) require % stop_vyoslinter / % start_vyoslinter suppression markers.
In MyST Markdown files, use % stop_vyoslinter / % start_vyoslinter comment form for top-level Markdown content. Inside {eval-rst} blocks, use the RST form .. stop_vyoslinter / .. start_vyoslinter instead. Markers must always come in pairs.
Use single backticks for inline code in MyST Markdown (the canonical form). Use double backticks only inside {eval-rst} blocks and _include/*.txt snippets per RST convention.
Use American English spelling and grammar in documentation.
Write TODO markers as {todo} fenced directives (triple-backtick or ::: fenced blocks with {todo} as the info string) in MyST pages.
Configuration pages should follow this structure: 1) Theory (what it is, when to use it, RFCs), 2) Configuration (all CLI options as {cfgcmd} fenced blocks), 3) Examples (practical configurations with topology diagrams), 4) Known issues, 5) Debugging (logs, show commands, state indicators).

Files:

  • docs/configuration/protocols/isis.md
docs/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Indent documentation source with 2 spaces (not tabs). Add blank lines around headings.

Files:

  • docs/configuration/protocols/isis.md
🧠 Learnings (13)
📚 Learning: 2026-05-06T20:48:49.689Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:71-71
Timestamp: 2026-05-06T20:48:49.689Z
Learning: In vyos/vyos-documentation, the 80-character line-length rule documented under Source conventions / Formatting applies only to documentation source files located under docs/ (e.g., docs/**/*.rst and docs/**/*.md). The rule is enforced by the vyoslinter (doc-linter.py from vyos/.github) when reviewing changed files via lint-doc.yml, and only for files within docs/**. Do not suggest hard-wrapping CLAUDE.md (repo-root documentation) because GitHub renders and reflows content. For CLAUDE.md, reviews should not enforce the 80-char wrapping; apply the rule only to files matching **/docs/**/*.{rst,md}.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:48:57.970Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:91-93
Timestamp: 2026-05-06T20:48:57.970Z
Learning: The 80-character line limit applies only to documentation sources under docs/** (RST/MD). Do not enforce this limit on repo-root Markdown files like CLAUDE.md or README.md. The vyoslinter (doc-linter.py, run via lint-doc.yml from vyos/.github) lints only changed files within docs/**; root files are excluded. GitHub renders root Markdown with viewport-width reflow, so hard-wrapping these files reduces readability without tooling benefit.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:48:50.446Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:64-64
Timestamp: 2026-05-06T20:48:50.446Z
Learning: Enforce the 80-character line-length limit only for documentation source files under docs/ (docs/**/*.md and docs/**/*.rst rendered by Sphinx and linted by vyoslinter via lint-doc.yml). Do not flag line-length issues in repository-root Markdown files such as CLAUDE.md or README.md, which GitHub renders with viewport-width reflow. This applies to all files within docs/ that are part of the documentation source.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:48:54.578Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:80-84
Timestamp: 2026-05-06T20:48:54.578Z
Learning: Enforce the 80-character line-length limit only for documentation source files under docs/ (docs/**/*.rst and docs/**/*.md). Do not flag repo-root files like CLAUDE.md or README.md, since they are rendered by GitHub and not subject to this rule. The doc-linter (doc-linter.py via lint-doc.yml) only lints docs/**, so CI checks won't flag root files for line length.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:49:00.044Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:108-108
Timestamp: 2026-05-06T20:49:00.044Z
Learning: Limit the 80-character line length check and vyoslinter (doc-linter.py) enforcement to documentation source files under docs/**/*.{rst,md}. Do not apply or flag line-length issues in repo-root files like CLAUDE.md or README.md, which are rendered directly by GitHub and are not linted by lint-doc.yml. This pattern narrows checks to Sphinx source docs and prevents false positives in non-doc files.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:48:53.302Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:79-79
Timestamp: 2026-05-06T20:48:53.302Z
Learning: Limit line length to 80 characters only for documentation sources under the docs directory (docs/**/*.rst and docs/**/*.md). This is enforced by the vyoslinter doc-linter.py (from the vyos/.github repo) via lint-doc.yml on changed files under docs/**. Do not flag line-length violations in repository-root Markdown files like CLAUDE.md or README.md, as they are rendered by GitHub and reflow in the UI.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:49:10.359Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:142-142
Timestamp: 2026-05-06T20:49:10.359Z
Learning: In vyos/vyos-documentation, the 80-character line limit and vyoslinter enforcement apply only to documentation source files under docs/**/*.rst and docs/**/*.md that Sphinx renders. Repo-root files such as CLAUDE.md and README.md are outside the linter's scope (lint-doc.yml runs on docs/**) and are rendered by GitHub with automatic paragraph reflow — do not flag line-length violations in these files.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-06T20:49:15.361Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:163-163
Timestamp: 2026-05-06T20:49:15.361Z
Learning: In vyos/vyos-documentation, enforce the 80-character line-length limit (Source conventions / Formatting) only for Sphinx documentation source files under docs/**/*.rst and docs/**/*.md. The lint-doc.yml workflow runs the doc-linter (doc-linter.py) and checks only docs/** changed files. Files in the repository root (e.g., CLAUDE.md, README.md) are rendered by GitHub and are not subject to this rule; do not flag line-length violations in those files.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-08T07:01:22.978Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1878
File: docs/troubleshooting/connectivity.rst:0-0
Timestamp: 2026-05-08T07:01:22.978Z
Learning: For the VyOS documentation (MyST-based docs), MyST directive opener lines must keep the entire directive arguments on a single line. This includes MyST fenced-directive openers like ```{opcmd} ... ``` and the RST-equivalent form .. opcmd:: ... when ported/used in MyST. Because the MyST parser does not support wrapped/continued directive arguments across multiple lines, do not raise/keep review warnings suggesting line wrapping for these directive opener lines due to line-length (even if they exceed 80 characters).

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-08T07:01:22.978Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1878
File: docs/troubleshooting/connectivity.rst:0-0
Timestamp: 2026-05-08T07:01:22.978Z
Learning: In vyos/vyos-documentation, do not raise line-length (>80 chars) review findings for MyST directive opener lines (the directive “opener” that uses MyST directive syntax such as `{cfgcmd}` / `{opcmd}` fence/openers). CI does not enforce the 80-character limit for these specific opener lines, and existing documentation contains longer opener lines that pass lint.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-13T22:16:06.198Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 2021
File: docs/automation/terraform/terraformvyos.md:14-14
Timestamp: 2026-05-13T22:16:06.198Z
Learning: In the vyos/vyos-documentation repo, when a PR is a byte-for-byte documentation port of an existing file from the rolling branch to a release branch (e.g., circinus, sagitta), keep the port content identical to the production-tested rolling source. For these ports, do not raise new review findings for documentation issues that are already present in the rolling source (for example, markdownlint MD059 like non-descriptive link text such as `[link]`/`[install]`). Instead, defer those existing issues to a rolling-side cleanup PR (e.g., `#2024`) and then backport the cleanup via Mergify.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-05-13T22:43:41.056Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 2024
File: docs/automation/terraform/terraformvyos.md:0-0
Timestamp: 2026-05-13T22:43:41.056Z
Learning: In docs/**/*.md, for Markdown reference definition lines of the form `[label]: <URL>`, if the line cannot be shortened to <= 80 characters (because the URL itself is near/at the limit), suppress the vyoslinter warning by wrapping only that reference definition with a `% stop_vyoslinter` / `% start_vyoslinter` block. If the reference definition can fit within 80 characters, leave it outside any suppression block.

Applied to files:

  • docs/configuration/protocols/isis.md
📚 Learning: 2026-06-05T19:21:44.474Z
Learnt from: LiudmylaNad
Repo: vyos/vyos-documentation PR: 2066
File: docs/configuration/protocols/traffic-engineering.md:0-0
Timestamp: 2026-06-05T19:21:44.474Z
Learning: In the vyos/vyos-documentation MyST documentation pages, when writing CLI example invocations directly under a `{cfgcmd}` directive, use `none` fenced code blocks for those examples. Do not change these example blocks to `{opcmd}` or `{cfgcmd}`—`{opcmd}` is reserved for operational-mode commands, and the surrounding `{cfgcmd}` directive already documents the target command. Plain `none` blocks for these CLI examples are intentional and correct.

Applied to files:

  • docs/configuration/protocols/isis.md
🪛 LanguageTool
docs/configuration/protocols/isis.md

[style] ~1900-~1900: This sentence construction might be considered wordy, consider shortening it.
Context: ...outers, with Node 1 also redistributing a connected network that isn't running IS-IS. Node 1: ```none set interf...

(A_VERY_ORDERED_SENTENCE)

🔍 Remote MCP

Summary of Additional Context Found

VyOS Documentation Standards and Format

VyOS documentation uses MyST Markdown (.md) format built with Sphinx, with VyOS-specific command directives (cfgcmd, opcmd, cmdincludemd) written as MyST fenced blocks and rendered as directives via myst_fence_as_directive. This aligns with the PR's focus on converting the IS-IS documentation to MyST format.

VyOS converted its documentation corpus to MyST in three phases per release train, with each migration validated against a Playwright visual-diff harness where every page was pixel-compared to catch regressions before the PR was opened.

AI-Assisted Review Process

VyOS runs an automated reviewer using Claude Opus (the most capable tier) on every documentation PR via an ai-validation GitHub Actions workflow. This is a quality floor that catches obvious issues before maintainers review, resulting in faster turnaround for contributors and more reviewer attention on things that need human review.

IS-IS Command Validation

The VyOS project added IS-IS commands to advertise high metric values and to advertise prefixes of only passive interfaces: set protocols isis advertise-high-metrics and set protocols isis advertise-passive-only. These are among the new commands documented in the PR.

The IS-IS LSP MTU size range is documented as 128 to 4352 bytes, and metric-style options include narrow, transition, and wide formats. This matches the value ranges specified in the PR objectives.

Related Configuration Features

The log-adjacency-changes command allows logging changes in adjacency, similar to OSPF functionality. This command is also documented in the IS-IS PR.

[::web_search::]

Comment thread docs/configuration/protocols/isis.md Outdated
Comment thread docs/configuration/protocols/isis.md Outdated
Comment thread docs/configuration/protocols/isis.md Outdated
Comment thread docs/configuration/protocols/isis.md Outdated
Comment thread docs/configuration/protocols/isis.md Outdated

**Configure the redistribution of IPv4 routing information from the
specified route source into IS-IS Level-1.**
```

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.

INFO — Consider documenting the level / process-level constraint

Source (src/conf_mode/protocols_isis.py:134-149) raises a commit-time error if redistribute ... level-X is configured while the IS-IS process is set to a non-matching level (e.g. level is level-1 but the user redistributes into level-2). Same constraint applies to all redistribute sub-commands.
Branch: rolling (vyos-1x: current)

The doc already mentions this constraint in the default-information originate ... sections. Suggest adding an equivalent {note} to the redistribute section to save users a commit failure.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @LiudmylaNad's task in 3m 41s —— View job


Claude Code Review – IS-IS docs update (re-review after commit 3433ca5)

The "Apply suggestions from code review" commit unfortunately broke the markdown rather than fixing the value ranges. Details below.

Issues

# Severity File:Line Summary
1 ERROR docs/configuration/protocols/isis.md:906–914 interface … ldp-sync holddown {cfgcmd} block: opener line was stripped, leaving an orphaned description and an unmatched closing fence at L914.
2 ERROR docs/configuration/protocols/isis.md:1413–1418 lsp-refresh-interval {cfgcmd} block: opener was stripped, orphaned body + unmatched fence at L1418.
3 ERROR docs/configuration/protocols/isis.md:1504–1513 spf-delay-ietf time-to-learn {cfgcmd} block: opener stripped, orphaned body + unmatched fence at L1513.
4 ERROR docs/configuration/protocols/isis.md:1522–1525 spf-delay-ietf long-delay {cfgcmd} block: opener stripped, orphaned body + unmatched fence at L1525.
5 ERROR docs/configuration/protocols/isis.md:1534–1539 spf-delay-ietf short-delay {cfgcmd} block: opener stripped, orphaned body + unmatched fence at L1539.
6 WARNING docs/configuration/protocols/isis.md:1836 NET 49.0001.1921.6825.5255.00 does not match loopback 198.51.100.1 per the documented derivation rule (L60–67). Should be 49.0001.1980.5110.0001.00.
7 WARNING docs/configuration/protocols/isis.md:1847 NET 49.0001.1921.6825.5254.00 does not match loopback 198.51.100.2. Should be 49.0001.1980.5110.0002.00.
8 WARNING docs/configuration/protocols/isis.md:1950 NET 49.0001.1985.1100.0001.00 does not match loopback 198.51.100.1. Should be 49.0001.1980.5110.0001.00.
9 INFO docs/configuration/protocols/isis.md:1230–1391 (Carried over from previous review) The redistribute section still omits the level/process-level constraint that protocols_isis.py:134-149 enforces. The default-information sections document it. Suggest adding a {note}.

Findings 1–5 are posted as inline comments with the exact opener lines to restore. Findings 6–8 are outside the latest commit's diff range so I couldn't post them inline (same limitation CodeRabbit hit).

What happened with the prior suggestions

The previous review's GitHub suggestion blocks contained embedded triple-backtick fences. GitHub's "Apply suggestion" UI treats the first inner ``` as the suggestion terminator, so the {cfgcmd} opener — which followed that fence in the suggestion — never made it into the file. Net effect: the opener line was simply deleted. My fault for the suggestion format; this re-review provides restorations as plain <pre> blocks instead.

Counter-verification of CodeRabbit's NET finding

CodeRabbit also flagged NET values at lines 1910 and 1920 (the "redistribute" example). Those are correctly derived from the interface IPs actually used in that example:

  • Node 1 dummy 203.0.113.1 → System ID 2030.1130.0001 ✓ (matches L1910)
  • Node 2 eth1 192.0.2.2 → System ID 1920.0020.0002 ✓ (matches L1920)

No change needed there. The wrong NETs are only at lines 1836, 1847, and 1950.

Stats

  • Validated 1 MyST file (docs/configuration/protocols/isis.md).
  • Skipped 0 RST files awaiting MyST migration.
  • Verified against .vyos-1x/interface-definitions/protocols_isis.xml.in, include/isis/*.xml.i, and src/conf_mode/protocols_isis.py.
  • Branch reviewed: rolling (vyos-1x: current).
  • Commits in scope: 95d1708 (initial rewrite) + 3433ca5 (applied suggestions, which introduced findings 1–5).
    · Branch: revise-is-is

Comment on lines +906 to +913

**Configure the time, in seconds, that IS-IS keeps the specified interface
at max-metric while waiting for LDP-IGP synchronization to complete.**

When this time expires, IS-IS restores the configured interface metric
even if LDP-IGP synchronization has not completed.

The default value is 0, which causes IS-IS to wait indefinitely.

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.

ERROR — Broken {cfgcmd} block (applied suggestion from previous review stripped the opener)

Commit 3433ca5 ("Apply suggestions from code review") deleted the {cfgcmd} directive opener line but left the description and the closing ``` fence in place. The result: the command no longer renders as a {cfgcmd} block, and there's an unmatched closing fence at line 914.

Please restore the opener so the block reads:

```{cfgcmd} set protocols isis interface \<interface\> ldp-sync holddown \<0-10000\>

**Configure the time, in seconds, that IS-IS keeps the specified interface
at max-metric while waiting for LDP-IGP synchronization to complete.**
...
```

Same <leafNode> is reused for the protocol-wide command (correctly rendered as <0-10000> at line 654).
Source: interface-definitions/include/isis/ldp-sync-holddown.xml.i:1-13<format>u32:0-10000</format>.
Branch: rolling (vyos-1x: current)

Comment on lines +1413 to +1418
**Configure the maximum interval, in seconds, between consecutive
regenerations of this router's own LSP.**

When this interval elapses, the router regenerates its LSP even if no
event has triggered a regeneration.
```

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.

ERROR — Broken {cfgcmd} block (opener was stripped when applying previous suggestion)

Commit 3433ca5 deleted the {cfgcmd} opener for lsp-refresh-interval but kept the description body and the closing ``` (line 1418). Please restore the opener:

```{cfgcmd} set protocols isis lsp-refresh-interval \<2-65235\>

**Configure the maximum interval, in seconds, between consecutive
regenerations of this router's own LSP.**
...
```

Source (interface-definitions/include/isis/protocol-common-config.xml.i:116-127): <format>u32:2-65235</format>, default 900.
Branch: rolling (vyos-1x: current)

Comment on lines +1504 to 1513
**Configure the learning interval, in milliseconds, that begins when the
first topology change is received.**

Within this window, the router applies the `short-delay` before performing
SPF recalculations triggered by additional topology changes.

If topology changes continue to arrive after this window expires, the
router considers the network unstable and delays subsequent SPF
recalculations by the configured `long-delay`.
```

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.

ERROR — Broken {cfgcmd} block (opener was stripped when applying previous suggestion)

Commit 3433ca5 deleted the {cfgcmd} opener for spf-delay-ietf time-to-learn but kept the body and closing fence (line 1513). Please restore the opener:

```{cfgcmd} set protocols isis spf-delay-ietf time-to-learn \<0-60000\>

**Configure the learning interval, in milliseconds, that begins when the
first topology change is received.**
...
```

Source (interface-definitions/include/isis/protocol-common-config.xml.i:690-697): <format>u32:0-60000</format>.
Branch: rolling (vyos-1x: current)

Comment on lines +1522 to 1525
**Configure the interval, in milliseconds, the router applies before
running an SPF calculation when topology changes arrive after the
`time-to-learn` window expires.**
```

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.

ERROR — Broken {cfgcmd} block (opener was stripped when applying previous suggestion)

Commit 3433ca5 deleted the {cfgcmd} opener for spf-delay-ietf long-delay but kept the body and closing fence (line 1525). Please restore the opener:

```{cfgcmd} set protocols isis spf-delay-ietf long-delay \<0-60000\>

**Configure the interval, in milliseconds, the router applies before
running an SPF calculation when topology changes arrive after the
`time-to-learn` window expires.**
```

Source (interface-definitions/include/isis/protocol-common-config.xml.i:666-673): <format>u32:0-60000</format>.
Branch: rolling (vyos-1x: current)

Comment on lines +1534 to 1539
**Configure the interval, in milliseconds, the router applies before
running subsequent SPF calculations triggered by additional topology
changes within the `time-to-learn` window.**

This command redistributes routing information from the given route source
into the ISIS database as Level-1. There are six modes available for route
source: bgp, connected, kernel, ospf, rip, static.
The first SPF in the window is delayed by `init-delay`.
```

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.

ERROR — Broken {cfgcmd} block (opener was stripped when applying previous suggestion)

Commit 3433ca5 deleted the {cfgcmd} opener for spf-delay-ietf short-delay but kept the body and closing fence (line 1539). Please restore the opener:

```{cfgcmd} set protocols isis spf-delay-ietf short-delay \<0-60000\>

**Configure the interval, in milliseconds, the router applies before
running subsequent SPF calculations triggered by additional topology
changes within the `time-to-learn` window.**

The first SPF in the window is delayed by `init-delay`.
```

Source (interface-definitions/include/isis/protocol-common-config.xml.i:654-661): <format>u32:0-60000</format>.
Branch: rolling (vyos-1x: current)

@LiudmylaNad LiudmylaNad marked this pull request as draft June 14, 2026 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant