re: the fast probe stalls -- its own dense negatives are withdrawn

Cross-checked the instrument built last iteration against an independent
grabber while both watched the same screen, and it fails.

A single long-lived ffmpeg x11grab stream degrades and then freezes:

  862 frames in 540.1 s = 1.60 fps        (it starts at 3.98)
  t=450/480/510/540 s: surface mean 5.21, identical every time

At that same moment `import` read surface mean 125.65, and a freshly
started ffmpeg stream read 122.43 -- agreeing with import to 3%. So the
acquisition was broken, not the analysis: the stream replayed a stale
frame while the screen was 24x brighter.

That withdraws last iteration's headline. "2391 frames over 600 s from
t=0, max glyph 0" cannot distinguish "the title never appeared" from "the
stream froze early and repeated one frame 2391 times". Its 3.98 fps was
measured over the first 20 s, before the degradation. Sample count is not
coverage unless the samples are known independent.

Fixed: the stream is now torn down and restarted every 30 s. Startup is
~0.3 s, cheap against the title's window, and it guarantees live frames.

Separately, the cache hypothesis was tested and is SUPPORTED. cache,
cache0, cache1, cache_host moved aside (to /tmp/xenia-cache-aside, not
deleted) and the surface renders again: import reads mean 54.8 and 68.6
with 100% non-black warm content, against 0.07 and 0.08% non-black in the
black run; 773 of 862 probe frames had >2% non-black. One run each side
and many kill -9s before the black one, so it is supported, not proven --
the old caches are kept for reproduction.

Still no title, but that number now comes from a stalling probe and
establishes nothing either way.

METHOD: validating a probe on static images tests its analysis, not its
acquisition -- cross-check against an independent grabber during a run.
This commit is contained in:
Sylpheed RE agent
2026-08-29 02:01:47 +00:00
parent a3946e5005
commit 46006406a4
4 changed files with 95 additions and 6 deletions

View File

@@ -532,3 +532,15 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
non-zero frame-to-frame rmse), so the failure mode changed over the session.
Reaching back to re-explain earlier results with the newest cause would have
been the fourth over-reach in a row.
* **Validating a probe on static test images tests its ANALYSIS, not its
ACQUISITION.** The fast probe's counter was controlled against committed
captures and matched exactly (753 / 327), which proved the numpy expression
right and the frame source untested. The source was the broken half: a
long-lived x11grab stream degrades from 3.98 to 1.60 fps and then freezes,
repeating one stale frame. The check that catches it is to read the same screen
with an **independent grabber at the same moment** — `import` said 125.65 where
the stream said 5.21. Do that during a run, not only at design time.
* **A dense negative from one instrument is worth less than one cross-check.**
"2 391 frames, zero hits" reads as overwhelming and collapses to nothing once
the frames may all be the same frame. Sample count is not evidence of coverage
unless the samples are known to be independent.