re: the refuted register ignored the deaths I just wrote, and two false positives shared a cause
Three refutations written as prose under ### headings never entered the register:
check_refuted.py parses * "claim" lines, so the count stayed at 188. Registered
them properly (188 -> 192). A register that parses one syntax silently ignores
every other, and it is invisible from the author's side -- ask the register what it
holds, do not re-read what you wrote.
Both standing false positives were bullets under a header that retracts the whole
list, with no marker in the +-4-line window: scope marks them, not proximity. The
scan now includes the nearest preceding header and matches markers
case-insensitively ('An earlier version' was missed by the marker 'an earlier
version'). Controlled by planting a real revival and confirming it is still caught;
register now runs clean at 0.
Also records sylpheed-port's diagnosis of the phase-lock fallout: a number can be
inapplicable rather than wrong, and a tension built on one is manufactured. Plus
their point that some claims are not registrable in a substring register at all.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -25,7 +25,7 @@ from pathlib import Path
|
||||
|
||||
MARKERS = ("refuted", "REFUTED", "withdrawn", "WITHDRAWN", "retracted", "RETRACTED",
|
||||
"🔴", "~~", "used to say", "used to read", "was wrong", "is wrong",
|
||||
"no longer", "superseded", "corrected",
|
||||
"no longer", "superseded", "corrected", "retracts", "an earlier version",
|
||||
# text explicitly DECLINING to revive a claim reads as an assertion to
|
||||
# a neighbourhood scan; two real hits were exactly this.
|
||||
"does **not** revive", "does not revive")
|
||||
@@ -61,8 +61,19 @@ for c in claims:
|
||||
for i, l in enumerate(lines):
|
||||
if needle in l:
|
||||
lo, hi = max(0, i - CTX), min(len(lines), i + CTX + 1)
|
||||
near = "\n".join(lines[lo:hi])
|
||||
if not any(m in near for m in MARKERS) and (f, i) not in seen_report:
|
||||
# ⚠️ A +-CTX neighbourhood misses the commonest real marker: a
|
||||
# SECTION HEADER that retracts a whole list. Two false positives
|
||||
# were exactly this -- bullets under "## 🔴 What this retracts",
|
||||
# each bullet a claim being killed, no marker within 4 lines.
|
||||
# Scope, not proximity, is what marks them, so include the
|
||||
# nearest preceding header in the scan.
|
||||
hdr = ""
|
||||
for j in range(i, -1, -1):
|
||||
if re.match(r"#{1,4} ", lines[j]):
|
||||
hdr = lines[j]
|
||||
break
|
||||
near = "\n".join(lines[lo:hi]) + "\n" + hdr
|
||||
if not any(m.lower() in near.lower() for m in MARKERS) and (f, i) not in seen_report:
|
||||
seen_report.add((f, i))
|
||||
hits += 1
|
||||
print(f"🔴 {f}:{i+1}")
|
||||
|
||||
Reference in New Issue
Block a user