Skip to content

docs: fix stale content, dead links, and missing nav entries - #450

Draft
netravnen wants to merge 9 commits into
peeringdb:masterfrom
netravnen:admincom/docs-content
Draft

docs: fix stale content, dead links, and missing nav entries#450
netravnen wants to merge 9 commits into
peeringdb:masterfrom
netravnen:admincom/docs-content

Conversation

@netravnen

@netravnen netravnen commented Aug 24, 2026

Copy link
Copy Markdown

Split out of #449 to make review easier. The infra half (fork-preview
banner, dual Atom feeds, gh-pages reset) moved to #451; #448
is the tracking issue for the whole line of work.

This is a batch of independent content fixes that accumulated while
working on the fork-preview infra in #449. None of it depends on that
infra work, so it can be reviewed and merged entirely on its own.

Changes

  • Dead links in FAQ and blog posts.
  • Stale CentOS setup step; documented why the "Edit on GitHub" link
    stays disabled.
  • Getting-started guides: role-picker, de-duplicated boilerplate,
    numbered steps.
  • howto/search.md: split the API reference out into its own page,
    expanded the MFA guide.
  • FAQ additions: RDAP affiliation, admin succession, deletion locks,
    qualification criteria, Mergers & Acquisitions guidance.
  • Deskpro public-response snippets index for the admin committee.
  • Nav registration for pages that existed but weren't linked from the
    sidebar.

Testing

  • uv run mkdocs build --strict -- 0 warnings.

netravnen and others added 9 commits August 24, 2026 14:38
A codebase-onboarding pass flagged two minor doc issues: README.md's
CentOS setup step predates this repo's move to a venv + uv workflow,
and mkdocs.yml's commented-out repo_url ("Edit on GitHub" link) had
only a generic comment with no indication of whether it was disabled
on purpose. Confirmed via git history that the link was deliberately
removed (commit fcb252c, "Removed the 'Edit on GitHub' link.",
2024-02-05), though that commit itself records no reason -- so this
leaves it disabled and documents that provenance instead of guessing
at intent either way.

Changes:
- README.md: CentOS install step used `yum install python-pip`,
  the Python 2 package name on a package manager CentOS has since
  moved on from; updated to `dnf install python3 python3-pip` to
  match the rest of the guide's python3/venv-based setup
- mkdocs.yml: replace the one-line "This line adds the Edit on
  GitHub link" comment above the commented-out repo_url with one
  that records why it's off (deliberate removal, reason
  undocumented) so it reads as a known state, not leftover cruft

Security:
- N/A -- documentation only

Testing:
- N/A -- text-only changes; no build step to run for README.md, and
  mkdocs.yml's only functional line (repo_url) is unchanged, still
  commented out

Backwards Compatibility:
- N/A -- no behavior change; the Edit on GitHub link remains off,
  matching current site behavior

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ber steps

The getting-started path was scattered: index.md buried the
role-specific HOWTOs under 45 lines of archival material (release
notes, tools, presentations, beta server, historical data), the four
get-started-*.md guides each repeated an identical 370+ word "About
PeeringDB" paragraph, and their setup steps were an unordered list
that read more like notes than instructions. This restructures the
front door so a new user hits a role picker first and each guide
gets straight to numbered steps.

Changes:
- docs/index.md: move "Getting started" to the second section (after
  the intro video, before Policies); consolidate Release
  notes/Tools/Presentations/Open source/Beta/Historical data into a
  compact "Learn more" bullet list; move the tutorial/workshop list
  out to presentations.md; trimmed from 123 to 92 lines
- docs/howtos.md: add a "New here? Start with your role" intro
  linking the four get-started guides, and list query_the_api.md
  alongside search.md
- docs/howto/get-started-{operator,exchange,facility,carrier}.md:
  replace the duplicated "About PeeringDB" boilerplate with a single
  pointer to index.md; number the setup steps (create account,
  create org, create the role-specific object, follow-up step);
  standardize the "Why should I add my network?" heading to "Why?"
  to match the other three guides; add the missing "More
  information" section to get-started-carrier.md so all four guides
  match
- docs/presentations.md: add "Tutorials and workshops" section at
  top with the 7 entries moved from index.md

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; internal links
  between index.md, howtos.md, and the four get-started guides
  verified to resolve

Backwards Compatibility:
- N/A -- no URLs or anchors removed; index.md's #mailing-lists
  anchor (linked from 60+ blog posts) is unchanged

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
search.md had grown to 355 lines serving two audiences at once: a
beginner walkthrough of UI/browser-extension search, and a full API
reference (object types, authentication, curl/Python/jq examples).
Separately, authenticate.md's MFA section was four sentences with
three screenshots sitting unused in the images directory, leaving
users to figure out setup and org-level enforcement on their own.

Changes:
- docs/howto/query_the_api.md: new file (175 lines) with the API
  reference content moved from search.md -- object types
  (basic/derived), API key authentication, making requests, GET
  operations on single/multiple objects, nested sets/objects, and
  real-world query examples using curl, Python, and jq
- docs/howto/search.md: trimmed from 355 to 189 lines, now focused
  on UI/extension search; replaced the removed content with a
  pointer to query_the_api.md
- docs/howto/authenticate.md: expanded the MFA section into a full
  walkthrough with two new subsections ("Setting up your second
  factor", "Requiring MFA for your organization"), wiring in the
  three previously orphaned screenshots
  (Location_of_MFA_button.png, MFA_management.png,
  require_users_to_enable_2fa.png) with captions
- docs/howto/work_within_peeringdbs_query_limits.md,
  docs/release_notes/release_notes_2023.md: update cross-references
  from /howto/search to /howto/query_the_api/ to match the split

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; verified
  query_the_api.md anchors referenced by other pages resolve

Backwards Compatibility:
- search.md's URL is unchanged; only its content and length
  changed, so existing external links to /howto/search/ still
  resolve, just to a narrower page

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A link sweep across the docs site found three broken references
unrelated to the getting-started or API-split work: an FAQ anchor
pointing at a section that no longer exists, and two blog posts
linking to HOWTO pages that were renamed or never existed.

Changes:
- docs/faq.md: "How do I get started?" linked to
  http://docs.peeringdb.com/#quick-start, an anchor that doesn't
  exist in index.md; replaced with a link to /howtos/ describing
  the role-based guides
- docs/blog/mfa_mandatory.md: "second factor" linked to
  /howto/enable_require_2fa/, a page that was never published;
  redirected to /howto/authenticate/#multi-factor-authentication-mfa
- docs/blog/peeringdb_2022_user_survey.md: "HOWTO documentation
  series" linked to /howto/ (404, missing the plural); fixed to
  /howtos/

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; confirmed
  /howto/authenticate/#multi-factor-authentication-mfa resolves in
  the generated HTML

Backwards Compatibility:
- N/A -- these links were already broken; no working URLs changed

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The Admin Committee's public-facing Deskpro response snippets
(triggered via ;code shortcuts like ;net-approved) had no
human-readable index, making them hard to review or reference
outside the Deskpro UI itself.

Changes:
- docs/committee/admin/deskpro_snippets.md: new file indexing the
  public (non-staff-only, non-trivial) Deskpro snippets by category
  -- network registration & approvals, facility & carrier
  management, organization recovery & account verification, IP/IX-F
  conflict resolution, and general administrative responses -- with
  snippet ID, shortcut code, and full text for each

Security:
- N/A -- documentation only; content already public-facing via
  Deskpro shortcuts, this just mirrors it

Testing:
- mkdocs build --strict passes with 0 warnings

Backwards Compatibility:
- N/A -- new page, no existing links affected

Co-Authored-By: Gemini 3.6 Flash <noreply@google.com>
…uidance

Facility, exchange, and carrier applicants were finding out they
didn't qualify only after submitting and getting rejected, because
the eligibility bar for each object type lived only in the Admin
Committee's Deskpro response snippets, not in the public HOWTOs.
Likewise, none of the three guides warned that facility and IX
prefix objects can't be deleted once other records depend on them,
so operators hit that block with no context.

Changes:
- docs/howto/get-started-facility.md: add "Facility qualification &
  approval criteria" section (ownership/operation,
  public colocation, multi-carrier interconnection, public
  documentation, and explicitly ineligible site types) and a
  "Deleting a facility" warning admonition covering the
  connected-networks deletion lock
- docs/howto/get-started-exchange.md: add a "3-ASN minimum" callout
  covering the participant threshold, route-server/affiliated-ASN
  exclusions, and RDAP-verifiable prefix requirements, plus a
  "Deleting an IX prefix" warning admonition covering the
  connected-networks deletion lock
- docs/howto/get-started-carrier.md: add "Carrier infrastructure
  qualification checklist" distinguishing eligible carrier-grade
  services (dark fibre, DWDM/wavelengths, Ethernet transport, MPLS
  VPN over owned infrastructure) from ineligible resold/leased
  transport

Content is sourced from the Admin Committee's public Deskpro
snippets already indexed in committee/admin/deskpro_snippets.md
(;fac-rejected, ;ix-rejected, ;car-rejected, ;deletion-fac,
;deletion-ixpfx) -- this makes criteria the committee already
applies visible to applicants before they submit.

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; admonition blocks
  confirmed to render as `class="admonition warning"` /
  `class="admonition important"` in the generated HTML

Backwards Compatibility:
- N/A -- additive content only, no headings renamed or removed, no
  existing anchors changed

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Plan-By: Gemini 3.6 Flash <noreply@google.com>
…locks

Two recurring support patterns had no self-serve documentation: users
whose account email didn't match their ASN's RDAP record had no way
to learn that adding a secondary email would unblock automated
affiliation approval, and users who inherited an ASN or lost contact
with their org's admins had no documented path to reclaim access.
Separately, faq.md's Technical section covered API and sync
mechanics but nothing about why object deletion sometimes gets
blocked.

Changes:
- docs/howto/authenticate.md: add "Organization affiliation & admin
  succession" section with two subsections -- "RDAP email
  verification" (how the RDAP match works, why adding a secondary
  email is faster than changing your login email) and "Claiming
  admin rights for an existing organization" (contacting a reachable
  admin first, falling back to RDAP-verifiable proof via support,
  and what to provide after an ASN acquisition)
- docs/faq.md: add "Why can't I delete my Facility, IX Prefix, or
  Point of Contact?" under Technical, covering all three deletion
  locks and how to resolve each

Content is sourced from the Admin Committee's public Deskpro
snippets already indexed in committee/admin/deskpro_snippets.md
(;mismatch-email, ;contacts-existing-admins, ;deletion-fac,
;deletion-ixpfx, ;deletion-poc).

Security:
- N/A -- documentation only; no new authentication mechanism
  described, just an explanation of an existing one

Testing:
- mkdocs build --strict passes with 0 warnings; new mailto and RDAP
  links verified to resolve

Backwards Compatibility:
- N/A -- additive content only, no headings renamed or removed

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Plan-By: Gemini 3.6 Flash <noreply@google.com>
committee/admin/deskpro_snippets.md and howto/query_the_api.md were
only reachable via inline links from their parent pages -- mkdocs
build listed both as present but not included in nav. Neither is a
broken build (mkdocs only warns at INFO level for this), but it
meant visitors browsing the site nav tree had no way to discover
either page.

Changes:
- mkdocs.yml: nest "Admin Committee" into "Overview" (index.md) and
  "Deskpro Snippets" (deskpro_snippets.md); nest "HOWTOs" into
  "Overview" (howtos.md) and "Query the API" (query_the_api.md)

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; both pages no
  longer appear in the "not included in nav" info listing

Backwards Compatibility:
- N/A -- existing page URLs are unchanged; this only adds entries
  to the nav tree

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Plan-By: Gemini 3.6 Flash <noreply@google.com>
The FAQ had no guidance for a recurring support scenario: a company
acquires another company and wants to bring the acquired
organization's PeeringDB resources under its own management. Users
hitting this had to file a support ticket cold, with no documented
process or expectations set in advance. This also complements the
"Organization affiliation & admin succession" section already added
to authenticate.md, which covers the adjacent but distinct case of
claiming admin rights when the original admins can't be reached.

Changes:
- docs/faq.md: add "Mergers and Acquisitions" under General, right
  after "Affiliation requests" -- covers the acquisition scenario,
  a worked example (Company A acquired by Company B), the support
  ticket process, and what speeds up review (writing from an email
  address that admins both organizations); cross-references
  authenticate.md's admin-succession guidance for the
  unreachable-admin case
- docs/howto/authenticate.md: add a reverse cross-reference from
  "Claiming admin rights for an existing organization" to the new
  FAQ entry, for the voluntary-handoff case where the acquired
  organization's admins are still reachable

Security:
- N/A -- documentation only

Testing:
- mkdocs build --strict passes with 0 warnings; both cross-reference
  anchors (#mergers-and-acquisitions,
  #claiming-admin-rights-for-an-existing-organization) confirmed
  present in the generated HTML

Backwards Compatibility:
- N/A -- new content only, no existing links or anchors changed

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.

1 participant