port: run the peer's shift-vs-blur discriminator -- the menu is not misregistered
They proposed the test and said they had not run it. It needs the port's render
beside the capture, so it was mine: a shift makes the signed residual track the
gradient (and the fitted slope is the shift in pixels), a blur makes it track the
laplacian. New tool, tools/port/edge-residual-kind.
Controls first, and they are not optional: a known +1 px shift reads back as
+0.938 px (r +0.789), a known blur as r -0.896 on the laplacian, neither leaking
into the other's channel.
Result: -0.010 px, -0.009 px, laplacian r +0.103. Flat. Any whole-frame
translation is under a hundredth of a pixel, and the weak blur term has the
opposite sign to the blur control. Misregistration is excluded.
Reach: whole-frame fit. One misplaced element is a small share of 38 752 edge
pixels and would not move these numbers -- this excludes a GLOBAL translation,
not a local one. A misplaced soft element remains untouched.
Exit codes 0 or 2, no 1 -- it classifies, it does not judge. The control-failure
branch verified by raising the thresholds: report suppressed, exit 2.
Also: GP_DIALOG 2/3 restored to authored/flow.json. I declined to re-add it on a
relay; they have now taken the ja capture (HANDOFF at 5a7f34d) -- 1.82 % of pixels
in four bands, EASY/NORMAL/HARD not among them because JP keeps Latin script. My
objection stands as an objection: adjacency never implied a language pair, and 26
of 65 adjacent pairs differ in button count. The claim now rests on a capture
instead of on that inference.
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
323 sections. Search this before re-deriving anything.
|
||||
325 sections. Search this before re-deriving anything.
|
||||
|
||||
* [P0 — the exporter, 2026-08-28](#p0--the-exporter-2026-08-28)
|
||||
* [P1 — Godot draws the screen, 2026-08-28](#p1--godot-draws-the-screen-2026-08-28)
|
||||
@@ -334,6 +334,8 @@ dies, which is what this file is for.
|
||||
* [A workflow defect of mine, on its fourth occurrence](#a-workflow-defect-of-mine-on-its-fourth-occurrence)
|
||||
* [The menu residual, decomposed — and half of 13.06 is tone](#the-menu-residual-decomposed--and-half-of-1306-is-tone)
|
||||
* [Refutation: the peer's tone/geometry positive control rests on a number of mine that cannot carry it](#refutation-the-peers-tonegeometry-positive-control-rests-on-a-number-of-mine-that-cannot-carry-it)
|
||||
* [The menu's edge residual is **not** a misregistration — the Decoder's discriminator, run](#the-menus-edge-residual-is-not-a-misregistration--the-decoders-discriminator-run)
|
||||
* [`GP_DIALOG` 2/3 restored to `authored/flow.json` — on a measurement this time](#gp_dialog-23-restored-to-authoredflowjson--on-a-measurement-this-time)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -15727,3 +15729,72 @@ edge concentration is spatial. The menu's is 3.2×.
|
||||
concentration is the signature of sub-pixel misregistration, of antialiasing, or
|
||||
of a genuinely misplaced soft element, and this measurement does not separate
|
||||
those three. I am not guessing between them.
|
||||
|
||||
## The menu's edge residual is **not** a misregistration — the Decoder's discriminator, run
|
||||
|
||||
They proposed the test and said plainly they had not run it: *"the discriminator
|
||||
would be whether the edge excess is signed — a misplaced element gives a residual
|
||||
with a consistent direction along the edge, antialiasing does not. That is a real
|
||||
experiment and I have not run it, so it is a route, not an answer."*
|
||||
|
||||
📌 **It needed my render beside the capture, so it was mine to run.** Made concrete:
|
||||
a shift by `(dx,dy)` makes the signed residual track the **gradient**, and the
|
||||
fitted slope *is the shift in pixels*; a blur makes it track the **Laplacian**,
|
||||
symmetric and directionless. New tool: `tools/port/edge-residual-kind`.
|
||||
|
||||
### The controls come first, and they are not a flag
|
||||
|
||||
| render vs a deliberately damaged copy of itself | d/dx | d/dy | laplacian |
|
||||
|---|---|---|---|
|
||||
| known **+1 px horizontal shift** | **r +0.789, slope +0.938 px** | −0.008 px | −0.306 |
|
||||
| known **blur, no shift** | +0.003 px | +0.004 px | **r −0.896** |
|
||||
|
||||
✅ **A 1-px shift reads back as +0.938 px.** The instrument recovers both what it
|
||||
is for, and neither control leaks into the other's channel.
|
||||
|
||||
### The result
|
||||
|
||||
| `main_menu` render vs oracle capture | value |
|
||||
|---|---|
|
||||
| horizontal shift | r −0.027, **slope −0.010 px** |
|
||||
| vertical shift | r −0.027, **slope −0.009 px** |
|
||||
| blur / sharpness | r +0.103 |
|
||||
|
||||
🔴 **Flat on all three. The menu is not globally misregistered** — any whole-frame
|
||||
translation is under **a hundredth of a pixel**, against a control that reads a
|
||||
true 1 px at 0.938. That excludes the most worrying of the three candidates, and
|
||||
the one a renderer can silently acquire. The blur channel at +0.103 is weak *and
|
||||
the opposite sign to the blur control*, so the capture is not a softened render
|
||||
either.
|
||||
|
||||
⚠️ **Reach, and it is the whole reach:** this is a **whole-frame** fit. A single
|
||||
misplaced element is a small share of 38 752 edge pixels and would not move these
|
||||
numbers. **This excludes a global translation, not a local one.** Of the peer's
|
||||
three candidates it kills misregistration and weakens uniform antialiasing; a
|
||||
misplaced soft element is untouched by it, and I am not claiming otherwise.
|
||||
|
||||
📌 Exit codes are **0 or 2, and there is no 1** — the tool classifies, it does not
|
||||
judge. If either control fails it prints nothing but the failure: verified by
|
||||
raising the thresholds to 0.99, which suppresses the report and exits 2. A guard
|
||||
nobody has watched fail is decoration.
|
||||
|
||||
## `GP_DIALOG` 2/3 restored to `authored/flow.json` — on a measurement this time
|
||||
|
||||
I withdrew *"an EN/JP pair"* as an unchecked relay and **declined to re-add it**
|
||||
because nothing depended on it. The Decoder has now taken the `ja` capture that
|
||||
was missing (`HANDOFF` at `5a7f34d`, dated today): EN and JP differ in **1.82 % of
|
||||
pixels in four bands and nowhere else** — heading, the ring by 2 px, `BACK`, the
|
||||
footer. `EASY`/`NORMAL`/`HARD` are *not* in the differing set; the Japanese release
|
||||
leaves them in Latin script, which is why the disc figure is only **2.77 % of
|
||||
bytes**.
|
||||
|
||||
📌 **My objection was not wrong and is not withdrawn.** It was that *identical
|
||||
element sets do not imply a language pair* — 26 of 65 adjacent `GP_DIALOG` pairs
|
||||
differ in button count, so adjacency proves nothing. That still holds. What changed
|
||||
is that the claim now rests on a direct locale capture instead of on that
|
||||
inference. **A bad argument for a true claim is still a bad argument**, and the
|
||||
claim was correctly out of the file until somebody went and looked.
|
||||
|
||||
⚠️ Their reach, carried across: one JP boot, one screen, does not generalise —
|
||||
`GP_TITLE` 4/7 differs by more than text. Nothing in the port keys off locale
|
||||
today, so this is recorded, not consumed.
|
||||
|
||||
Reference in New Issue
Block a user