port: the focus ring had silently stopped, and the plate's period is now the disc's

BLOCKED said the record-layout change touches five things: pose_at,
settle_units, spin_period_units, exit_ramp_units and the plate. I checked two,
reported that, and did not work the rest of the list.

`spin_period_units` required "the first timed and the second untimed". Under the
corrected layout the ring reads t=0 rot=0 and t=120 rot=360 -- both timed -- so
the rule returned 0 and THE FOCUS RING STOPPED SPINNING. Nothing reported it: a
period of 0 is a legal "this element does not spin".

Rewritten to take the SPAN between the two poses: 120 - 0 = 120 units, the same
number the old rule produced, which is evidence the corrected layout is
self-consistent rather than merely different. Verified the way P5 verified it,
by bit-identity one period apart on the ring's own 60x60 box so the ptloop sweeps
cannot confound it: 0 at +120 units (twice), 8.61 at a quarter period, 8.88 at
half.

Three wrong instruments on the way, and the sequence is the lesson. A whole-frame
`max` saturates on one rotating edge (adjacent frames scored 131 with a mean of
0.022). A live --menu filmstrip jitters by up to a frame, which is ~3 degrees of
ring. And a whole-frame comparison is dominated by the sweeps, which move 480 px
over one ring period. `--focus=<id>` was added so a --screen run can draw a focus
record deterministically, which is what made the check reproducible.

THE PLATE'S PERIOD IS NOW 105, THE DISC'S OWN GROUP LENGTH, and it disagrees with
the measurement. The ambiguity the entry carried is gone -- it used to say the
cycle might restart at t=6 rather than 0 and that nothing separated them; the
group now runs t=0 to t=105, both at alpha 0, and there is one reading. But 105
units is 1.750 s, or 1.906 s scaled by the factor the ring shows between its
declared 120 and its measured 2.177 s -- about 17% below all four corpus timings
(2.12 / 2.19 / 2.34 / 2.31). The old 129 gave 2.34 s, at the top of the range,
which is why it looked right.

129 was the last timed keyframe plus exit_ramp_units, and that constant is
deleted. A period built on a constant that no longer exists cannot stay even
though it fitted better, so the port ships the disc's number and says it is
wrong. Verified bit-identical 105 units apart, 0.83 at 30 units.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-29 19:35:01 +00:00
parent ace071dd7b
commit 521b0b1f85
4 changed files with 111 additions and 22 deletions

View File

@@ -4310,3 +4310,64 @@ answer at all, and the parked Japanese-locale capture does not need reviving on
its account. `authored/rendering.json` now says that first and the undecidability
second. **Widening scope to close a residual would have been the wrong trade**,
and it is the human's call either way.
## 🔴 The focus ring had silently stopped, and BLOCKED had listed it
`docs/port/BLOCKED.md` said the record-layout change touches five things:
`pose_at`, `settle_units`, `spin_period_units`, `exit_ramp_units` **and the
plate**. I checked `pose_at` and deleted `exit_ramp_units`, reported that, and
**did not work the rest of the list.**
`spin_period_units` required *"the first timed and the second untimed"*. Under
the corrected layout the ring reads `t=0 rot=0` and `t=120 rot=360` — **both
timed** — so the rule returned 0 and **the focus ring stopped spinning**. Nothing
reported it: a period of 0 is a legal *"this element does not spin"*.
Rewritten to take the **span** between the two poses. On the ring that is
120 0 = **120 units, the same number the old rule produced**, which is a small
piece of evidence that the corrected layout is self-consistent rather than merely
different.
**Verified the way P5 verified it — bit-identity one period apart**, on the ring's
own 60×60 box so the `ptloop` sweeps cannot confound it:
| separation | mean difference |
|---|---|
| **+120 units (one period)** | **0** |
| +120 units again | **0** |
| +30 units (quarter) | 8.61 |
| +60 units (half) | 8.88 |
⚠️ Getting there took three wrong instruments, and the sequence is the lesson.
A whole-frame `max` saturates on one rotating edge — adjacent frames scored 131
while their mean was 0.022. A live `--menu` filmstrip jitters by up to a frame,
which is ~3° of ring, and its cadence cannot be pinned. And a whole-frame
comparison is dominated by the sweeps, which move 480 px over one ring period.
**`--focus=<id>` was added so a `--screen` run can draw a focus record
deterministically**, which is what made the check reproducible at all.
## The plate's period is now the disc's 105, and it disagrees with the measurement
Under the corrected layout `ptbtn00f` runs **t=0 (alpha 0) → t=105 (alpha 0)** — a
closed cycle with every pose timed.
**The ambiguity this entry carried is gone.** It used to say the cycle might
restart at t=6 rather than 0, giving 123 units, and that nothing separated the
two. There is now one reading.
🔴 **And the number is worse against the oracle, which is stated rather than
avoided.** 105 units is **1.750 s**; scaled by the factor the ring shows between
its declared 120 units and its measured 2.177 s (×1.089), **1.906 s** — about
**17 % below** every one of the corpus's four timings (2.12 / 2.19 / 2.34 /
2.31 s). The old 129 gave 2.34 s, at the top of that range, which is exactly why
it looked right.
**129 was the last timed keyframe plus `exit_ramp_units`, and that constant is
deleted.** A period built from a constant that no longer exists cannot stay, even
though it fitted better. So the port ships the disc's number **and says it is
wrong**, rather than keeping a number that agreed with the measurement for a
reason that has evaporated.
Verified: the plate is bit-identical 105 units apart (mean diff **0**) and differs
at 30 units (0.83). ❔ What would resolve the disagreement: whether the group
loops from its start at all, or holds at alpha 0 between cycles. Asked.