Skip to main content

The site navigates less than it publishes

Every tracked document is published, and one autogenerated tree over the content root put all of it in the navigation too. A reader looking for how to define a block scrolled past the release process and forty settled choices, because publishing a page and offering it to a browser had been the same act.

They are separated now. contributing/ and decisions/ are built, served and linkable, and absent from the sidebar. The reference and concept pages cite decisions thirty times, and a citation is how anyone meets one — a page raises a question and names the file that answers it.

Excluding them from the build was rejected: it breaks all thirty citations, and onBrokenLinks: throw would refuse the site rather than ship them dead. Nothing about the published surface changes here, which is what keeps The site publishes the repository's markdown intact — that decision governs what exists at a URL, and this one governs what a sidebar offers.

The cost is the property the autogenerated tree had for free: whatever the directory held, the sidebar showed. Naming groups explicitly is a second list beside the corpus, which is the shape that decision rejected for the published surface and which rots the same way here. tests/sidebarCoverage.test.mjs is what makes it not rot — a directory added later fails until it is named browsable or deliberately unlisted, and a name with nothing behind it fails too. Ordering and grouping inside a group stay in the documents, so the list is four strings rather than a tree.