port: a static overlay advances instead of freezing; and their pulse floor is unreproducible
--screen=X animates X but froze an overlaid Y -- my earlier fix overshooting, replacing a frozen-too-early overlay with a frozen-at-arrival one. The plate pulse made it visible: oscillating on the boot path, flat here. Now offset, not pinned: the overlay starts at its settle and takes the main view's delta. Static path now pulses 95.85 -> 115.41 against the boot's 95.68 -> 115.52; still frames unaffected and title_plate holds at 0.00%. Both halves were mine a week apart, and the over-correction was invisible until a third change gave it something to be wrong about. Refutation attempt on their pulse floor: 159/714/1520 is NOT reproducible from the published description. My counts on the same capture are 3-5x theirs at every threshold, so their region must be a tighter crop; neither region nor threshold is stated. The RATIO survives robustly -- 1:10.4-10.9 across a wide band, bracketing their 1:9.6 -- so 'steady base plus pulsing glow' stands, which is all the port's implementation rests on. 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 -->
|
||||
|
||||
122 sections. Search this before re-deriving anything.
|
||||
123 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)
|
||||
@@ -133,6 +133,7 @@ dies, which is what this file is for.
|
||||
* [The sweep discriminator resolves: different frames, and a sweep position cannot date one](#the-sweep-discriminator-resolves-different-frames-and-a-sweep-position-cannot-date-one)
|
||||
* [Their trap, run against my tree — and I found its mirror instead](#their-trap-run-against-my-tree--and-i-found-its-mirror-instead)
|
||||
* [The plate pulses — measured, and the port was wrong on the boot's end state](#the-plate-pulses--measured-and-the-port-was-wrong-on-the-boots-end-state)
|
||||
* [A static overlay now advances, and a refutation attempt on the pulse floor](#a-static-overlay-now-advances-and-a-refutation-attempt-on-the-pulse-floor)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -7178,3 +7179,58 @@ thresholded pixels, so no duty cycle or ramp shape may be read from it. The port
|
||||
draws the record's own declared ramp and infers nothing about its shape.
|
||||
|
||||
Oracle rows unmoved; every asserting check passes.
|
||||
|
||||
## A static overlay now advances, and a refutation attempt on the pulse floor
|
||||
|
||||
### The static overlay was frozen at its arrival, which was my fix overshooting
|
||||
|
||||
`--screen=X` animates X. `--screen=X --overlay=Y` **froze** Y, because the fix for
|
||||
the original defect — the raw elapsed clock pushed in, 9 units at capture, plate
|
||||
drawing nothing — replaced a frozen-too-early overlay with a frozen-at-arrival
|
||||
one. One command animating one build and freezing the other is an inconsistency,
|
||||
and the plate pulse is what made it visible: the plate oscillated on the boot path
|
||||
and sat flat here, which reads as a regression and is not one.
|
||||
|
||||
Now **offset, not pinned**: the overlay begins at its own settle and takes the same
|
||||
delta the main view takes. Verified — the static path pulses over the same range as
|
||||
the boot path, 95.85 → 115.41 against 95.68 → 115.52. Still frames are unaffected
|
||||
(`--time` freezes both) and `title_plate` holds at **0.00 %**.
|
||||
|
||||
📌 Both halves of this were mine, a week apart: the original bug, then the
|
||||
over-correction for it. The over-correction was invisible until a *third* change —
|
||||
the pulse — gave it something to be wrong about. A fix that overshoots leaves no
|
||||
symptom until something else needs the part it disabled.
|
||||
|
||||
### 🟡 Refutation attempt — their pulse floor of 159 green pixels
|
||||
|
||||
Their measurement gives a plate-absent floor of **159** thresholded green pixels,
|
||||
a pulse minimum of **714** and a peak of **1520**, the floor measured on
|
||||
`live-title-build4-no-plate.png` — a capture I hold. So it is checkable.
|
||||
|
||||
**It is not reproducible from the published description.** Across the plate region
|
||||
(513×48 at +383+551) my counts are 3–5× theirs at every threshold:
|
||||
|
||||
| green > | no-plate | press-a | ratio |
|
||||
|---|---|---|---|
|
||||
| 100 | 676 | 9 369 | 1 : 13.9 |
|
||||
| 150 | 528 | 5 732 | 1 : 10.9 |
|
||||
| 180 | 462 | 4 908 | 1 : 10.6 |
|
||||
| 200 | 411 | 4 272 | 1 : 10.4 |
|
||||
| **theirs** | **159** | **1 520** | **1 : 9.6** |
|
||||
|
||||
No threshold produces both numbers, so their region must be a tighter crop than
|
||||
mine. Neither the region nor the threshold is stated on the page.
|
||||
|
||||
✅ **The finding survives in the part that matters.** The *ratio* is stable at
|
||||
1 : 10.4–10.9 across a wide threshold band and brackets their 1 : 9.6, so "the
|
||||
plate-present frame carries about ten times the green of the plate-absent one" is
|
||||
robust to how it is counted. What cannot be checked is the absolute figures — and
|
||||
those are what the "never goes off" conclusion is stated in.
|
||||
|
||||
⚠️ This is the convention we agreed two iterations ago, applied to their own new
|
||||
page: **a cross-renderer pixel figure needs its region and its threshold named.**
|
||||
I raised it there about *my* numbers drifting between two files; the same rule
|
||||
makes a published measurement unverifiable when a reader has the capture and not
|
||||
the crop. Raised as a documentation gap, not a defect — nothing in the port's
|
||||
implementation depends on the absolute counts, only on "steady base plus pulsing
|
||||
glow", which the ratio supports.
|
||||
|
||||
@@ -1036,6 +1036,9 @@ func _exit_tree() -> void:
|
||||
|
||||
## The overlay the current boot step owes, if it has not been raised yet.
|
||||
var _overlay_spec: Dictionary = {}
|
||||
## Where a STATIC overlay's own clock starts, and the main view's clock then.
|
||||
var _overlay_t0 := 0.0
|
||||
var _overlay_view_t0 := 0.0
|
||||
## Wall-clock second at which it is raised, measured from the screen's settle.
|
||||
var _overlay_due: float = 0.0
|
||||
|
||||
@@ -1065,7 +1068,20 @@ func _overlay_process(delta: float) -> void:
|
||||
# units between build 4's last ramp and the plate's a=255 is a fixed
|
||||
# interval on ONE timeline -- so that path is untouched.
|
||||
if _sequence.is_empty():
|
||||
overlay.time_units = overlay.settle_time()
|
||||
# 🔴 A static overlay STARTS at its arrival and then ADVANCES. It used
|
||||
# to be pinned there on every frame, which was this fix overshooting.
|
||||
#
|
||||
# Pinning fixed the original defect -- `--screen=X --overlay=Y` pushed
|
||||
# the raw elapsed clock in, 9 units at capture, and `press_start` drew
|
||||
# nothing -- but it replaced a frozen-too-early overlay with a
|
||||
# frozen-at-arrival one. `--screen=X` animates X; freezing Y while
|
||||
# animating X is an inconsistency in one command, and the plate pulse
|
||||
# is what made it visible: the plate oscillates on the boot path and
|
||||
# sat flat here, which reads as a regression and is not one.
|
||||
#
|
||||
# Offset, not pinned: the overlay begins at its own settle and takes
|
||||
# the same delta the main view takes.
|
||||
overlay.time_units = _overlay_t0 + (view.time_units - _overlay_view_t0)
|
||||
else:
|
||||
overlay.time_units = view.time_units
|
||||
overlay.queue_redraw()
|
||||
@@ -1111,6 +1127,8 @@ func _raise_overlay(name: String) -> void:
|
||||
# After `view`, so it draws over it: Node2D siblings paint in tree order and
|
||||
# the export's own `paint_order` only orders WITHIN a build.
|
||||
viewport.add_child(overlay)
|
||||
_overlay_t0 = overlay.settle_time()
|
||||
_overlay_view_t0 = view.time_units
|
||||
print(" overlay %s raised at %.2f s, %d element(s), settles at t=%d"
|
||||
% [name, _elapsed, overlay.screen.get("elements", []).size(), int(overlay.settle_time())])
|
||||
# A boot with no menu to hand over to has now finished: it was held open for
|
||||
|
||||
Reference in New Issue
Block a user