Skip to content

docs: restructure navigation into Configuration/Deployment/API/Operations/Background - #4472

Draft
reinkrul wants to merge 5 commits into
masterfrom
docs/restructure-navigation
Draft

docs: restructure navigation into Configuration/Deployment/API/Operations/Background#4472
reinkrul wants to merge 5 commits into
masterfrom
docs/restructure-navigation

Conversation

@reinkrul

@reinkrul reinkrul commented Sep 4, 2026

Copy link
Copy Markdown
Member

Summary

Restructures the Sphinx docs nav from Integrating / Deployment & Configuration / Technology / Development / Other into:

  • Configuration — Options, Use case configuration (Access policies, Verifiable Credentials, Discovery), Legacy did:nuts configuration
  • Deployment — Recommended deployment, Clustering, Docker, Storage, Monitoring, Logging (+ audit logging merged in), Security Considerations, Multi-tenancy/SaaS
  • API — Reference (OpenAPI specs), Authentication, Issuing/searching Verifiable Credentials
  • Operations (new) — Migration (v5→v6), Key rotation, Certificate revocation (CRL) handling, Changing the node's base URL, CLI reference
  • Background (new, holding pen) — did.rst, jsonld.rst, security_model.rst, oauth.rst, supported-protocols-formats.rst — conceptual/reference material pulled out of the operator-facing flow, to be relocated later
  • Release Notes — unchanged, own section

Changelog (moves/splits/merges, so this doesn't need line-by-line review)

  • deployment/configuration.rstconfiguration/options.rst; did:nuts/gRPC options table split out to configuration/legacy-did-nuts.rst; added a "Choosing the node's URL" section.
  • deployment/policy.rstconfiguration/usecase/access-policies.rst, deployment/verifiable-credentials.rstusecase/verifiable-credentials.rst, deployment/discovery.rstusecase/discovery.rst.
  • deployment/certificates.rst split 4 ways: gRPC client-auth mechanics → configuration/legacy-did-nuts.rst; did:x509 trust config + background → background/did.rst's existing did:x509 section (a standalone "Certificates (did:x509)" use-case page was cut after review — it only pointed at three other pages without adding anything of its own); CRL/soft-fail behavior → new operations/certificate-revocation.rst.
  • deployment/domain.rst split: "choosing" guidance → configuration/options.rst (and into the url flag's help text in core/server_config.go, since that's the source of truth for the generated options table); "changing" procedure → new operations/base-url-change.rst.
  • integrating/version-incompatibilities.rst split: DID-methods/API-version guidance merged into operations/migration.rst; "Publishing services" section merged into configuration/legacy-did-nuts.rst. Added a matching deprecation note to the VDR v1 OpenAPI spec.
  • deployment/audit-logging.rst merged into deployment/logging.rst.
  • integrating/{api,api-authentication,vc}.rstapi/{reference,authentication,verifiable-credentials}.rst.
  • deployment/{migration,key-rotation,cli-reference}.rstoperations/.
  • deployment/oauth.rst, technology/{did,jsonld,security_model}.rst, integrating/supported-protocols-formats.rstbackground/.
  • technology/saas.rstdeployment/saas.rst.
  • docs/pages/development/*.rst and contribute.rst → root DEVELOPMENT.md, RELEASING.md, CONTRIBUTING.md (matching the existing COLLABORATORS.md/SECURITY.md convention), plus an API-guidelines section appended to docs/README.md. Verified against current Makefile targets, build tags, and CI workflow filenames — fixed one stale filename along the way. contact.rst dropped.
  • docs/generate_docs.go output paths updated for the moved generated tables (server_options*.rst, cli-reference.rst); tables regenerated.
  • Dropped the dev-only "regenerate this table via make docs" note from the two operator-facing options pages (wrong Makefile target too — it's cli-docs); folded proper guidance into DEVELOPMENT.md.
  • Fixed a sentence in the legacy did:nuts client-authentication section that only made sense next to the did:x509 content it used to sit beside before this PR split them apart.
  • Fixed two pre-existing broken doc references uncovered while moving files: README_template.rst's dead docs/pages/development/1-development.rst include, and a dead readthedocs link in docs/_static/didman/v1.yaml.

Test plan

  • go build ./... passes
  • go test ./docs/... ./core/... passes
  • Full local Sphinx build succeeds with only 4 pre-existing warnings, none new (a dangling openid4vci ref and two release-notes formatting nits predate this change and are out of scope) — confirmed matching on the actual Read the Docs build for this branch
  • README.rst regenerated from README_template.rst via rst_include and diff reviewed

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG

…ions/Background

Reorganizes the Sphinx docs from Integrating/Deployment & Configuration/
Technology into five top-level sections matching how operators actually
need to find things: Configuration (server options, per-use-case config,
legacy did:nuts config), Deployment, API, Operations (migration, key
rotation, certificate maintenance, base-URL changes, CLI reference), and
Background (conceptual reference material, to be relocated later).

Along the way: split certificates.rst and version-incompatibilities.rst
across their new homes, merged audit-logging.rst into logging.rst, moved
contributor/release docs out of the Sphinx tree into root-level Markdown
(DEVELOPMENT.md, RELEASING.md, CONTRIBUTING.md) following the existing
COLLABORATORS.md/SECURITY.md convention, and dropped the now-redundant
contact.rst. Updated docs/generate_docs.go's hardcoded output paths and
regenerated the options/CLI reference tables, expanded the `url` flag's
help text with the domain-selection guidance previously only in prose,
and fixed two stale doc links (README_template.rst's development include,
a dead readthedocs link in didman/v1.yaml) uncovered while moving files.

Assisted by AI
Claude-Session: https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG
@qltysh

qltysh Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Qlty


Coverage Impact

This PR will not change total coverage.

Modified Files with Diff Coverage (2)

RatingFile% DiffUncovered Line #s
Coverage rating: C Coverage rating: C
core/server_config.go100.0%
Coverage rating: F Coverage rating: F
docs/generate_docs.go0.0%59-141
Total50.0%
🤖 Increase coverage with AI coding...
In the `docs/restructure-navigation` branch, add test coverage for this new code:

- `docs/generate_docs.go` -- Line 59-141

🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

…t sentence

The "regenerate this table via make docs" note is a maintainer instruction,
not something a node operator needs to see, and referenced a Makefile
target that no longer exists (it's cli-docs). Dropped it from the two
operator-facing options pages and folded the instruction into
DEVELOPMENT.md's existing regeneration section instead.

Also fixed a sentence in the legacy did:nuts client-authentication section
that only made sense next to the did:x509 section it used to sit beside
in certificates.rst before this PR split them into separate pages ("Nuts-
node versions before v6 only use..." read as an orphaned historical claim
once the did:x509 contrast it was set up against moved elsewhere).

Assisted by AI
Claude-Session: https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG
It was three sentences that only pointed to Discovery, Access policies,
and Certificate revocation handling without adding anything of its own.
Folded its one real piece of content (trust is configured via Discovery
+ Policy definition files) into background/did.rst's existing did:x509
section, which already explains why did:x509 uses certificates as its
root of trust.

Assisted by AI
Claude-Session: https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG
Key rotation: the page claimed the rotation procedure was "two fold...
performed independently" but only ever documented one step (adding a
key) — removal was cut when it was found unsupported, but the "two fold"
framing and the orphaned "1." numbering were never cleaned up. Reframed
the page around what's actually supported: adding a new key. Removal
still isn't supported, so this isn't full rotation yet, but it's real,
useful, working operator guidance and worth keeping.

Release notes: the Unreleased section used Markdown-style "## New
features" / "## Security" headers, which don't render as headings in
RST (Sphinx renders them as literal text) and don't match every other
section in the file, which uses proper underlined RST headers.

Assisted by AI
Claude-Session: https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG
The node's URL section covers a decision independent of the rest of the
server options table (it doesn't change, unlike most options, and has
its own operational procedure for changing it), so it gets its own
Configuration page instead of being a subsection of Options. Also
dropped "Choosing" from the title.

Dropped `nuts crypto fs2vault` from the generated CLI reference and the
Vault migration guidance in storage.rst — it's not something we want
operators reaching for right now. The command itself is untouched;
this only stops recommending it in docs.

Assisted by AI
Claude-Session: https://claude.ai/code/session_01VJiY69SPaAf1mxERAWK1SG
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