feat(docs): prose gate via manuscript-tools - em-dashes and invisible chars, pinned - #138
Merged
Merged
Conversation
… chars, pinned The sibling library manuscript-tools (PyPI, pinned 0.11.0) carries the invisible-characters check this engine's W-INVISIBLE-CHAR lint was seeded from, plus the em-dash ban the blog STYLE rules demand. The docs prose is now gated by it instead of by convention: make prose-check (wired into CI) runs ms-check over docs/ and README with no-dashes + no-invisible-chars active; the German-prose and whitespace heuristics are disabled via pyproject.toml - measured first: they produced 1200+ hits on legitimate English Markdown. Guards, each proven with a seeded probe: - non-empty floor before trusting a green run (ms-check exits 0 on an empty file set, manuscript-tools#9) - tripped in an empty tree; - a seeded em-dash and a seeded zero-width space each turn the gate red; the clean rerun is green; - STYLE.md is excluded (it SHOWS the banned characters), the CHANGELOG stays out (old entries describe a point in time). First measured run found a real defect: a raw U+0000 in a code example of docs/proposals/author-ergonomics-app-track.md (join separator quoted as the real byte - the engine#135 pattern, third instance today). Now spelled as the escape; the file is text again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Asters Auftrag: manuscript-tools in die Dev-Deps uebernehmen. Umsetzung als Prosa-Gate:
Zuschnitt (gemessen, nicht angenommen)
Roher
ms-check-Lauf ueber die Engine-Doku: 1200+ Treffer, fast alles Rauschen fuer ein englisches Markdown-Korpus (no-double-spaces1211,non-german-quotes130,broken-formatting75). Aktiv bleiben die zwei Regeln, die hier WAHR sind:no-dashes(die STYLE.md-Em-Dash-Regel) undno-invisible-chars(die W-INVISIBLE-CHAR-Klasse auf die eigene Prosa). Abschaltung viapyproject.toml[tool.manuscript-tools](einzige Funktion der Datei; verhindert zugleich, dass eine Eltern-Config hineinwandert - ms-check sucht aufwaerts).Echter Fund im ersten Messlauf
Rohes U+0000 in einem Codebeispiel von
docs/proposals/author-ergonomics-app-track.md(Join-Separator als echtes Byte statt Escape) - die engine#135-Klasse, DRITTE Instanz heute, und ausserhalb der Reichweite des Quellen-Gates (das deckt src/bin/scripts). Gefixt (Escape-Text), Datei ist wieder Text.Absicherungen, je mit geseedeter Probe belegt
ms-checkexitet 0 auf leerer Dateimenge (manuscript-tools#9, fail-open) - der Floor brach in einem leeren Baum mit Fehler 2 ab.STYLE.md(EN, und der DE-Pfad vorsorglich) ausgeschlossen: die Datei ZEIGT die verbotenen Zeichen. CHANGELOG bleibt draussen: alte Eintraege beschreiben einen Zeitpunkt (4 historische Em-Dashes in 0.2/0.3-Notizen bleiben stehen).manuscript-tools==0.11.0: ein floatender Linter ist ein Gate, dessen Regeln sich unter dem Repo aendern.Gegenrichtung
Der Abgleich fand auch eine Luecke DRUEBEN: checker+sanitizer von manuscript-tools sind beide blind fuer den C1-Bereich U+0080-U+009F (cp1252-Mojibake-Klasse, die die Engine deckt) - gemeldet als astrapi69/manuscript-tools#11.
make release-checkgruen;make prose-checklokal mit venv belegt, CI installiert das Pin selbst.🤖 Generated with Claude Code