port: black_hold_units 9 -> 0, and not the value that fits best
The Decoder measured the black gap on three transitions: menu->title 0 units, title->menu 4, EXTRAS->menu 6. Not a constant, and 9 was outside the range entirely -- wrong for all three by up to a sixth of a second of black the game does not show. Did not take the best-fitting value. A uniform 4 minimises total error (6 against 0's 10); that is fitting three samples. 0 has a reason that is not a fit -- it adds no black the game does not have, the tie-breaker input_during_transition already uses, and it is measured-correct for one real transition. The error is now a missing gap of at most 6 units on two transitions rather than an invented one of up to 9 on all three. Boot artifact unchanged at 0.0009% differing. Their EXTRAS run vindicates the earlier refusal: B from EXTRAS goes black for two completely empty frames, so the two-line change I declined would have been wrong for two of three transitions. Also: the declared final ramp is confirmed from my side (title 8, main_menu 10, extras 10 -- their exact multiset), needing no constant. And exit_ramp_units defaults to 24.0, the number HANDOFF told me to author and I refused, on a branch that cannot execute: 866 keyframes across 16 screens, 0 untimed. And origin/main is the stale era -- verified 0 145 left-right, tip 2026-08-29, still carrying the pre-fix association. The per-iteration merge has been a no-op for days, its 'Already up to date' reading as 'I am current' while meaning 'main has nothing'. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
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 -->
|
||||
|
||||
164 sections. Search this before re-deriving anything.
|
||||
166 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)
|
||||
@@ -175,6 +175,8 @@ dies, which is what this file is for.
|
||||
* [`check-all` passes — after an hour-long hang that was the suite's own fault](#check-all-passes--after-an-hour-long-hang-that-was-the-suites-own-fault)
|
||||
* [Ⓐ and Ⓑ are not the same shape, and my `black_hold` treats them as if they were](#and--are-not-the-same-shape-and-my-black_hold-treats-them-as-if-they-were)
|
||||
* [🔴 `check-all` excused two failing rows with a reason that is measurably false](#check-all-excused-two-failing-rows-with-a-reason-that-is-measurably-false)
|
||||
* [`black_hold_units` 9 → 0, and why not the value that fits best](#black_hold_units-9--0-and-why-not-the-value-that-fits-best)
|
||||
* ["Already up to date" is not evidence that I am current](#already-up-to-date-is-not-evidence-that-i-am-current)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -9465,3 +9467,73 @@ The pin reminder survives as its own line, and now reads the tag **out of
|
||||
This one had been true once — the monorepo merge made the exporter and the
|
||||
reference share a decoder, and the tag pin quietly unmade that — and it kept being
|
||||
printed long after it stopped describing the tree.
|
||||
|
||||
## `black_hold_units` 9 → 0, and why not the value that fits best
|
||||
|
||||
The Decoder measured the black gap on **three** transitions off the running game.
|
||||
It is not a constant:
|
||||
|
||||
| transition | measured gap | my hold of 9 |
|
||||
|---|---|---|
|
||||
| menu → title | **0 units** | +9 |
|
||||
| title → menu | 4 | +5 |
|
||||
| EXTRAS → menu | 6 | +3 |
|
||||
|
||||
🔴 **9 was outside the measured range entirely** — wrong for all three, by up to a
|
||||
sixth of a second of black the game does not show. Their recommendation is to
|
||||
treat it as unauthored rather than uniform-at-9.
|
||||
|
||||
⚠️ **I did not take the value that fits best.** A uniform **4** minimises total
|
||||
error (6 units against 0's 10). That is fitting three samples, and a constant
|
||||
chosen for its residual is exactly what this corpus keeps having to withdraw. **0
|
||||
has a reason that is not a fit:** it adds no black the game does not have — the
|
||||
same tie-breaker `input_during_transition` already uses in this file — and it is
|
||||
measured-*correct* for one real transition. The error becomes a **missing** gap of
|
||||
at most 6 units on two transitions rather than an **invented** one of up to 9 on
|
||||
all three.
|
||||
|
||||
✅ The verified boot artifact survives: the end frame is still **0.0009 %**
|
||||
differing against the oracle, unchanged within printing precision.
|
||||
|
||||
📌 And their EXTRAS run vindicates the refusal. "Ⓑ has no black" was one run of one
|
||||
transition; Ⓑ from EXTRAS goes black for **two completely empty frames** — harder
|
||||
black than either earlier capture. Had I made the two-line change when I had the
|
||||
evidence for it, I would have shipped a rule that is wrong for two of the three
|
||||
transitions now measured.
|
||||
|
||||
### The declared final ramp, confirmed from my side
|
||||
|
||||
They report the outgoing ramp is the declared final ramp **three for three**
|
||||
against three different values. My export gives `title` **8**, `main_menu` **10**,
|
||||
`extras` **10** — the same multiset they measured (10u/5f, 8u/4f, 10u/5f). ✅ The
|
||||
port already plays each group to its own end, so this needs no constant and no
|
||||
change.
|
||||
|
||||
### 🔴 `exit_ramp_units` is dead code carrying the number I refused to author
|
||||
|
||||
`ScreenView.exit_ramp_units` defaults to **24.0** — the very constant HANDOFF ask
|
||||
2 told me to author and that I declined. It synthesises a time for a group's
|
||||
*untimed* final keyframe.
|
||||
|
||||
**There are no untimed keyframes.** 866 across all 16 screens, **0** untimed. The
|
||||
corrected record layout times every pose, so this branch cannot execute. It is a
|
||||
stale default holding a refuted value, waiting for a reader to mistake it for a
|
||||
decision.
|
||||
|
||||
## "Already up to date" is not evidence that I am current
|
||||
|
||||
The Decoder found `origin/main` is the **stale** era. Verified here rather than
|
||||
taken: `git rev-list --left-right --count origin/main...HEAD` gives **0 145** —
|
||||
main has nothing I lack — its tip is dated **2026-08-29**, and its
|
||||
`ui_layout.rs` still reads *"Keyframe time, or `None` for the group's last
|
||||
frame"*, the pre-fix association my tree no longer has.
|
||||
|
||||
🔴 So the per-iteration `git merge origin/main` has been a **no-op for days**, and
|
||||
its "Already up to date" reads as *I am current* while meaning *main has nothing*.
|
||||
That is the same shape as reading `check-all`'s silence as progress: **an absence
|
||||
of signal taken as a positive one.**
|
||||
|
||||
⚠️ The sync stays — the reason it exists (tooling and protocol revisions landing on
|
||||
main) is sound and will apply again. What changes is that its output is not
|
||||
reassurance. And my `Cargo.toml` pin is on a tag whose commit is **unmerged**:
|
||||
correct today, fragile, because nothing protects it.
|
||||
|
||||
Reference in New Issue
Block a user