Skip to content

feat(docs): prose gate via manuscript-tools - em-dashes and invisible chars, pinned - #138

Merged
astrapi69 merged 1 commit into
mainfrom
feat/prose-gate-manuscript-tools
Aug 6, 2026
Merged

feat(docs): prose gate via manuscript-tools - em-dashes and invisible chars, pinned#138
astrapi69 merged 1 commit into
mainfrom
feat/prose-gate-manuscript-tools

Conversation

@astrapi69

Copy link
Copy Markdown
Owner

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-spaces 1211, non-german-quotes 130, broken-formatting 75). Aktiv bleiben die zwei Regeln, die hier WAHR sind: no-dashes (die STYLE.md-Em-Dash-Regel) und no-invisible-chars (die W-INVISIBLE-CHAR-Klasse auf die eigene Prosa). Abschaltung via pyproject.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

  • Nicht-leer-Floor vor dem Vertrauen in Gruen: ms-check exitet 0 auf leerer Dateimenge (manuscript-tools#9, fail-open) - der Floor brach in einem leeren Baum mit Fehler 2 ab.
  • Geseedeter Em-Dash: Gate rot. Geseedetes U+200B: Gate rot. Sauberer Wiederholungslauf: gruen (18 docs + README).
  • 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).
  • CI-Pin 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-check gruen; make prose-check lokal mit venv belegt, CI installiert das Pin selbst.

🤖 Generated with Claude Code

… 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>
@astrapi69
astrapi69 merged commit 07dff36 into main Aug 6, 2026
3 checks passed
@astrapi69
astrapi69 deleted the feat/prose-gate-manuscript-tools branch August 6, 2026 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants