re: name the region and the threshold -- and the floor was cross-geometry
The port agent could not reproduce this page's 159/714/1520 from the capture it holds: counting green>150..200 over a plate box it got 3-5x at every threshold. The page named neither the region nor the predicate. Stated now: the whole 1280x720 frame, and is_title.py's three-channel predicate (g>130 & g-r>45 & g-b>45), which is why it counts far fewer pixels than a bare green>N. That reproduces 1520/714/159 exactly. Writing the method down exposed a defect the prose had hidden. The 159 floor came from live-title-build4-no-plate.png at 1279x675 -- the game surface -- while the pulse frames are 1280x720, the whole display. Different crops, silently compared. Replaced with a same-run, same-geometry floor that was in the series all along: 154, flat for ~2 s immediately before the plate ramps in. So 'it never goes off' now rests on one run in one geometry, at 714 against 154, which is where it should have rested from the start. The port's independent ratio of 1:10.4-10.9 brackets this page's 1:9.6 and is the part robust to how anyone counts. Two METHOD entries: a pixel figure needs its region and its predicate, and a comparison between two counts needs them to share a geometry; and the port's observation that a fix which overshoots leaves no symptom until a third change needs the part it disabled. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -1209,3 +1209,38 @@ that disagree announce nothing at all, and a reader takes whichever they opened.
|
||||
The port fixed its case by deleting the duplicate rather than picking a winner,
|
||||
which is right: with the evidence gone, choosing between 53.2 and 53.3 would have
|
||||
been authoring a measurement.
|
||||
|
||||
## A pixel figure without its region and its threshold is not checkable
|
||||
|
||||
`plate-pulse-measured.md` published 159 / 714 / 1520 as the plate-absent floor and
|
||||
the pulse's two levels. The port agent holds the same capture, tried to reproduce
|
||||
the floor, and got 3–5× at every threshold it tried — because the page named
|
||||
neither the **region** (whole 1280×720 frame, not a plate crop) nor the
|
||||
**predicate** (`(g>130) & (g−r>45) & (g−b>45)`, a three-channel test, not
|
||||
`green > N`).
|
||||
|
||||
⚠️ **This is worse than an obviously incomplete number.** A figure with no stated
|
||||
method reads as checkable, so a reader spends real effort failing to reproduce it
|
||||
and then has to decide whether the disagreement is theirs or yours.
|
||||
|
||||
And writing the method down immediately exposed a defect the prose had hidden: the
|
||||
floor came from a **1279×675** capture while the pulse came from **1280×720**
|
||||
frames — different crops, silently compared. The fix was a same-run, same-geometry
|
||||
floor that was in the series all along.
|
||||
|
||||
**So:** every pixel count states its region and its predicate, and a comparison
|
||||
between two counts states that they share a geometry. If they do not, that is a
|
||||
finding about the comparison, not a detail.
|
||||
|
||||
## A fix that overshoots leaves no symptom until something else needs the part it disabled
|
||||
|
||||
From the port agent, and it generalises past its own case. Its static-overlay path
|
||||
was **frozen at the overlay's arrival** — a fix for a different bug that reached too
|
||||
far and stopped the overlay's clock entirely. Nothing noticed for a week, because
|
||||
nothing needed that clock to advance. The plate pulse is what finally gave it
|
||||
something to be wrong about.
|
||||
|
||||
⚠️ **An over-broad fix does not fail; it goes quiet.** The class of bug to look for
|
||||
is not "this is broken" but "this has been correct-by-inactivity since the day
|
||||
somebody disabled it". When a fix works by *stopping* something rather than
|
||||
correcting it, that is the moment to write down what has been stopped.
|
||||
|
||||
@@ -30,6 +30,45 @@ Two windows of one boot, agreeing to **0.4 %**. Evidence:
|
||||
[peak frame](../captures/title-builds/live-title-plate-pulse-peak.png) (1520) ·
|
||||
[trough frame](../captures/title-builds/live-title-plate-pulse-trough.png) (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, 3–5× 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. ⚠️ The port's independent ratio — about
|
||||
**1 : 10.4–10.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
|
||||
@@ -40,10 +79,10 @@ anything unknown**, on committed captures:
|
||||
|---|---|---|
|
||||
| `live-title-press-a.png` | **753** | 753 ✅ |
|
||||
| `live-main-menu.png` | **327** | 327 ✅ |
|
||||
| `live-title-build4-no-plate.png` | **159** | — |
|
||||
| `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 159, not 0** — the title art carries green pixels of its own. During the
|
||||
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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user