Skip to content

docs: restructure /sync — uv-style sidebar, 7 new pages, voice pass#128

Open
yjouffrault wants to merge 1 commit into
mainfrom
docs/sync-restructure
Open

docs: restructure /sync — uv-style sidebar, 7 new pages, voice pass#128
yjouffrault wants to merge 1 commit into
mainfrom
docs/sync-restructure

Conversation

@yjouffrault
Copy link
Copy Markdown
Contributor

@yjouffrault yjouffrault commented May 27, 2026

Summary by CodeRabbit

Release Notes

  • Documentation

    • Reorganized and expanded documentation with new comprehensive guides for adapter selection, sync project creation, and migrations from NetBox/Nautobot
    • Added documentation for Device42 and PeeringDB adapters with setup guidance
    • Implemented automatic redirects from legacy documentation paths to new locations for seamless navigation
    • Added guides for custom certificates, orchestration options, and contributor setup
  • Chores

    • Updated documentation sidebar navigation structure

Review Change Stack

Restructure the /sync/ docs section. Single production PR — goes live to docs.infrahub.app/sync on merge.

  • 7 new content files (orchestration, NetBox/Nautobot side-by-side, migration walkthrough, schema mapping reference, choosing an adapter, PeeringDB + Device42 stubs)
  • 4 file moves out of docs/docs/guides/ to root
  • Split development.mdxcontributing.mdx + RELEASING.md (maintainer runbook moves to repo root)
  • uv-style sidebar: Get started · Guides · Adapters · Reference · Contributing
  • Voice pass on all new prose
  • 5 URL redirects via @docusaurus/plugin-client-redirects

Full project plan with rationale: Confluence — Overview project plan.

Final sidebar

Infrahub Sync                            ← overview at /sync/

▾ Get started
  ─ Install Infrahub Sync
  ─ Create a sync project
  ─ Run a sync

▾ Guides
  ─ Use NetBox or Nautobot with Infrahub
  ─ Migrate from NetBox or Nautobot
  ─ Schedule sync runs
  ─ Use custom CA certificates

▾ Adapters
  ─ Choose an adapter
  ─ Cisco ACI
  ─ Device42
  ─ Generic REST API
  ─ Infrahub
  ─ IP Fabric
  ─ LibreNMS
  ─ Local adapters
  ─ Nautobot
  ─ NetBox
  ─ Observium
  ─ Peering Manager
  ─ PeeringDB
  ─ Prometheus
  ─ Slurp'it

▾ Reference
  ─ Sync instance configuration
  ─ Schema mapping reference
  ─ CLI reference

─ Contributing

What needs reviewer attention

Sorted by how much new content needs verification.

Net-new prose — read end-to-end

File Lines What to check
docs/docs/orchestration.mdx ~95 Cron / CI / Prefect / Dagster / event-driven coverage; cadence guidance; observability and failure handling; "what's not in Infrahub Sync" closer. Verify no invented capabilities.
docs/docs/using-netbox-or-nautobot-with-infrahub.mdx ~85 Side-by-side adoption pattern. Reframed to cover Nautobot equally with NetBox. Factual claims about NetBox/Nautobot capabilities (rack elevation, cable tracing) and Infrahub gaps. Decision framework for "which tool owns which data".
docs/docs/migrating-from-netbox-or-nautobot.mdx ~140 Gradual migration walkthrough — 6 phases. Verify the phased approach matches OpsMill's recommended migration story, SKIP_UNMATCHED_DST behavior description, and the differences-between-NetBox-and-Nautobot section.
docs/docs/reference/schema-mapping.mdx ~310 Mapping syntax reference. The 14-operation filter table is sourced from infrahub_sync/__init__.py:114-130 (the prior table in config.mdx was wrong). NetBox + Nautobot worked examples are illustrative — verify field names.
docs/docs/adapters/choosing-an-adapter.mdx ~75 Decision guide + adapter table including PeeringDB + Device42 rows. When-to-use-Generic-REST and when-to-build-custom sections.
RELEASING.md (repo root) ~165 Maintainer-only release runbook. Extracted verbatim from development.mdx; no content changes, only location. Verify it still reads as a coherent runbook on its own.

Stub pages — minimal content, just confirm framing

  • docs/docs/adapters/peeringdb.mdx — "Under Construction" stub matching the LibreNMS/Observium pattern.
  • docs/docs/adapters/device42.mdx — same.

Rewrites — compare against original

File What changed
creating-a-sync-project.mdx Same content as the previous guides/creation.mdx, but reshaped: dropped "this guide will walk you through" opener; "Step 1/2/3/4" headings → action-named (Define source & destination / Set the sync order / Map the schema fields / Tune sync behavior). Nautobot → Infrahub example preserved.
custom-certificates.mdx Same 4 commands as the previous guides/custom-certificates.mdx, but reshaped: dropped "this guide will walk you through" opener; collapsed 4 single-command steps into 2 action-named sections. Adds a note that paths shown are Debian/Ubuntu-specific.
contributing.mdx Renamed from development.mdx. Content above the "Publishing a release" section preserved verbatim. The 180-line Release Runbook moved to /RELEASING.md. Opens with a one-line pointer to RELEASING.md.

Targeted edits — small surface area

File What changed
docs/docs/reference/config.mdx Title → "Sync instance configuration". Filter operations table removed (now in schema-mapping.mdx), replaced with brief mention + pointer. Structural tables (Mapping models / fields / filters / transforms) unchanged.
docs/docs/adapters/netbox.mdx Added "Related guides" section pointing at side-by-side, migration, schema-mapping, and choosing-an-adapter pages.
docs/docs/adapters/nautobot.mdx Same Related guides addition.
docs/docs/readme.mdx (overview) Lead paragraph rewritten — value-led, second-person imperative, drops "Python package that synchronizes data" implementation-first framing. Internal Markdown links updated to new file locations.
README.md (repo root) Cross-links updated to new /sync/ URLs and new imperative titles ("Create a sync project" etc.).
.vale/styles/spelling-exceptions.txt Added: VRFs, walkthrough, runbook, runbooks, PeeringDB, Device42, Splunk, Datadog, Infoblox, Nautobot's.

Page renames

All task-page titles converted from gerund to imperative form (matches the imperative voice in the body prose, and matches Stripe / FastAPI / Pulumi convention for how-to pages):

Old title New title
Installing Infrahub Sync Install Infrahub Sync
Creating a sync project Create a sync project
Running a sync Run a sync
Using NetBox or Nautobot with Infrahub Use NetBox or Nautobot with Infrahub
Migrating from NetBox or Nautobot Migrate from NetBox or Nautobot
Orchestrating and scheduling sync runs Schedule sync runs
Using custom CA certificates Use custom CA certificates
Choosing an adapter Choose an adapter

Reference page titles kept as noun-phrase (they describe a thing, not an action).

URL redirects

Configured via @docusaurus/plugin-client-redirects in docs/docusaurus.config.ts (pinned to 3.10.0 to match Docusaurus core):

Old URL New URL
/sync/guides/installation /sync/installation
/sync/guides/creation /sync/creating-a-sync-project
/sync/guides/run /sync/running-a-sync
/sync/guides/custom-certificates /sync/custom-certificates
/sync/development /sync/contributing

Verification

  • cd docs && npm run build succeeds
  • npx markdownlint-cli2 — clean across 30 files (0 errors)
  • vale docs/docs/ — 0 errors in new/touched content. Remaining errors are all in pre-existing media/infrahub_sync_process.excalidraw.svg (embedded font tokens — out of scope)
  • All 5 redirects emitted as meta-refresh HTML pages under build/<old-path>/
  • Local preview tested at http://localhost:3010/

Out of scope (deferred)

Tracked as Open Issues on the Confluence project plan:

  • Verify schema library and NetBox-aligned bundle existence — references removed from migration page pending confirmation
  • Revisit per-source pages if joint NetBox/Nautobot pages grow unwieldy
  • Revisit Contributing hub+spokes if adapter-author content expands

Test plan

  • Build succeeds when merged into production docs aggregator
  • All 5 redirects resolve correctly in the production deployment
  • Sidebar order matches the structure above
  • Spot-check a few new pages render correctly (no MDX syntax issues)

- New pages: orchestration (schedule sync runs), side-by-side
  pattern, migration walkthrough, schema mapping reference,
  choosing an adapter, PeeringDB + Device42 adapter stubs.
- Moved: guides/ contents (installation, creation→create, run,
  custom-certificates) to docs/docs/ root.
- Split: development.mdx → contributing.mdx (contributor docs)
  + RELEASING.md (maintainer release runbook) at repo root.
- Sidebar: uv-style structure — Get started · Guides · Adapters ·
  Reference · Contributing.
- Titles: imperative form for task pages ("Create a sync project"),
  noun form for reference.
- Voice pass on all new prose: drop "the team" third-person
  paraphrasing, "without X" negation framing, and corporate-speak
  verb+adverb constructions; lead with capability + use case,
  not implementation type.
- 5 URL redirects via @docusaurus/plugin-client-redirects
  (legacy /guides/* paths + /development → /contributing).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying infrahub-sync with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9831e8c
Status: ✅  Deploy successful!
Preview URL: https://5bf32f71.infrahub-sync.pages.dev
Branch Preview URL: https://docs-sync-restructure.infrahub-sync.pages.dev

View logs

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Walkthrough

This PR restructures the Infrahub Sync documentation from a legacy /guides/* path structure to top-level documentation pages. New foundational guides explain how to create sync projects, run syncs, configure custom certificates, and contribute code. A comprehensive schema mapping reference consolidates field mapping syntax and examples. Production and migration guides cover orchestration, gradual NetBox/Nautobot migration, and side-by-side adoption patterns. New adapter documentation for Device42 and PeeringDB is added alongside a selecting-an-adapter guide. Navigation is wired through Docusaurus redirects, sidebar restructuring, and internal link updates. Legacy guide files are removed, RELEASING.md is rewritten as a release runbook, and supporting changes include contributor documentation and spelling exceptions.

🚥 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 describes the main restructuring work: sidebar reorganization, 7 new documentation pages, and a voice/style pass across the documentation.
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.


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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (4)
docs/docs/adapters/peeringdb.mdx (2)

5-7: ⚡ Quick win

Remove unused imports.

The stub imports ReferenceLink, Tabs, and TabItem but doesn't use them. Clean up these imports until the page is fleshed out.

🧹 Proposed cleanup
-import ReferenceLink from "../../src/components/Card";
-import Tabs from '`@theme/Tabs`';
-import TabItem from '`@theme/TabItem`';
-
🤖 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/docs/adapters/peeringdb.mdx` around lines 5 - 7, Remove the unused
imports ReferenceLink, Tabs, and TabItem from the top of the peeringdb.mdx stub
by deleting their import statements (the lines that import ReferenceLink from
"../../src/components/Card" and Tabs/TabItem from '`@theme/`*'); keep the file
otherwise unchanged and re-add these imports only when the components are
actually used.

9-9: 💤 Low value

Vale sentence-case warning on proper noun.

The pipeline flags "What is PeeringDB?" as violating sentence case, but "PeeringDB" is a proper noun with specific capitalization. If Vale continues to flag this, consider adding a vale-off comment or updating the Vale rule to handle product names.

🤖 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/docs/adapters/peeringdb.mdx` at line 9, The header "## What is
PeeringDB?" is being flagged by Vale for sentence-case but "PeeringDB" is a
proper noun; either suppress the lint for this occurrence by wrapping or
annotating the header with a Vale disable comment (e.g., add a Vale inline
disable/enable around the "## What is PeeringDB?" header) or add "PeeringDB" to
the Vale allowed words/wordlist/style configuration so the rule accepts its
capitalization; update the docs line containing the header or the Vale config
accordingly.
docs/docs/adapters/device42.mdx (2)

5-7: ⚡ Quick win

Remove unused imports.

The stub imports ReferenceLink, Tabs, and TabItem but doesn't use them. Clean up these imports until the page is fleshed out.

🧹 Proposed cleanup
-import ReferenceLink from "../../src/components/Card";
-import Tabs from '`@theme/Tabs`';
-import TabItem from '`@theme/TabItem`';
-
🤖 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/docs/adapters/device42.mdx` around lines 5 - 7, The file imports unused
symbols ReferenceLink, Tabs, and TabItem; remove those import statements (the
import lines that reference ReferenceLink, Tabs, and TabItem) so there are no
unused imports remaining until the page uses those components; if you plan to
re-add later, keep a single TODO comment instead of importing unused symbols.

9-9: 💤 Low value

Vale sentence-case warning on proper noun.

The pipeline flags "What is Device42?" as violating sentence case, but "Device42" is a proper noun with specific capitalization. If Vale continues to flag this, consider adding a vale-off comment or updating the Vale rule to handle product names.

🤖 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/docs/adapters/device42.mdx` at line 9, The Vale linter is flagging the
heading "What is Device42?" as a sentence-case violation even though "Device42"
is a proper noun; fix by either disabling Vale for that heading or adding a Vale
exception: add an inline Vale disable comment around the heading (e.g., <!--
vale off --> before the "What is Device42?" heading and <!-- vale on --> after
the block) or add a rule/term exception in your Vale config to whitelist
"Device42" so the header is no longer flagged.
🤖 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/docs/contributing.mdx`:
- Line 57: Update the heading "Validate the CLI" to sentence case by
capitalizing only the first word and leaving the acronym as-is (e.g., "Validate
the CLI"); if Vale still flags Infrahub.sentence-case for that heading, add a
Vale directive to disable that rule for this line (disable
Infrahub.sentence-case for the heading) so the acronym "CLI" is accepted; target
the heading text "Validate the CLI" when making the change.

In `@docs/docs/migrating-from-netbox-or-nautobot.mdx`:
- Line 100: Update the heading "## Phase 5 — Migrate workflows" to sentence-case
by lowercasing the subtitle after the em dash; find the heading string "## Phase
5 — Migrate workflows" and change it to "## Phase 5 — migrate workflows" so it
passes the Infrahub.sentence-case Vale check.
- Line 120: Update the MDX heading "## Differences between migrating from NetBox
versus Nautobot" to sentence-case to satisfy Vale; change it to something like
"## Differences between migrating from NetBox and Nautobot" (keep proper nouns
like NetBox and Nautobot capitalized) so the heading matches the
Infrahub.sentence-case rule.

In `@docs/docs/readme.mdx`:
- Line 5: The Vale spellcheck is flagging “ServiceNow-style CMDBs” because the
token CMDBs is not in the Vale exceptions file; open spelling-exceptions.txt
(the Vale spelling exceptions list) and add a new entry "CMDBs" (exact casing)
on its own line so Vale will accept the phrase in docs/docs/readme.mdx; commit
the change to unblock the build.

In `@docs/docs/using-netbox-or-nautobot-with-infrahub.mdx`:
- Line 59: The MDX sentence contains the flagged word "queryable"; fix by either
adding "queryable" to the Vale exceptions (spelling-exceptions.txt) or by
rephrasing the sentence to avoid the term (e.g., change "the same data is
queryable via Infrahub's graph traversal capabilities" to "the same data can be
queried via Infrahub's graph traversal capabilities"); update the docs line
containing "queryable via Infrahub's graph traversal capabilities" accordingly
and run Vale/markdownlint to confirm the validation passes.

---

Nitpick comments:
In `@docs/docs/adapters/device42.mdx`:
- Around line 5-7: The file imports unused symbols ReferenceLink, Tabs, and
TabItem; remove those import statements (the import lines that reference
ReferenceLink, Tabs, and TabItem) so there are no unused imports remaining until
the page uses those components; if you plan to re-add later, keep a single TODO
comment instead of importing unused symbols.
- Line 9: The Vale linter is flagging the heading "What is Device42?" as a
sentence-case violation even though "Device42" is a proper noun; fix by either
disabling Vale for that heading or adding a Vale exception: add an inline Vale
disable comment around the heading (e.g., <!-- vale off --> before the "What is
Device42?" heading and <!-- vale on --> after the block) or add a rule/term
exception in your Vale config to whitelist "Device42" so the header is no longer
flagged.

In `@docs/docs/adapters/peeringdb.mdx`:
- Around line 5-7: Remove the unused imports ReferenceLink, Tabs, and TabItem
from the top of the peeringdb.mdx stub by deleting their import statements (the
lines that import ReferenceLink from "../../src/components/Card" and
Tabs/TabItem from '`@theme/`*'); keep the file otherwise unchanged and re-add
these imports only when the components are actually used.
- Line 9: The header "## What is PeeringDB?" is being flagged by Vale for
sentence-case but "PeeringDB" is a proper noun; either suppress the lint for
this occurrence by wrapping or annotating the header with a Vale disable comment
(e.g., add a Vale inline disable/enable around the "## What is PeeringDB?"
header) or add "PeeringDB" to the Vale allowed words/wordlist/style
configuration so the rule accepts its capitalization; update the docs line
containing the header or the Vale config accordingly.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 23aaf314-0de6-454b-b476-172e1bbfb438

📥 Commits

Reviewing files that changed from the base of the PR and between 4b70958 and 9831e8c.

⛔ Files ignored due to path filters (1)
  • docs/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (24)
  • .vale/styles/spelling-exceptions.txt
  • README.md
  • RELEASING.md
  • docs/docs/adapters/choosing-an-adapter.mdx
  • docs/docs/adapters/device42.mdx
  • docs/docs/adapters/nautobot.mdx
  • docs/docs/adapters/netbox.mdx
  • docs/docs/adapters/peeringdb.mdx
  • docs/docs/contributing.mdx
  • docs/docs/creating-a-sync-project.mdx
  • docs/docs/custom-certificates.mdx
  • docs/docs/guides/creation.mdx
  • docs/docs/guides/custom-certificates.mdx
  • docs/docs/installation.mdx
  • docs/docs/migrating-from-netbox-or-nautobot.mdx
  • docs/docs/orchestration.mdx
  • docs/docs/readme.mdx
  • docs/docs/reference/config.mdx
  • docs/docs/reference/schema-mapping.mdx
  • docs/docs/running-a-sync.mdx
  • docs/docs/using-netbox-or-nautobot-with-infrahub.mdx
  • docs/docusaurus.config.ts
  • docs/package.json
  • docs/sidebars.ts
💤 Files with no reviewable changes (2)
  • docs/docs/guides/creation.mdx
  • docs/docs/guides/custom-certificates.mdx

uv run mypy infrahub_sync/ --ignore-missing-imports
```

### Validate the CLI
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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Resolve Vale sentence-case warning.

The pipeline reports a Vale warning that contradicts the PR's claim of "0 errors." The heading may need adjustment to satisfy the Infrahub.sentence-case rule, though the current capitalization of "CLI" as an acronym appears correct.

🧰 Tools
🪛 GitHub Actions: Pull Request on main/stable / 1_linter _ validate-documentation-style.txt

[warning] 57-57: Vale (Infrahub.sentence-case) warning: 'Validate the CLI' should use sentence case.

🪛 GitHub Actions: Pull Request on main/stable / linter _ validate-documentation-style

[warning] 57-57: Vale (Infrahub.sentence-case) warning: 'Validate the CLI' should use Infrahub.sentence-case sentence case.

🤖 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/docs/contributing.mdx` at line 57, Update the heading "Validate the CLI"
to sentence case by capitalizing only the first word and leaving the acronym
as-is (e.g., "Validate the CLI"); if Vale still flags Infrahub.sentence-case for
that heading, add a Vale directive to disable that rule for this line (disable
Infrahub.sentence-case for the heading) so the acronym "CLI" is accepted; target
the heading text "Validate the CLI" when making the change.


During side-by-side operation, the same model may be edited in both tools. Decide upfront which tool is authoritative for each model and document the decision in the project configuration. If both tools allow edits to the same model, conflicts will eventually occur — and Infrahub Sync's default behavior is for the source system to win.

## Phase 5 — Migrate workflows
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.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Fix heading to pass Vale sentence-case check.

The pipeline flags this heading as violating the Infrahub.sentence-case rule. Based on the Vale error, this heading should be adjusted to pass the sentence-case validation.

As per coding guidelines, Markdown and MDX files in docs must pass markdownlint-cli2 checks, and the pipeline shows this is currently failing Vale validation.

🧰 Tools
🪛 GitHub Actions: Pull Request on main/stable / 1_linter _ validate-documentation-style.txt

[warning] 100-100: Vale (Infrahub.sentence-case) warning: 'Phase 5 — Migrate workflows' should use sentence case.

🪛 GitHub Actions: Pull Request on main/stable / linter _ validate-documentation-style

[warning] 100-100: Vale (Infrahub.sentence-case) warning: 'Phase 5 — Migrate workflows' should use sentence case.

🤖 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/docs/migrating-from-netbox-or-nautobot.mdx` at line 100, Update the
heading "## Phase 5 — Migrate workflows" to sentence-case by lowercasing the
subtitle after the em dash; find the heading string "## Phase 5 — Migrate
workflows" and change it to "## Phase 5 — migrate workflows" so it passes the
Infrahub.sentence-case Vale check.


Many teams reach a stable side-by-side state and stay there indefinitely. See [Use NetBox or Nautobot with Infrahub](./using-netbox-or-nautobot-with-infrahub.mdx).

## Differences between migrating from NetBox versus Nautobot
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.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Fix heading to pass Vale sentence-case check.

The pipeline flags this heading as violating the Infrahub.sentence-case rule. Based on the Vale error, this heading should be adjusted to pass the sentence-case validation.

As per coding guidelines, Markdown and MDX files in docs must pass markdownlint-cli2 checks, and the pipeline shows this is currently failing Vale validation.

🧰 Tools
🪛 GitHub Actions: Pull Request on main/stable / 1_linter _ validate-documentation-style.txt

[warning] 120-120: Vale (Infrahub.sentence-case) warning: 'Differences between migrating from NetBox versus Nautobot' should use sentence case.

🪛 GitHub Actions: Pull Request on main/stable / linter _ validate-documentation-style

[warning] 120-120: Vale (Infrahub.sentence-case) warning: 'Differences between migrating from NetBox versus Nautobot' should use sentence case.

🤖 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/docs/migrating-from-netbox-or-nautobot.mdx` at line 120, Update the MDX
heading "## Differences between migrating from NetBox versus Nautobot" to
sentence-case to satisfy Vale; change it to something like "## Differences
between migrating from NetBox and Nautobot" (keep proper nouns like NetBox and
Nautobot capitalized) so the heading matches the Infrahub.sentence-case rule.

Comment thread docs/docs/readme.mdx
---

Infrahub Sync is a Python package that synchronizes data between Infrahub and external infrastructure systems. It connects to NetBox, Nautobot, IP Fabric, Slurp’it, Cisco ACI, ServiceNow-style systems, and other tools through a library of pre-built adapters, and handles both the communication with each system and the translation of data between different schemas. Sync projects are defined declaratively in YAML; the CLI generates the adapter code, calculates the diff, and applies changes.
Infrahub Sync synchronizes infrastructure data between Infrahub and external systemsNetBox, Nautobot, IP Fabric, Slurp’it, Cisco ACI, Peering Manager, ServiceNow-style CMDBs, and any system with a REST/JSON API. Use it to migrate from a legacy system of record, run two systems side-by-side, or keep Infrahub in sync with another source of truth. Define a sync project declaratively in YAML, and the CLI generates the adapter code, calculates the diff, and applies only the deltas on each run.
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.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if CMDBs is in the Vale spelling exceptions
if [ -f ".vale/styles/spelling-exceptions.txt" ]; then
  echo "=== Checking spelling-exceptions.txt for CMDBs ==="
  grep -i "cmdb" .vale/styles/spelling-exceptions.txt || echo "CMDBs not found in exceptions"
else
  echo "ERROR: .vale/styles/spelling-exceptions.txt not found"
fi

Repository: opsmill/infrahub-sync

Length of output: 146


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Check Vale spelling exceptions file existence ==="
ls -la .vale/styles/spelling-exceptions.txt || true

echo
echo "=== Search for cmdb-related entries in spelling-exceptions.txt ==="
if [ -f ".vale/styles/spelling-exceptions.txt" ]; then
  rg -n -i 'cmdb' .vale/styles/spelling-exceptions.txt || true
  echo
  echo "=== Show first 80 lines of spelling-exceptions.txt (for context) ==="
  sed -n '1,80p' .vale/styles/spelling-exceptions.txt
fi

echo
echo "=== Confirm 'CMDBs' occurrence in docs/docs/readme.mdx ==="
sed -n '1,40p' docs/docs/readme.mdx | nl -ba | sed -n '1,40p'
rg -n '\bCMDBs\b' docs/docs/readme.mdx || true

Repository: opsmill/infrahub-sync

Length of output: 1273


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Search for cmdb-related entries in spelling-exceptions.txt ==="
if [ -f ".vale/styles/spelling-exceptions.txt" ]; then
  rg -n -i 'cmdb' .vale/styles/spelling-exceptions.txt || true
else
  echo "ERROR: .vale/styles/spelling-exceptions.txt not found"
fi

echo
echo "=== Show the exact line(s) containing CMDBs in docs/docs/readme.mdx (if any) ==="
rg -n '\bCMDBs\b' docs/docs/readme.mdx || true

echo
echo "=== Show surrounding text around 'CMDB'/'CMDBs' if present ==="
if rg -n -i 'cmdb' docs/docs/readme.mdx >/dev/null 2>&1; then
  rg -n -i 'cmdb' -C 3 docs/docs/readme.mdx
else
  echo "No 'cmdb' substring found in docs/docs/readme.mdx"
fi

echo
echo "=== Show lines 1-15 of docs/docs/readme.mdx for context (with line numbers) ==="
sed -n '1,15p' docs/docs/readme.mdx | cat -n

Repository: opsmill/infrahub-sync

Length of output: 4574


Add “CMDBs” to Vale spelling exceptions

docs/docs/readme.mdx (line 5) includes “ServiceNow-style CMDBs”, but .vale/styles/spelling-exceptions.txt contains no cmdb/CMDBs exception entry. Add CMDBs to .vale/styles/spelling-exceptions.txt to unblock the Vale build.

🧰 Tools
🪛 GitHub Actions: Pull Request on main/stable / 1_linter _ validate-documentation-style.txt

[error] 5-5: Vale (Infrahub.spelling) error: Did you really mean 'CMDBs'?

🪛 GitHub Actions: Pull Request on main/stable / linter _ validate-documentation-style

[error] 5-5: Vale (Infrahub.spelling) error: Did you really mean 'CMDBs'? Infrahub.spelling.

🤖 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/docs/readme.mdx` at line 5, The Vale spellcheck is flagging
“ServiceNow-style CMDBs” because the token CMDBs is not in the Vale exceptions
file; open spelling-exceptions.txt (the Vale spelling exceptions list) and add a
new entry "CMDBs" (exact casing) on its own line so Vale will accept the phrase
in docs/docs/readme.mdx; commit the change to unblock the build.


### Cable tracing

NetBox and Nautobot both include a cable tracing feature that follows connections through patch panels and intermediate devices. Infrahub does not have a single-click cable trace view, but the same data is queryable via Infrahub's graph traversal capabilities. For visualization, build a custom artifact or query with GraphQL from external tools.
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.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Fix Vale spelling error for "queryable".

The pipeline flags "queryable" as a spelling error. To resolve this, either add "queryable" to .vale/styles/spelling-exceptions.txt or rephrase the sentence (e.g., "the same data can be queried via Infrahub's graph traversal capabilities").

Proposed fix: Add to spelling exceptions

Add the following line to .vale/styles/spelling-exceptions.txt:

queryable

Alternatively, rephrase the sentence:

-NetBox and Nautobot both include a cable tracing feature that follows connections through patch panels and intermediate devices. Infrahub does not have a single-click cable trace view, but the same data is queryable via Infrahub's graph traversal capabilities. For visualization, build a custom artifact or query with GraphQL from external tools.
+NetBox and Nautobot both include a cable tracing feature that follows connections through patch panels and intermediate devices. Infrahub does not have a single-click cable trace view, but the same data can be queried via Infrahub's graph traversal capabilities. For visualization, build a custom artifact or query with GraphQL from external tools.

As per coding guidelines, Markdown and MDX files in docs must pass markdownlint-cli2 checks, and the pipeline shows this is currently failing Vale validation.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
NetBox and Nautobot both include a cable tracing feature that follows connections through patch panels and intermediate devices. Infrahub does not have a single-click cable trace view, but the same data is queryable via Infrahub's graph traversal capabilities. For visualization, build a custom artifact or query with GraphQL from external tools.
NetBox and Nautobot both include a cable tracing feature that follows connections through patch panels and intermediate devices. Infrahub does not have a single-click cable trace view, but the same data can be queried via Infrahub's graph traversal capabilities. For visualization, build a custom artifact or query with GraphQL from external tools.
🧰 Tools
🪛 GitHub Actions: Pull Request on main/stable / 1_linter _ validate-documentation-style.txt

[error] 59-59: Vale (Infrahub.spelling) error: Did you really mean 'Infrahub.spelling queryable'?

🪛 GitHub Actions: Pull Request on main/stable / linter _ validate-documentation-style

[error] 59-59: Vale (Infrahub.spelling) error: Did you really mean Infrahub.spelling 'queryable'?

🤖 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/docs/using-netbox-or-nautobot-with-infrahub.mdx` at line 59, The MDX
sentence contains the flagged word "queryable"; fix by either adding "queryable"
to the Vale exceptions (spelling-exceptions.txt) or by rephrasing the sentence
to avoid the term (e.g., change "the same data is queryable via Infrahub's graph
traversal capabilities" to "the same data can be queried via Infrahub's graph
traversal capabilities"); update the docs line containing "queryable via
Infrahub's graph traversal capabilities" accordingly and run Vale/markdownlint
to confirm the validation passes.

Copy link
Copy Markdown
Contributor

@BeArchiTek BeArchiTek left a comment

Choose a reason for hiding this comment

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

LGTM

@BeArchiTek BeArchiTek assigned yjouffrault and unassigned BeArchiTek May 29, 2026
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.

2 participants