port: re-derive black_hold_units against four measurements rather than inherit it
They answered ask #2 -- the gap is deterministic, not a load -- and held me to re-stating the choice against four measurements (0, 6, 4, 6) rather than the three it was made on. That is my own standard for check-all's stale allowance turned around. The arithmetic moved against 0: it costs 2.0x the best fit on four measurements against 1.7x on three, and is now the minority outcome, wrong on 3 of 4 where a uniform 6 is wrong on 2 of 4. Still 0, because the reason was never the fit -- it adds no black the game does not have, and is measured-correct for a real transition rather than for an average of them. Picking 6 because it appears twice is choosing a mode from four samples when their finding is that a rule exists and nobody has found it. But one leg is gone and is not being kept quietly: part of the case for 0 was that the quantity might be machine-dependent and unauthorable. It is not. That removes an excuse without supplying a value. Added a tripwire: if the gap is non-zero in most transitions and no rule emerges, omitting a real quantity stops being caution and becomes a different invention. The port is wrong by 4-6 units on three of four known transitions and the why now says so. Also records as settled: the outgoing ramp is the declared final ramp, my {8,10,10} against their measured multiset, two independent routes. 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 -->
|
||||
|
||||
166 sections. Search this before re-deriving anything.
|
||||
167 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)
|
||||
@@ -177,6 +177,7 @@ dies, which is what this file is for.
|
||||
* [🔴 `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)
|
||||
* [Re-deriving `black_hold_units` against four measurements, not three](#re-deriving-black_hold_units-against-four-measurements-not-three)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -9537,3 +9538,52 @@ of signal taken as a positive one.**
|
||||
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.
|
||||
|
||||
## Re-deriving `black_hold_units` against four measurements, not three
|
||||
|
||||
They answered ask #2 — **the gap is not a load; it is deterministic to the
|
||||
frame** — and then held me to something sharper: *"you now have four gap
|
||||
measurements, not three. The multiset changed after you chose 0."*
|
||||
|
||||
That is my own standard for `check-all`'s stale allowance turned around, and it
|
||||
applies. Re-derived:
|
||||
|
||||
| uniform | total error | wrong on |
|
||||
|---|---|---|
|
||||
| **0** | **16** | **3 of 4** |
|
||||
| 4 | 8 | 3 of 4 |
|
||||
| 6 | 8 | 2 of 4 |
|
||||
| 9 (the old value) | 20 | 4 of 4 |
|
||||
|
||||
🔴 **The arithmetic moved against 0.** Choosing it cost 1.7× the best fit on three
|
||||
measurements and costs **2.0×** on four, and 0 is now the *minority* outcome —
|
||||
three of four transitions do have a gap.
|
||||
|
||||
✅ **It is still 0, because the reason was never the fit.** 0 adds no black the
|
||||
game does not have, and it is measured-correct for a *real transition* rather than
|
||||
for an average of them. Picking 6 because it appears twice is choosing a mode from
|
||||
four samples with no rule behind it — and their whole finding is that a rule
|
||||
exists and nobody has found it.
|
||||
|
||||
⚠️ **One of my reasons is gone, though, and I am not keeping it quietly.** Part of
|
||||
the case for 0 was that the quantity might be machine-dependent and therefore
|
||||
unauthorable. It is not: bundle size runs the wrong way (build 4 is 12.3 MB and
|
||||
gaps zero frames; build 5 is 7.0 MB and gaps 3 and 2), and a repeat run moved
|
||||
press-to-first-change by ~12 frames while the gap did not move at all. **Removing
|
||||
the machine-dependence excuse does not supply a value**, but it does mean 0 now
|
||||
rests on one leg rather than two.
|
||||
|
||||
📌 **A tripwire, because "invent nothing" can stop being conservative.** If the gap
|
||||
is non-zero in most transitions and no rule emerges, systematically omitting a
|
||||
real quantity is not caution — it is a different invention. Revisit at the next
|
||||
non-zero measurement or the moment a rule appears. The port is currently wrong by
|
||||
4–6 units on three of four known transitions, and `authored/timing.json` now says
|
||||
so in the `why` rather than in a number that looks decided.
|
||||
|
||||
### Settled: the outgoing ramp is the declared final ramp
|
||||
|
||||
My export gives `title` **8**, `main_menu` **10**, `extras` **10**; their captures
|
||||
measure 10u/5f, 8u/4f, 10u/5f. ✅ Two genuinely independent routes — disc and
|
||||
running game — agreeing on a three-value multiset. They propose treating it as
|
||||
settled and I agree: the port already plays each group to its own end, so nothing
|
||||
is authored and nothing needs to change.
|
||||
|
||||
Reference in New Issue
Block a user