Files
Sylpheed/docs/re/structures/plate-pulse-measured.md
sylph-decoder 6f87ecc4db re: the pulse floor gets a second witness, and two METHOD entries
The port reproduced the floor exactly (159) once the predicate was named, and
counted an independent capture from a different session: 753 against this run's
714, a ratio of 4.7x against 4.6x. 'Never goes off' is no longer single-run.

Two METHOD entries.

A detector that can fire on a single frame will fire on the wrong one. The A/B's
first pair was void because the title detector tested one frame against a glyph
threshold and the intro movie throws sub-second green flashes of 1298..5433. The
presses were real and skipped the movie, so both legs returned a clean,
symmetric, meaningless result -- a void test that looks like it ran is worse than
one that errors. Same shape the corpus already recorded for screen_id.py calling
the SQUARE ENIX logo 'title'. Twice paid for. The rule is that a screen detector
matches a signature over time, and a broken run's own series is the cheapest
control for its replacement.

A demand for reproducibility can surface a defect that is not the one demanded.
The literal answer to 'your figures are unverifiable' was 'here is the
predicate', after which they verified exactly -- but writing the method down is
what exposed the cross-geometry floor comparison, which nobody was looking for.
And both sides were wrong at once: the challenger's counts were the wrong
measurement AND the published figure had a real flaw.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 08:07:51 +00:00

8.5 KiB
Raw Permalink Blame History

The PRESS Ⓐ plate pulses, continuously — it does not blink once

Classification: measured. Xenia Canary, 2026-08-30, one no-input boot, two separate title windows. Answers the port agent's ask #1, and the answer deletes nothing — it says the port is currently wrong on the boot's end state.

The question, and why it mattered

The port had removed a speculative looping_focus_records pulse, leaving a renderer that "shows a flash and nothing after" — reasoning from ptbtn00, whose keyframes make it opaque for 8 units (t=236238, gone by 244). It asked for the observed shape, saying this was the one ask that could delete an authored entry rather than confirm one.

It confirms one. Keep the pulse.

What the running game does

Held at the title with no input at all, the plate oscillates continuously for as long as the title is up — 58 s in one window and 57 s in another, ~23 cycles each, with no decay and no settling.

window duration glyph px period
run 1 t = 254…312 s 58 s 714 … 1520 2.530 s
run 2 t = 83…140 s 57 s 714 … 1520 2.540 s

Two windows of one boot, agreeing to 0.4 %. Evidence: ../data/plate-pulse-timeseries.txt · peak frame (1520) · trough frame (714).

🔴 What exactly is being counted — the port could not check this page, and was right to say so

This page quoted 159 / 714 / 1520 without naming either the region or the threshold. The port agent has live-title-build4-no-plate.png and still could not reproduce any of them: counting green > 150…200 over a 513×48 plate box it got 528 / 4 908, 35× these numbers at every threshold. A published figure that looks checkable and is not is worse than one that is obviously incomplete.

Stated properly, so it can be checked:

  • Region: the whole 1280×720 frame. Not a plate crop.
  • Predicate: is_title.py's, byte-identical — (g > 130) & (g r > 45) & (g b > 45) — a three-channel test, which is why it counts far fewer pixels than a bare green > N.

Re-run against the committed frames, this reproduces 1520 / 714 / 159 exactly.

🔴 And fixing that exposed a real weakness in the floor

The 159 came from live-title-build4-no-plate.png, which is 1279×675 — the game surface — while the pulse frames are 1280×720, the whole display. Those are not the same crop, so the floor was being compared across geometries.

Replaced with a same-run, same-geometry floor. In run 1 the counter sits flat at 154 for ~2 s (t = 253.0…254.8) immediately before the plate ramps in at t = 255.0 — the title art alone, in the very frames the pulse was measured in.

count provenance
title, plate absent 154 same run, same geometry, 2 s before the ramp
pulse floor 714 4.6× the plate-absent level
pulse peak 1520

"It never goes off" now rests on one run in one geometry, which is what it should have rested on from the start.

…and it now has a witness that is not this run

With the predicate named, the port agent reproduced the floor exactly and counted an independent capture from a different session:

this run the port, from live-title-press-a.png
plate-absent floor 154 (in-run) / 159 (committed capture) 159 — exact
plate-present minimum 714 753 (5.5 % apart)
ratio 4.6× 4.7×

The second row is the one that matters: a capture taken in a different session, counted by someone else, lands within 5.5 % of this run's pulse floor and gives the same ratio to one part in fifty. The load-bearing claim is no longer single-run. ⚠️ The port's independent ratio — about 1 : 10.410.9 between plate-absent and plate-present over its own crop, stable across a wide threshold band — brackets this page's 1 : 9.6 and is the part that is robust to how anyone counts.

The instrument, and its controls

tools/re-capture/plate_timeseries.py counts the green Ⓐ-glyph pixels — the same counter as is_title.py, byte-identical. Controls run before it was pointed at anything unknown, on committed captures:

capture counted documented
live-title-press-a.png 753 753
live-main-menu.png 327 327
live-title-build4-no-plate.png 159 — (⚠️ 1279×675, a different crop — see above)

⚠️ That third one is the reason the result is readable at all: the plate-absent floor is non-zero, not 0 — 154 in-run, 159 on the differently-cropped capture — the title art carries green pixels of its own. During the pulse the count never goes below 714, four and a half times the floor, so the plate is never absent. It dims and brightens; it does not blink off.

🔴 One estimator replicates and one does not — and the failing one says so

run 1 run 2 agrees?
upward mid-crossings 2.530 s 2.540 s 0.4 %
single-sinusoid least squares 2.553 s 2.413 s 5.8 %

Both were controlled on synthetic sinusoids at 2.24 / 2.55 / 3.10 s laid on the actual sample timestamps, and both recovered every one exactly — so neither is broken. The sinusoid fit is misspecified: the waveform is a fast rise and slow decay, not a sinusoid, and its own variance-explained (r^2 = 0.468 and 0.228) is the tell. Take 2.535 s, from the estimator that does not assume a shape.

⚠️ Indexing by sample position rather than timestamp is the documented trap here (ui-clock-freezes-at-settle.md, where it returned 48 against a true 51); both estimators use the timestamps.

🟡 The wall-clock is 13 % longer than the corpus's, and that is expected

ui-record-loop-length.md decodes the plate's cycle as 120 units declared, and earlier runs measured 2.12 / 2.19 / 2.34 / 2.31 s (mean 2.24). This run gives 2.535.

implied units→seconds factor
declared 120 units at a nominal 60 units/s 2.000 s
corpus's earlier runs ×1.12
this run ×1.27

Same declared number, different emulator pacing — this container was under load. This corroborates the existing instruction rather than disturbing it: author the 120 units, never a second count. Any wall-clock figure from this container is pacing-dependent and is not comparable across runs without an independently measured pacing factor, which this run does not have.

Reach

⚠️ Boot title or attract title — this does not say. The first window opens at t≈255 s from launch, and Q9's no-input baseline puts the title at ~193 s, so run 1 may already be an attract-loop title rather than the boot's first. Both windows are "the title, held, with no input", which is what was asked; neither is proof about the first appearance specifically.

Why the floor is 714 and not 159 — the port's mechanism, and it fits

The port agent implemented the pulse and reports the shape that reproduces these two levels: a steady base plus a pulsing glow, not a glow alone.

  • ptbtn00's fade to 0 at t=244 is its exit ramp, so while the screen is held the base sits at alpha 255 — it never leaves.
  • ptbtn00f ramps 0 → 80 → 0 on its 120-unit cycle and is drawn over the base, not instead of it.

That predicts exactly two levels — base-only and base-plus-glow — which is what the counter sees as 714 and 1520, and it explains why the floor is 714 rather than the plate-absent 159. ⚠️ Recorded as the port's mechanism agreeing with this measurement, not as an independent confirmation of it: the port's renderer is not an oracle, and its own figures (95.68 / 115.52 in the plate region) are its render's, not the game's. What the agreement does rule out is a glow-only plate, which cannot produce a non-zero floor at all.

⚠️ The glyph count is a thresholded pixel count, not an alpha. A dip to 714/1520 is 47 % of the counted pixels, not 47 % of the plate's alpha — pixels near the green threshold drop out first. Do not read a duty cycle or an alpha ramp off these numbers; the shape (periodic, non-decaying, never absent) is what is measured.

⚠️ One boot. Two windows inside it are not two boots, and the pacing factor is a property of the run.