Site build leaves pages whose source was deleted

Table of Contents

The site build publishes every org file it finds, but it does not delete built HTML whose source has gone. A page that is renamed, split or retired keeps serving its old content from the previous build.

Found on 2026-08-26. The skill architecture page was split into a hub and eight spokes. One spoke, skill_agents.org, was then split again and its file deleted. Its built page kept serving until it was removed by hand.

This matters more than a stale file usually would. The graph is held as a Zettelkasten, and a reader who follows an old link reaches a page that describes a state which no longer exists. That is the same failure the design document type exists to prevent, reaching the reader by a different route.

The extent was measured on 2026-08-26. The site holds 5241 built pages. Of these, 242 have no source file, which is about one page in twenty-two.

The largest groups are agile artefacts that moved. Ninety-nine are backlog captures that were promoted out of the inbox, and their old pages still serve alongside the stories they became. Twenty-three belong to a sprint 24 story whose folder was reorganised. Four are the modelling pages of ores.controller, a component decommissioned in commit 10e66ed7c4, which still publishes a component overview describing a service that no longer exists.

Two related cases share the shape. The skills deployment does not remove stale directories from the deployed skills folder either, which the skills inventory already warns about. The org-roam graph has the converse fault, recorded separately: an entire knowledge cluster exists on disk and does not resolve.

A single sweep that removes built output with no source would cover the site and the skills bundle. The check is cheap: list the built pages, map each back to its source path, and report the ones with no source. It should run in the audit channel rather than on demand, because nobody notices this class of fault from the inside.

This page is a capture in the inbox bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.

1. What

(One paragraph: the idea.)

2. Why

(Motivation, problem being solved, related context.)

3. References

4. See also

Emacs 29.3 (Org mode 9.6.15)