Skip to content

check-docs-current does not regenerate the UMAP page, so it can drift indefinitely #602

Description

@realmarcin

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions