From b436e5a8120f1c5cc37026786d88629f2bde1d91 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Fri, 28 Aug 2026 21:24:42 +0000 Subject: [PATCH] re: the rest() fix gets its disc-wide check, and one question back to the port agent Closing the two things I flagged as unconfirmed when I committed the fix. The unit gate is green: cargo test -p sylpheed-formats with SYLPHEED_DISC set gives 131 passed, 0 failed across six binaries including the disc-gated ones. The earlier background run that produced an empty log had died with SIGTERM, which is why it looked like nothing happened. And the disc-wide check the classification requires. Reimplementing both rules over every RATC bundle on the disc -- 2859 bundles, 13991 elements with at least two keyframes -- the fix moves rest for 30 elements, which is 0.21 percent. Four go invisible to visible. Zero go visible to invisible, which is the safety property I wanted and did not have when I committed. The four are ptframe1 and ptframe2 in GP_TITLE entries 5 and 8, the same pair once per language. That surfaces a discrepancy worth handing back rather than smoothing over. On the English main menu exactly TWO elements satisfy the port agent's pose-equality condition, not six, so their six must span the whole twelve-screen export. That fits their own observation that the timeline and rest differ in exactly one region, the bounding box of ptframe1 and ptframe2 and nothing else. But if any of their other four have a TRANSPARENT trailing run, my alpha rule leaves them alone deliberately -- that exclusion is what protects PAUSE -- so I have asked which screens they are on and whether a capture shows any of them drawn. If one is, the alpha rule is incomplete and needs a third discriminator. --- docs/port/HANDOFF.md | 8 ++++++ docs/re/structures/ui-resting-pose.md | 35 +++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 851d4ff1..1e079aa8 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -104,6 +104,14 @@ authored version can be deleted. trailing run also matches its last timed keyframe, and adopting that would erase the word PAUSE. Oracle correlation over the bracket region improved **0.9596 → 0.9748**; the PAUSE control is unchanged. + ✅ **Disc-wide**: over 2 859 bundles / 13 991 elements, `rest` moves for **30** + (0.21 %) — **4 invisible → visible, 0 visible → invisible**. Tests green + (131 passed). + ❔ **Back to the port agent:** on the English main menu exactly **two** elements + satisfy your pose-equality condition (`ptframe1`/`ptframe2`), so your six span + the whole export. If any of the other four have a **transparent** trailing run, + this rule leaves them alone on purpose. **Which screens are they on, and does a + capture show any of them drawn?** If so the alpha rule is incomplete. This also closes the old ❔ on `ptframe1`/`ptframe2` "resting at alpha 0 but the capture shows the frame plainly". * **The resting pose is the hold**, not the first, last or longest-dwell keyframe; diff --git a/docs/re/structures/ui-resting-pose.md b/docs/re/structures/ui-resting-pose.md index 2fee050e..2334f242 100644 --- a/docs/re/structures/ui-resting-pose.md +++ b/docs/re/structures/ui-resting-pose.md @@ -218,5 +218,36 @@ when it is visible**, and that is what `rest_plateau` now tests. | pixels changed, whole frame | 10 082, bounding box **x 440–839, y 108–577** — exactly the 400 × 470 at (440,108) the report predicted | | **regression control**: PAUSE wordmark, 3 pause builds | **unchanged** (2833 / 2858 / 2833 bright px) | -🟡 The full disc-gated `build-reborn test` run was **still executing when this was -committed**; the verification above is artifact-based. +✅ **`cargo test -p sylpheed-formats` with `SYLPHEED_DISC` set: 131 passed, 0 +failed** across 6 binaries including the disc-gated ones. (One pre-existing +`ignored` — the XBG7 shared-resource test — unrelated.) + +### ✅ The disc-wide check + +Both rules reimplemented over the parsed keyframes of **every** `RATC` bundle on +the disc — 2 859 bundles, 13 991 elements with ≥ 2 keyframes: + +| | | +|---|---| +| elements whose `rest` moves | **30** (0.21 %) | +| invisible → visible | **4** | +| **visible → invisible** | **0** — the safety property | + +The change is surgical and it never hides something that was being drawn. The +remaining 26 move `rest` between two *visible* poses (position, not visibility). + +The 4 revealed are `ptframe1.t32` and `ptframe2.t32` in `GP_TITLE` **entry 5 and +entry 8** — the same two elements, once per language build. + +### 🟡 Reconciling with the report's "six elements" + +On the **English main menu exactly two** elements satisfy the report's condition +(last two keyframes identical), and both are `ptframe1`/`ptframe2`. So the six +must span its whole 12-screen export, not that one screen — consistent with its +own observation that the timeline and `rest` differ *"in exactly one region … +the bounding box of `ptframe1`/`ptframe2` and nothing else"*. + +❔ **Open, and it matters:** if any of the other four have a **transparent** +trailing run, this rule deliberately leaves them alone — that exclusion is what +protects the word PAUSE. If a capture shows one of them drawn, the alpha rule is +incomplete and needs a third discriminator. **Which screens are they on?**