Found while fixing #601.
check-docs-current runs just gen-html and then fails if docs/ has a diff. But docs/community_umap.html is produced by a different recipe — just gen-umap (communitymech generate-umap) — which the gate never runs.
So the published UMAP page can drift arbitrarily far from src/communitymech/templates/community_umap.html and the gate stays green, because nothing regenerates it and therefore nothing produces a diff.
Demonstrated, not theorised
While re-stepping the category palette for #601 I edited the template, ran just gen-html, and check-docs-current reported ✅ docs/ matches the KB — while the published page still served the old colours:
$ grep "'RHIZOSPHERE'" docs/community_umap.html
'RHIZOSPHERE': '#2a78d6' <- the old value, after gen-html + a green gate
Only an explicit just gen-umap updated it.
This is the gate's own documented failure mode
The recipe carries a comment from the #442 review about exactly this shape of bug:
render_all used to swallow a per-record exception, leave the previous page in place, and still print "✅ Rendered 312" — so the tree had no diff and this gate reported it current, green in exactly the case where the regeneration it gates on had not happened
Same sentence applies here with gen-umap substituted. The orphan-page check added then was a fix for one instance of the pattern, not the pattern.
The fix is safe
The obvious worry is that a UMAP/PaCMAP embedding is stochastic, so gating on its output would be flaky. It is not — checked by running just gen-umap twice and diffing:
DETERMINISTIC — two runs identical
So check-docs-current can simply run gen-umap alongside gen-html; the existing git status --porcelain docs/ check already covers the file.
Suggested
- add
just gen-umap to check-docs-current
- and, since this is the second instance of the pattern, state the invariant in the recipe: every generator whose output is committed under
docs/ must run here, so adding a generator without adding it to the gate is a visible omission rather than a silent one.
Found while fixing #601.
check-docs-currentrunsjust gen-htmland then fails ifdocs/has a diff. Butdocs/community_umap.htmlis produced by a different recipe —just gen-umap(communitymech generate-umap) — which the gate never runs.So the published UMAP page can drift arbitrarily far from
src/communitymech/templates/community_umap.htmland the gate stays green, because nothing regenerates it and therefore nothing produces a diff.Demonstrated, not theorised
While re-stepping the category palette for #601 I edited the template, ran
just gen-html, andcheck-docs-currentreported ✅ docs/ matches the KB — while the published page still served the old colours:Only an explicit
just gen-umapupdated it.This is the gate's own documented failure mode
The recipe carries a comment from the #442 review about exactly this shape of bug:
Same sentence applies here with
gen-umapsubstituted. The orphan-page check added then was a fix for one instance of the pattern, not the pattern.The fix is safe
The obvious worry is that a UMAP/PaCMAP embedding is stochastic, so gating on its output would be flaky. It is not — checked by running
just gen-umaptwice and diffing:So
check-docs-currentcan simply rungen-umapalongsidegen-html; the existinggit status --porcelain docs/check already covers the file.Suggested
just gen-umaptocheck-docs-currentdocs/must run here, so adding a generator without adding it to the gate is a visible omission rather than a silent one.