Repository navigation
docs: publish the guides, the READMEs and the API to GitHub Pages with DocFX - #138
Merged
Merged
Conversation
…h DocFX .github/workflows/docs.yml builds docs/*.md, the root README, the package READMEs, CHANGELOG.md and the API pages of the five run-time packages with DocFX 2.81.0 (pinned in .config/dotnet-tools.json, configured in site/), and deploys them on a push to main only. A pull request touching a page builds it with --warningsAsErrors and publishes nothing. The sources are not copied or edited. A link to a repository file that is not a page (design/, CONTRIBUTING.md) is a build resource, so DocFX checks it exists, and site/template rewrites it to a GitHub address at the built commit. The README's one directory link, spikes/, is now an absolute address on main. Spike: DocFX lists the members of C# 14 extension blocks as extension methods, on their static class and on the type they extend; the workflow fails if Option<T> or Result<T, TError> stops listing them. site/** joins the prose lane in tools/CiLanes, ProseReaderTests counts "site" as prose, and DocsSiteTests holds the menu to the README's tables and the API pages to the run-time packages. Decision 115. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reverted by the next commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Docs check failed on it with InvalidFileLink (run 40879451445). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#136 took decision 0115, so the docs site's record is renumbered to 0116: the file, its heading, its index row and every link to it. Both changelog lines and both index rows kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both changelog lines kept: #137's CMTK0009 entry and the docs site's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 29, 2026
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.
Closes #115
Problem
You could only read the consumer docs as Markdown on GitHub. That meant no menu beyond the README's Documentation table, no search across the 16 guides and 7 package READMEs, and no API reference outside an IDE.
Change
.github/workflows/docs.ymlbuilds the site with DocFX and deploys it to GitHub Pages on a push tomainonly.mainis the released state, so the site always shows the versiondotnet add packageinstalls. A pull request intomainorrelease/**that touches what a page is built from builds the site with--warningsAsErrorsand publishes nothing.site/holds the setup:docfx.jsonlists the content (docs/*.md,README.md,src/*/README.md,CHANGELOG.md) and the API metadata of the five run-time packages, read from one publish folder.toc.ymlis the menu: Home, Guides in the README's order, Reference (the package READMEs), API, Changelog.template/conceptual.extension.jsdoes the link rewrite described below.DocFX 2.81.0 is pinned in
.config/dotnet-tools.json.The sources are not copied or edited. A link to a repository file that is not a page (
design/,CONTRIBUTING.md,AGENTS.md,SECURITY.md,LICENSE) is added to the build as a resource, so DocFX still checks the file exists. The template then rewrites it, at build time, tohttps://github.com/.../blob/<built commit>/.... The workflow deletes the resource copies from the output. A build without--metadata _commit=<sha>fails with a message saying what to pass.One page edit: the README's directory link
spikes/becamehttps://github.com/CaffeinatedCoder/CodoMetis.TypeKit/tree/main/spikes. DocFX can't check a directory link;DocumentationLinkTestschecks the absolute address.Spike: DocFX lists the members of C# 14 extension blocks. Each one appears as an extension method on its static class and under "Extension Methods" on the type it extends, with its XML docs. The gaps, recorded in the decision:
OrDefault,OrNull) appear only onOption's page.New(), shows asGuidValueExtensions.New<TSelf>().So the API pages ship. A workflow step fails if
Option<T>'s orResult<T, TError>'s page stops listing its extensionSelect.CI lanes:
site/**joins the prose class intools/CiLanes, because the docs workflow and the conventions tests read it and nothing is built from it.ProseReaderTestsnow counts a"site"literal as prose. The new workflow stays "unlisted" like every other workflow (decision 113). TheSelectionTestsrows cover the new paths.DocsSiteTests(conventions, prose suite) holds:Docs: decision record 0116, a README paragraph linking the site, a changelog line, and a CONTRIBUTING section on how the site is published and how a second line (
/2.x/,/3.x/) would be added.No claim in
test/oracles/changes: the site adds no public member, and the new README sentence promises nothing about the library's API.GitHub Pages is configured: Source is "GitHub Actions" (the API reports
build_type: workflow,https://caffeinatedcoder.github.io/CodoMetis.TypeKit/). The first live deploy happens when the 2.3.0 release merges intomain; the README and changelog links to the site go live then.ADR number: the record is 0116; #136 merged 0115 into
release/2.3.0first, and this branch has merged it.Tests
dotnet docfx site/docfx.json --warningsAsErrors(exit 255); without them the build reports 0 warnings:InvalidFileLink);InvalidBookmark);InvalidFileLink, through the resources).InvalidFileLink ... no-such-page.md, exit 255. 546ac9c removed it.site/**back out of the prose class fails the 3 new rows.DocsSiteTests/ProseReaderTests: 17 tests pass. Seeding a guide dropped fromtoc.yml, a package dropped fromdocfx.json, and"site"dropped from the prose detection fails one test each.🤖 Generated with Claude Code