Skip to content

ADR 0014: Docs site on MkDocs with GitHub Pages

  • Status: Accepted
  • Date: 2026-05-20
  • Authors: rmednitzer
  • Builds on: n/a

Context

The project ships a lot of long-form documentation: ADRs, STPA artefacts, conformance posture, model cards, hardware profiles. A docs site lets a reader navigate them without git clone. Sphinx is heavier than needed; raw markdown on the GitHub web view does not render mermaid diagrams.

Decision

The docs site is MkDocs (Material theme) built with mkdocs build --strict. Mermaid diagrams render via mkdocs-mermaid2-plugin. Python docstrings render via mkdocstrings[python]. The site builds in CI (.github/workflows/docs.yml) and deploys to GitHub Pages on push to main and on tag pushes.

The docs/ tree is the source. scripts/gen_*.py regenerate the tool reference, the ADR index, and the backlog summary so the site stays in sync with code.

Consequences

Easier: readers land on a navigable site; mermaid diagrams render; the strict build catches dead links.

Harder: a markdown file outside the nav causes a strict-build failure. The maintainer must keep mkdocs.yml in sync.

Revisit triggers

  • The site grows beyond what GitHub Pages can serve.
  • A second docs target (e.g. a PDF safety case) becomes a requirement.