Adds make check-docs-prose as a cross-repo guardrail: docs/ holds only
human-readable prose (.md, .markdown, images, .gitkeep). Non-prose
artifacts — generated data, JSON/TSV output, copy-paste examples,
scaffolding templates — belong under dist/, examples/, templates/, or
a top-level domain-specific directory.
Wires into CI alongside the existing engine-free drift gates
(manifest-check / skill-check / doctest-check). Engine-free, fast,
find-based. Currently green (m-stdlib's docs/ is already prose-only —
this is preventive, not corrective).
Summary
Adds make check-docs-prose as a cross-repo guardrail: docs/ holds only human-readable prose (.md, .markdown, images, .gitkeep). Non-prose artifacts — generated data, JSON/TSV output, copy-paste examples, scaffolding templates — belong under dist/, examples/, templates/, or a top-level domain-specific directory.
Why
After the Phase 0 cross-repo cleanup (m-standard PR #6, m-cli PR #9, m-stdlib PR #4) it became clear the recurrence risk is at the human-curation layer — no Python tool wrote to docs/; the violations were one-time commits. A simple find-based gate prevents future regressions without depending on agent attention.
Same target lands in all four repos so any future contributor (or future automation) gets a consistent fail-fast signal.
Wiring
Test plan