diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 3350d80d..701c27ba 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -39,10 +39,27 @@ archive gives **1**, `EXTRAS` → another archive gives **3**. Same kind of destination, gap set by the outgoing screen — the strongest support for that dependence, since it removes the destination as the variable. -🔴 **But the clean ordering is gone.** `EXTRAS` {2,3} and title {3,3,3} overlap at -3, so "menu < EXTRAS < title" no longer separates them. What survives is weaker: -the outgoing screen constrains the gap to a ~2-wide band, and the bands are not -disjoint. +🔴 **Superseded again, and this time sharpened.** With eight transitions the gap +is a property of the **ordered pair**, not the origin: + +| transition | gaps | n | repeats agree? | +|---|---|---|---| +| title → menu | 3, 3, 3 | 3 | **yes** | +| `EXTRAS` → menu | 2, 2 | 2 | **yes** | +| menu → title | 0 | 1 | — | +| menu → `EXTRAS` | 1 | 1 | — | +| menu → another archive | 1 | 1 | — | +| `EXTRAS` → another archive | 3 | 1 | — | + +**Every repeated pair is identical** — five replicates, no variation — and **every +differing value comes from a different pair**. The same origin gives different +values to different destinations (menu 0 vs 1, `EXTRAS` 2 vs 3), so the origin +constrains but the pair determines. + +📌 **For `black_hold_units`:** a constant is excluded, and keying on the outgoing +screen is excluded too. Any keyed version would have to be keyed on the **ordered +pair**, with a measured value for each — six pairs known, two of them replicated, +and nothing declared predicting any of them. 📌 **The gap tracks the screen being LEFT — but CONSTRAINS rather than determines it.** ⚠️ Corrected the same day, prompted by `sylpheed-port` asking for *"a second diff --git a/docs/re/data/fade-four-transitions.txt b/docs/re/data/fade-four-transitions.txt index c6eb255a..e2c3ff82 100644 --- a/docs/re/data/fade-four-transitions.txt +++ b/docs/re/data/fade-four-transitions.txt @@ -246,3 +246,40 @@ frame untextured full-screen textured (distinct) draws tex # the outgoing screen constrains the gap to a 2-wide band, and different outgoing # screens have different bands that are not disjoint. Still not predictive, and # now not even cleanly ordered. + +################################################################################ +# EIGHTH TRANSITION: a SECOND EXTRAS -> menu, via (B). 2026-08-30. +# Taken to verify the fixed effective-config guard on the one screen screen_id.py +# cannot resolve, and to replicate the table's weakest cell at the same time. +# +# ✅ THE GUARD WORKS, verified in a run rather than asserted: +# arming on = menu [screen_id: cannot separate menu/EXTRAS] +# discriminator = extras rmse=18.94 (other main_menu 30.09, margin 11.15) +# Before the fix this run would have announced "arming on = menu" while armed on +# EXTRAS. The ambiguity is now visible instead of hidden. +# +# frames 29-31 outgoing quad 229, 255, 255 +# frames 32, 33 EMPTY: 3 draws, 0 textured +# frames 34-38 incoming menu's quad decaying 169, 148, 106, 63, 21 +# GAP = 2, identical to the first EXTRAS -> menu. +# +################################################################################ +# 📌 EIGHT TRANSITIONS: THE GAP IS A PROPERTY OF THE ORDERED PAIR, NOT THE ORIGIN +# +# transition gaps n repeats agree? +# title -> menu 3, 3, 3 3 YES +# EXTRAS -> menu 2, 2 2 YES +# menu -> title 0 1 - +# menu -> EXTRAS 1 1 - +# menu -> other 1 1 - +# EXTRAS -> other 3 1 - +# +# EVERY repeated pair is identical -- 3/3 and 2/2, five replicates, no variation. +# EVERY differing value comes from a DIFFERENT pair. And the same origin gives +# different values to different destinations: menu 0 vs 1, EXTRAS 2 vs 3. +# +# 🔴 So "the outgoing screen determines the gap" is superseded a second time. The +# origin CONSTRAINS it (menu {0,1}, EXTRAS {2,3}, title {3}); the ORDERED PAIR +# determines it, reproducibly. Still nothing declared predicts which value a pair +# gets, so this remains a description with five replicates behind it rather than a +# rule.