From 23ed3e92ab4e7bc4242563dda8aa313ef5947062 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sun, 18 Oct 2026 07:25:06 +0200 Subject: [PATCH] docs: mend a torn sentence in the tools page --- tests/test_audit_regressions.py | 23 +++++++++++++++++++++++ wiki/tools.md | 4 ++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index aa478931..cd1d6309 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -4277,5 +4277,28 @@ class ToolReferenceCountsMatchTheirArtifacts(unittest.TestCase): self.assertEqual(int(match.group(1)), len(derivable)) + +class WikiProseHasNoTornSentence(unittest.TestCase): + """tools.md read "replaces each destination atomically. The shell and / + Both one-liners verify...": half of an old sentence left in front of + its rewrite, on the page that explains the installer's trust boundary.""" + + STARTERS = {"Both", "The", "This", "It", "A", "An", "Each", "Every", "When", + "If", "They", "These", "That", "There"} + + def test_no_line_ends_on_a_function_word_before_a_new_sentence(self): + for page in sorted((ROOT / "wiki").glob("*.md")): + lines = page.read_text(encoding="utf-8").splitlines() + in_code = False + for number, (line, following) in enumerate(zip(lines, lines[1:]), 1): + if line.startswith("```"): + in_code = not in_code + if in_code: + continue + if (re.search(r"\b(and|or|the|a|an|of|to)$", line.rstrip()) + and following.split(" ")[0] in self.STARTERS): + self.fail(f"{page.name}:{number} ends mid-sentence: {line.strip()!r}") + + if __name__ == "__main__": unittest.main() diff --git a/wiki/tools.md b/wiki/tools.md index c89bea12..76c4dd32 100644 --- a/wiki/tools.md +++ b/wiki/tools.md @@ -585,8 +585,8 @@ irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex `install.py` auto-detects the user's platform by checking config files, downloads the missing files from an immutable release revision, verifies their -SHA-256 and SHA-1, and replaces each destination atomically. The shell and -Both one-liners verify the downloaded Python installer against the SHA-256 +SHA-256 and SHA-1, and replaces each destination atomically. Both +one-liners, shell and PowerShell, verify the downloaded Python installer against the SHA-256 embedded in their bootstrap before running it. Copies into standalone-emulator directories are opt-in through `--standalone-copies`. Manifest entries with no available payload are reported as safely omitted; they are never replaced by a