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.