diff --git a/tools/re-capture/check_refuted.py b/tools/re-capture/check_refuted.py index 42c3dc8f..64e1e740 100755 --- a/tools/re-capture/check_refuted.py +++ b/tools/re-capture/check_refuted.py @@ -115,6 +115,18 @@ if "--selftest" in sys.argv: sys.exit(0) root = Path(os.environ.get("CHECK_REFUTED_ROOT", "docs")) + +# 🔴 THIS SCANNED `docs/` ONLY, AND CODE IS WHERE A RETRACTION FAILS TO LAND. +# sylpheed-port found three live stale claims in their own source, each already +# retracted in DECISIONS.md days earlier -- "a correction that does not reach the +# artifact a consumer reads has not been made", and a comment sits BESIDE the +# thing it describes. Running this register over code for the first time on +# 2026-08-31 found one here too: jp_title_session.sh justified its own existence +# with "a free-running clock lands somewhere else on a fresh boot", which I had +# refuted myself the day before. +# ⚠️ crates/sylpheed-viewer is excluded: it is the human's tool, not mine to edit. +CODE_GLOBS = ("tools/**/*.py", "tools/**/*.sh", "crates/**/*.rs") +CODE_SKIP = ("target/", "sylpheed-viewer") ref = root / "re" / "REFUTED.md" claims = [] seen_report = set() @@ -138,7 +150,13 @@ suppressed = [] seen_marked = set() for c in claims: needle = c.strip() - for f in root.rglob("*.md"): + code_files = [] + if "--code" in sys.argv: + import glob as _g + for _p in CODE_GLOBS: + code_files += [Path(x) for x in _g.glob(_p, recursive=True) + if not any(k in x for k in CODE_SKIP)] + for f in list(root.rglob("*.md")) + code_files: if f == ref or f.name in CHRONOLOGICAL: continue lines = f.read_text(errors="replace").splitlines() diff --git a/tools/re-capture/jp_title_session.sh b/tools/re-capture/jp_title_session.sh index 273e8e22..e619bf7c 100755 --- a/tools/re-capture/jp_title_session.sh +++ b/tools/re-capture/jp_title_session.sh @@ -4,9 +4,23 @@ # The first JP capture (2026-08-30) demonstrated the logo stack is at rest # WITHIN a run: five frames ~1.5 s apart, byte-identical over the port's ROI, # against a whole-frame contrast control showing 5-8 % of the screen moving. -# That does not test the axis sylpheed-port's drift was on -- BETWEEN runs, where -# a free-running clock lands somewhere else on a fresh boot. This script exists -# to take a second, independent capture so that axis can be measured. +# That does not test the axis sylpheed-port's drift was on -- BETWEEN runs. This +# script exists to take a second, independent capture so that axis can be measured. +# +# 🔴 THE ORIGINAL RATIONALE HERE WAS REFUTED, and the retraction never reached this +# file until 2026-08-31. It read: "BETWEEN runs, where a free-running clock lands +# somewhere else on a fresh boot". IT DOES NOT. Both captures are shuttered on the +# plate pulse, and the plate's pulse is part of the title animation, so the gate +# PHASE-LOCKS the shutter: measured, the sweep sits 25-26 px apart across two runs +# in different locales and different sessions -- 1.6 % of a ~1600 px traverse. +# See structures/plate-pulse-phase-lock.md. +# +# ⚠️ SO WHAT THIS SCRIPT MEASURES IS NARROWER THAN THE COMMENT CLAIMED. A second +# capture through the same gate is a second sample at nearly the SAME animation +# phase, not a sample of a free-running clock. The RMSE 0.32 it produced is a +# phase-locked lower bound on capture noise, not capture noise. The era +# adjudication it fed still stands -- its margin, 16.72, clears even the unlocked +# 11.9 -- but for the reason bgm/jp-title-at-rest.txt gives, not this one. # # Usage: jp_title_session.sh OUTDIR [wait_s] set -u