docs(api): publish Doxygen API reference to GitHub Pages + ADR-0027 (M7.1)#53
Merged
Conversation
…M7.1) Closes ROADMAP item 7.1 — the rendering half ADR-0013 §4–§5 deferred to this milestone. The public-header Doxygen contract is now built into a dependency-free static HTML site, gated warn-as-error on every PR and published to GitHub Pages on push to master. - ADR-0027 records the pipeline decision: Doxygen HTML -> GitHub Pages via the official Pages Actions, no external doc toolchain (MkDocs/Sphinx unified site deferred post-v1.0), version single-sourced from version.hpp, and a gate that validates documentation correctness (doc-rot, stale @param, broken refs) rather than ceremonial exhaustiveness — refining ADR-0013 §5. - docs/doxygen/Doxyfile: checked-in partial config (EXTRACT_PRIVATE=NO, public headers only, WARN_AS_ERROR=FAIL_ON_WARNINGS, HAVE_DOT=NO, treeview). - docs/doxygen/mainpage.md: hand-written landing page linking out to the GitHub-rendered narrative. - .github/workflows/docs-site.yml: build gate on PRs (no deploy), build+deploy on master via upload-pages-artifact / deploy-pages. - Three header comments use the Doxygen % auto-link escape (::%operator new / ::%operator delete) to silence spurious unresolved-link warnings. Comment-only. - Doc sync: ROADMAP 7.1 flipped, ADR index row, README badge + API-reference pointer, CHANGELOG Unreleased. Verified locally with Doxygen 1.10.0: zero warnings, build/doxygen/html/index.html generated. One-time maintainer action: enable GitHub Pages (Source: GitHub Actions) before the first master deploy; the PR gate is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A fresh CI checkout has no build/ directory; Doxygen creates the leaf OUTPUT_DIRECTORY but not its missing parent, so the gate failed with "Output directory 'build/doxygen' does not exist and cannot be created". Locally it passed only because prior CMake builds had created build/. mkdir -p build/doxygen up front. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes ROADMAP item 7.1 — Doxygen-generated API documentation published as a static site — the first step toward
v1.0.0. The public-header Doxygen contract is now built into a dependency-free static HTML site, gated warn-as-error on every PR and published to GitHub Pages on push tomaster.Motivation
ADR-0013 settled the documentation format (Doxygen for the API contract, Markdown for the narrative) but explicitly deferred the rendering pipeline to M7.1 (§4: "the final pick is M7.1's choice"; §5 sketched a warn-as-error Doxyfile "added in M7.1"). This PR makes that decision and implements it.
Changes
PROJECT_NUMBERsingle-sourced fromversion.hpp, and a gate that validates documentation correctness (malformed commands, unresolved cross-references, stale@paramnames) rather than ceremonial exhaustiveness — refining ADR-0013 §5.docs/doxygen/Doxyfile— checked-in partial config: public headers only (EXTRACT_PRIVATE = NO),WARN_AS_ERROR = FAIL_ON_WARNINGS, dependency-free HTML (built-in theme + treeview,HAVE_DOT = NO),PBR_MEMORY_POOL_DIAGNOSTICS=1predefined so the ADR-0019 iterator surface renders.docs/doxygen/mainpage.md— hand-written landing page linking out to the GitHub-rendered narrative..github/workflows/docs-site.yml— builds the reference as a warn-as-error gate on PRs (no deploy, so PRs are never blocked by Pages config) and builds + deploys to Pages onmasterviaupload-pages-artifact/deploy-pages.%auto-link escape (::%operator new/::%operator delete) to silence spurious unresolved-link warnings on the global operators. Comment-only — no API or behavior change.docs-sitebadge + API-reference pointer, CHANGELOGUnreleased.Design Patterns
Verification
%-escapes inside existing Doxygen blocks; no code change.clang-tidyclean on the diff — comment-only header edits.ERROR SUMMARY: 0 errors from 0 contexts— N/A, no runtime change.WARN_AS_ERROR = FAIL_ON_WARNINGS;build/doxygen/html/index.htmlgenerated.Documentation Impact
docs-sitebadge + published API-reference pointer.UnreleasedAdded (M7.1) + Changed (M7.1).Before the first
masterdeploy, enable GitHub Pages: Settings → Pages → Source: GitHub Actions. The PR build gate works without it; only thedeployjob onmasterrequires it (ADR-0027 Consequences).