cde832eaca
`tools/lint_gate.py` now also runs `D:\orisys_ws\scripts\doc_lint.py`, the workspace's single documentation gate, alongside Ruff: - changed Markdown by default, the whole corpus under --all - `--files` names Python files explicitly, so it skips the doc gate - `--no-docs` opts out - the docs verdict is reported even when Ruff is missing, so a missing linter cannot hide it (the exit code still signals the environment problem) The doc rules live in exactly one place on purpose: this file is duplicated across three repositories and had already drifted, so adding a fourth copy of lint logic would repeat the mistake. Failing checks are the documentation budget, inventory membership, a declared kind, unresolved mojibake, paragraph walls, and duplicate explanations across documents. Emphasis density is advisory only - measured as a continuum from 12% to 48% across the corpus, so no threshold separates signal from noise. Pre-existing oversized documents are recorded as budget-exempt with a written reason in D:\orisys_ws\docs\inventory.json, and pre-existing findings are baselined there, so this gate is red only for new regression. With Ruff unavailable in the current environment the doc half still reports, which is how it was verified.