method: the mirror trap -- two records that drift, and a weakened control

Two corrections from the port agent, both of which make earlier claims smaller.

1. Its 'reproduces your published centres to half a pixel' was model against
   model. This corpus's 981/478 are the model's output at t=355, not the
   capture's; the capture measured 992.0/467.2, the 11.5 px residual the page
   declines to fit. So that control shows two implementations of one model
   agreeing, not the model matching the oracle. Neither of us applied the
   correlated-instrument test to that sentence at the time.

   The discriminator survives: it asks whether two captures are the same frame,
   and the model is monotone in t at ~4 px/unit, so a 42-unit gap cannot come
   out of one frame however wrong the absolute times are. Recorded as such.

2. Running my 'grep for the symptom' audit against its own tree, the port found
   the opposite failure: a control recorded in BOTH a tool table and a document,
   drifted to 53.3 % and 53.2 %, with the evidence file gone so neither can be
   re-measured. One hard-to-find record announces itself as missing; two
   disagreeing records announce nothing, which is worse.

   So the rule is not 'write it down twice' -- one record in docs/re/,
   everything else cites it, and any number that must appear twice is generated
   rather than typed.

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 07:26:27 +00:00
parent 4afd21d53b
commit 5ae38b3544
4 changed files with 112 additions and 6 deletions

View File

@@ -0,0 +1,62 @@
#!/usr/bin/env python3
"""The `PRESS Ⓐ` plate over time: does it stay up, pulse, or blink once?
`fast_title_probe.py` answers "is the title up yet" — a threshold crossing. This
logs the **whole series**, because the port's question is about the shape: an
authored `looping_focus_records` entry is deleted if the plate blinks once and
kept if it pulses.
Counter is byte-identical to `is_title.py`. ⚠️ Controls, run before this was
pointed at anything unknown:
live-title-press-a.png 753 (plate up)
live-main-menu.png 327 (documented)
live-title-build4-no-plate.png 159 ← the FLOOR: the title art alone carries
159 green pixels, so 0 is not the
plate-absent value and a series that
bottoms at ~159 is a plate going away,
not a black screen.
🔴 The stream is torn down every RESTART_S. A single long-lived x11grab degrades
to 1.60 fps and then reports a stale frame forever — see `fast_title_probe.py`.
plate_timeseries.py SECONDS OUT.tsv
"""
import subprocess
import sys
import time
import numpy as np
W, H = 1280, 720
LIMIT = float(sys.argv[1]) if len(sys.argv) > 1 else 300
OUT = sys.argv[2] if len(sys.argv) > 2 else "/dev/stdout"
RESTART_S = 30
def _open():
return subprocess.Popen(
["ffmpeg", "-loglevel", "error", "-f", "x11grab", "-draw_mouse", "0",
"-video_size", f"{W}x{H}", "-i", ":98", "-r", "6",
"-f", "rawvideo", "-pix_fmt", "rgb24", "-"],
stdout=subprocess.PIPE, bufsize=W * H * 3 * 2)
p = _open()
n = W * H * 3
t0 = time.time()
seg = t0
with open(OUT, "w") as f:
f.write("# t_s\tglyph_px\tsurface_mean\n")
while time.time() - t0 < LIMIT:
if time.time() - seg > RESTART_S:
p.kill(); p = _open(); seg = time.time()
buf = p.stdout.read(n)
if len(buf) < n:
p.kill(); p = _open(); seg = time.time(); continue
a = np.frombuffer(buf, np.uint8).reshape(H, W, 3).astype(int)
r, g, b = a[:, :, 0], a[:, :, 1], a[:, :, 2]
c = int(((g > 130) & (g - r > 45) & (g - b > 45)).sum())
f.write(f"{time.time()-t0:.3f}\t{c}\t{a.mean():.3f}\n")
f.flush()
p.kill()