re: read the suppressed set -- 7 correction contexts, zero live revivals

Also dedups the suppressed listing: two registered claims can be substrings of one
line, which reported that line twice (8 -> 7).

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 20:45:33 +00:00
parent 5c97d3819d
commit f6e1f12728
3 changed files with 77 additions and 1 deletions

View File

@@ -2340,3 +2340,16 @@ detector can discard a candidate, it must say how many it discarded, or its clea
run is unfalsifiable. Both of us reached the same structural conclusion from run is unfalsifiable. Both of us reached the same structural conclusion from
opposite failures within a day — theirs by over-reporting loudly, mine by passing opposite failures within a day — theirs by over-reporting loudly, mine by passing
quietly, which is why mine went unnoticed and theirs did not. quietly, which is why mine went unnoticed and theirs did not.
### The suppressed set, read — and it is clean
The 7 suppressed mentions (8 before a dedup fix; two registered claims can be
substrings of one line, which printed it twice) were read individually rather than
left as a number. **All 7 are genuine correction contexts** — an *"An earlier
version of this bullet said"*, a *"Withdrawing …"*, an explicit *"does **not**
revive …"*, two bullets under *"🔴 What this retracts"*, a *"supersedes the …
banner"*, and one *"recorded as … It was on the disc all along"*. **Zero live
revivals.**
So the register's clean run is now backed by a reading. That is the point: the
number was worth nothing until someone looked, and looking took one pass.

View File

@@ -53,6 +53,7 @@ for line in ref.read_text().splitlines():
print(f"{len(claims)} quoted claims in REFUTED.md\n") print(f"{len(claims)} quoted claims in REFUTED.md\n")
hits = 0 hits = 0
suppressed = [] suppressed = []
seen_marked = set()
for c in claims: for c in claims:
needle = c.strip() needle = c.strip()
for f in root.rglob("*.md"): for f in root.rglob("*.md"):
@@ -76,7 +77,11 @@ for c in claims:
near = "\n".join(lines[lo:hi]) + "\n" + hdr near = "\n".join(lines[lo:hi]) + "\n" + hdr
marked = any(m.lower() in near.lower() for m in MARKERS) marked = any(m.lower() in near.lower() for m in MARKERS)
if marked: if marked:
suppressed.append((f, i + 1, needle, l.strip())) # dedup like the reported path: two registered claims can be
# substrings of one line, which printed it twice.
if (f, i) not in seen_marked:
seen_marked.add((f, i))
suppressed.append((f, i + 1, needle, l.strip()))
continue continue
if (f, i) not in seen_report: if (f, i) not in seen_report:
seen_report.add((f, i)) seen_report.add((f, i))

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
# Does the main menu REMEMBER its cursor across menu -> title -> menu?
#
# menu-navigation-semantics.md carries this 🟡: "Initial focus is reproducible
# but not established as invariant. Both of my boots opened on TUTORIAL, and
# both used boot_menu.sh." Two runs through one harness are not two samples --
# the same shape as two captures through one gate (plate-pulse-phase-lock.md).
#
# And the sources DISAGREE. boot_menu.sh's own final line says "cursor on NEW
# GAME"; the page says TUTORIAL 2/2; menu-state-in-memory.md reaches EXTRAS in
# four downs, which only counts from NEW GAME. Two say NEW GAME, one says
# TUTORIAL.
#
# ONE BOOT settles both, and the round trip is the part no run has done:
# F1 focus when the menu first appears <- re-measures initial focus
# F2 focus after 2x DOWN <- CONTROL for the reader
# F3 focus after B (to title) then A (back) <- persist or reset?
#
# F3 == F2 => the menu restores where you were; F3 == F1 => it resets.
# If F2 is not two items below F1 the reader is not tracking the cursor and
# NOTHING below it may be read. Run as ONE BLOCKING FOREGROUND call.
set -u
export HOME=/sylph-home/re SDL_AUDIODRIVER=dummy DISPLAY=:98
SD="$(cd "$(dirname "$0")" && pwd)"
OUT="${OUT:-/sylph-home/re/focuspersist}"; mkdir -p "$OUT"
NAMES=(NEW_GAME LOAD_GAME TUTORIAL OPTIONS EXTRAS)
. "$SD/ensure_single_emulator.sh"
echo "── EFFECTIVE CONFIG ──────────────────────────────"
echo " out dir = $OUT"
echo " harness = boot_menu.sh (the one under suspicion)"
echo " sequence = F1 -> 2x DOWN -> F2 -> B -> plate pulse -> A -> F3"
BOOT_MENU_LOG="$OUT/boot.stdout" "$SD/boot_menu.sh" fp >"$OUT/boot.log" 2>&1 \
|| { echo "BOOT FAILED"; tail -5 "$OUT/boot.log"; exit 1; }
tail -2 "$OUT/boot.log"
shot(){ screenshot "$OUT/$1.png" >/dev/null 2>&1; }
focus(){ python3 "$SD/menu_focus.py" "$OUT/$1.png" | tail -1; }
shot f1; echo "F1 $(focus f1)"
python3 "$SD/pad.py" dpad down 0.06; sleep 1
python3 "$SD/pad.py" dpad down 0.06; sleep 2
shot f2; echo "F2 $(focus f2)"
echo "-- B to the title --"
python3 "$SD/pad.py" tap B 0.25
python3 "$SD/wait_plate_pulse.py" 120 >"$OUT/pulse.log" 2>&1 \
&& echo " title settled (plate pulse)" || echo " ⚠️ NO PLATE PULSE in 120 s"
shot title
echo "-- A back to the menu --"
python3 "$SD/pad.py" tap A 0.25; sleep 12
shot f3; echo "F3 $(focus f3)"
echo "FOCUS PERSISTENCE RUN DONE"