re: build the enforcement check REFUTED.md lacked -- 0 real revivals, and why

sylpheed-port's check-claims fails their run when a refuted claim is quoted
without an explicit token, and feeding it four withdrawals flagged three still
asserted unmarked -- each inside a correction they had written. REFUTED.md
publishes deaths without enforcing them, which is the gap I named last iteration
and did not close.

check_refuted.py is the prose equivalent: for each quoted claim in REFUTED.md it
searches docs/ for that text and reports occurrences whose neighbourhood carries
no refutation marker. Controlled first -- a claim planted unmarked in a scratch
file is detected, so a clean run means something.

9 raw hits, ZERO real revivals. All false positives, and the kinds are the
finding: 2 were text explicitly DECLINING to revive a claim; 1 a duplicate report;
4 were BACKLOG.md entries under a 2026-08-12 header, an append-only log recording
what was believed then; 2 were the claim quoted inside its own correction.

The structural limit is worth more than the clean result. A neighbourhood-language
detector cannot separate "asserted now" from "recorded as believed then", because
a dated log entry and a revival read identically. The port's design avoids this by
testing for a token an author must PLACE rather than for language -- theirs fires
correctly inside a correction, which is what caught their three, while mine fires
incorrectly there and would miss a revival reworded.

Stopped tuning at two remaining. Each marker phrase added fits the detector to this
corpus's habits of expression and away from being a test of them; tuning until it
reads zero would be fitting the instrument to the answer. Left over-reporting,
which is the safe direction.

Reach: it matches a claim's exact wording, so "no verbatim revival" is not "no
revival".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-30 19:26:00 +00:00
parent 28b1a4c33c
commit 897be7bfdd
3 changed files with 124 additions and 0 deletions

View File

@@ -616,6 +616,21 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
noun. If your own noun is not there, you have recorded the death without
publishing it.
* 📌 **A marker an author must PLACE beats a marker a tool must INFER.**
`sylpheed-port`'s claim register fails their build when a refuted claim is quoted
without an explicit token, and it caught three live assertions **inside
corrections they had written themselves** — text that reads as retraction to any
human. I built the prose equivalent, which infers from neighbourhood language,
and it does the opposite: it fires on corrections and would miss a revival
reworded. ⚠️ The reason is structural — an append-only dated log entry and a
revival are **textually identical**, so no amount of phrasing analysis separates
*asserted now* from *recorded as believed then*.
⚠️ **And knowing when to stop tuning is part of it.** Mine went 9 → 2 by adding
marker phrases; each addition fits the detector to this corpus's habits of
expression and away from being a test of them. Tuning until it reads zero is
fitting the instrument to the answer. Left over-reporting, which is the safe
direction.
## Runtime / emulator
* **Look at the PNG** — and check its dimensions.