re: the menu's edge residual is not global misregistration and not blur

sylpheed-port ran the signed-edge discriminator I proposed but could not execute --
it needs their render beside the capture. Recorded as their measurement, with their
tool and commit.

Controls against deliberately damaged copies of their own render: a known +1 px
shift reads back as +0.938 px, a known blur as r -0.896 on the laplacian, neither
leaking into the other's channel. The menu against the capture gives -0.010 px
horizontal, -0.009 px vertical, laplacian r +0.103 -- and the weak blur term is the
opposite sign to the blur control.

So global misregistration and blur are both excluded, and of the three candidates I
named the misplaced soft element is the only one left.

Reach is the whole reach: a whole-frame fit excludes a global translation, not a
local one, since one misplaced element is a small share of 38752 edge pixels. The
next test is local and needs the residual map, which is theirs.

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-31 04:57:38 +00:00
parent 5a7f34df8d
commit 36b81da9d9

View File

@@ -110,3 +110,36 @@ screens. **A consumer must not carry a global tone correction.**
* Our render draws the sweeps' **parent** record only — the pre-leaf-fix state —
so the geometry share measured here includes both the missing rotation and the
missing leaf placement. Both are closed by the same decision.
## ✅ The menu's edge residual is NOT global misregistration, and not blur
**Measured by `sylpheed-port`** (`tools/port/edge-residual-kind`, branch
`auto/port-p6-audio` at `f4351b0`), running the discriminator I proposed but could
not execute — it needs their render beside the capture, which I do not have.
Recorded as their measurement.
The test, 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.
| | |
|---|---|
| **control** — a known +1 px shift | reads back **+0.938 px** (r +0.789) |
| **control** — a known blur | **r 0.896** on the laplacian |
| neither leaked into the other's channel | ✅ |
| **`main_menu` vs the capture** | **0.010 px** horizontal, **0.009 px** vertical; laplacian **r +0.103** |
**Global misregistration is excluded**: any whole-frame translation is under a
hundredth of a pixel, against a control that reads a true 1 px at 0.938.
**Blur is excluded**: the weak laplacian term is the **opposite sign** to the
blur control, so the capture is not a softened render either.
⚠️ **The reach is the whole reach: this is a WHOLE-FRAME fit.** One misplaced
element is a small share of 38 752 edge pixels and would not move these numbers. It
excludes a **global** translation, not a **local** one.
📌 **So of the three candidates I named — misregistration, antialiasing, a misplaced
soft element — the third survives, and it is the only one left.** The next test is
necessarily **local**: where does the edge residual concentrate spatially, and does
that region correspond to one element? ⚠️ That needs the residual map, which is on
the port's side; I can state the test and cannot run it.