re: sweep for negatives stated as world-properties -- the tool failed its control twice first
The mission's third classification is 'undecodable, with reach', and a negative written about the subject when it is about 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. The tool failed its control -- the one known instance -- twice. First the pattern required a sentence-ending period, and headings do not end in periods, so it matched nothing in any heading and a clean report would have been vacuous. Then the scoring hid it, because 'yet' was in my list of scope words. It is not one: 'yet' and 'so far' are temporal hedges naming no instrument, no search and no place looked, which is exactly what made that heading read as bounded. With the control passing, the two amplifier files are clean: every INDEX and HANDOFF hit read, all legitimate. 130 unscoped candidates remain unread corpus-wide, and the regex has a high false-positive rate -- recorded as reach, not as a clean bill. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
45
docs/re/data/impossibility-scope-sweep.txt
Normal file
45
docs/re/data/impossibility-scope-sweep.txt
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Are this corpus's negatives about the WORLD or about an INSTRUMENT?
|
||||||
|
# 2026-08-31. The sweep I said I owed after fixing one instance by hand.
|
||||||
|
#
|
||||||
|
# The mission's third classification is "undecodable, WITH REACH". 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 had located the waves, and
|
||||||
|
# left INDEX quoting it for days. sylpheed-port swept their tree and reported
|
||||||
|
# clean; this is mine.
|
||||||
|
#
|
||||||
|
# TOOL: tools/re-capture/impossibility_scope.py
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
# 🔴 THE TOOL FAILED ITS OWN CONTROL TWICE, and the control is the only reason
|
||||||
|
# this sweep means anything. The control is the ONE KNOWN true positive -- the
|
||||||
|
# heading I fixed by hand this week.
|
||||||
|
#
|
||||||
|
# FAILURE 1: the pattern required a sentence-ending period. HEADINGS DO NOT END
|
||||||
|
# IN PERIODS, and the known instance was a heading. It matched nothing in any
|
||||||
|
# heading in the corpus, so a "clean" report would have been vacuous.
|
||||||
|
#
|
||||||
|
# FAILURE 2: with that fixed, the scoring HID it. "yet" was in my list of words
|
||||||
|
# that scope a negative to a method. ⚠️ IT IS NOT ONE. "yet" and "so far" are
|
||||||
|
# temporal HEDGES that name no instrument, no search and no place looked -- and
|
||||||
|
# that is precisely what let "not extractable yet" read as bounded while
|
||||||
|
# claiming a property of the audio. A scope names a METHOD or a PLACE
|
||||||
|
# ("from the file", "by sorting", "from the hash alone").
|
||||||
|
#
|
||||||
|
# ✅ Control passes now: the known heading is matched and shown.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
# ✅ RESULT, where it matters most: the two AMPLIFIER files are CLEAN.
|
||||||
|
# Every hit in INDEX.md and HANDOFF.md was read. All are legitimate:
|
||||||
|
# * logical facts -- "layers that never touch the same pixel cannot be ordered
|
||||||
|
# wrongly", "95 s apart is impossible";
|
||||||
|
# * the legend's own definition of *measured* ("not on the disc in any form we
|
||||||
|
# found" -- itself scoped);
|
||||||
|
# * claims quoted in order to mark them retracted;
|
||||||
|
# * INDEX 158, which is my own strikethrough of the refuted SE-audio claim.
|
||||||
|
#
|
||||||
|
# ⚠️ REACH, and it is large: 147 candidate sentences corpus-wide, 130 of which
|
||||||
|
# name no scope in the same sentence. I read the INDEX and HANDOFF subset only.
|
||||||
|
# The other files are NOT swept, and the regex has a high false-positive rate --
|
||||||
|
# "for a directory that no longer exists" is a match. This is a prompt to read,
|
||||||
|
# not a defect count, and reading 130 by hand is the cost nobody has paid yet.
|
||||||
75
tools/re-capture/impossibility_scope.py
Normal file
75
tools/re-capture/impossibility_scope.py
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
#!/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.")
|
||||||
Reference in New Issue
Block a user