#!/usr/bin/env python3 """Which negatives in this corpus are about the WORLD, and which about an INSTRUMENT? The mission's third classification is "undecodable, WITH REACH" -- looked here, here and here. A negative written as a property of the subject when what was established is a property of the method is the failure that put "an individual SE's audio is not extractable yet" at the head of a page whose own later section located the waves, and left it quoted in INDEX for days (data/index-vs-pages-audit.txt). sylpheed-port swept their own docs for this and came back clean. Mine has not been swept. This finds the candidate sentences; ⚠️ IT DOES NOT JUDGE THEM. A negative IS allowed to be about the world -- "a 24-bit modulus cannot name an 8-character identifier uniquely" is a fact, not a limitation of a tool. Every hit is read. Scored, so the reading is ordered rather than exhaustive: a sentence that already names an instrument, a search, or a reach is very likely fine. impossibility_scope.py [--all] """ import re, sys from pathlib import Path CLAIM = re.compile( r"[^.\n]*\b(?:not (?:extractable|recoverable|available|possible|decodable|knowable)" r"|cannot be (?:\w+ ){0,3}\w+|is impossible|are impossible|no \w+ exists" r"|nowhere on the disc|unrecoverable|not on the disc)\b[^.\n]*(?:\.|$)", re.I) # words that SCOPE a negative to a method, a search or a reach # ⚠️ "yet" and "so far" were in this list and are NOT scopes -- they are temporal # HEDGES that name no instrument, no search and no place looked. That is exactly # what made "an individual SE's audio is not extractable yet" read as bounded while # claiming a property of the audio, and it is why this tool's own control failed # twice before the list was right. A scope names a METHOD or a PLACE. SCOPED = ("looked", "searched", "scan", "probe", "reach", "instrument", "harness", "this container", "with the tools", "our reader", "from the file", "from the disc", "from the image", "from the hash", "by sorting", "by counting", "by re-running", "by key list", "attack", "exhaustive", "we could not", "i could not", "could not find", "not found by", "tested") files = sorted(Path("docs").rglob("*.md")) hits = [] for f in files: if f.name in ("REFUTED.md", "METHOD.md"): continue # these are ABOUT dead claims; quoting one is not asserting it for n, line in enumerate(f.read_text(errors="replace").splitlines(), 1): for m in CLAIM.finditer(line): s = m.group(0).strip() if len(s) < 30: continue scoped = sum(1 for w in SCOPED if w in s.lower()) hits.append((scoped, f, n, s)) hits.sort(key=lambda h: h[0]) show = hits if "--all" in sys.argv else [h for h in hits if h[0] == 0] print(f"{len(hits)} negative claim(s); {sum(1 for h in hits if h[0]==0)} name no " f"instrument, search or reach in the same sentence.\n") for scoped, f, n, s in show[:40]: print(f" {f}:{n}") print(f" {s[:150]}") # 🔴 CONTROL, and it must pass before any output above is believed. The one known # instance of this defect in this corpus was a HEADING -- "an individual SE's audio # is not extractable yet" -- and the first version of this regex required a # sentence-ending period, so it matched NOTHING in any heading and would have # reported the corpus clean. Run the control after every edit to the pattern. KNOWN = "## \u2754 And a new negative: an individual SE's audio is not extractable yet" _m = CLAIM.search(KNOWN) print("\ncontrol -- the known true positive (a heading, since fixed):") if not _m: print(" \U0001F534 CONTROL FAILED: the pattern does not match it. Nothing above means anything.") else: _sc = [w for w in SCOPED if w in _m.group(0).lower()] print(f" matched; scope words {_sc} -> {'HIDDEN by scoring' if _sc else 'shown'}") if _sc: print(" \U0001F534 CONTROL FAILED: scored as scoped, so it would not appear in the default listing.") # 🔴 The control above PRINTED its failure and this script exited 0 -- so a broken # control was indistinguishable from a passing one to anything but a human reading # the last line. Fixed 2026-08-31, the same day the tool was written, after # sylpheed-port reported the identical shape in their own suite. The LISTING is a # prompt and never fails; the CONTROL failing is a hard error, because every hit # above is meaningless without it. if (not _m) or [w for w in SCOPED if w in _m.group(0).lower()]: sys.exit(2)