port: withdraw 'the boot is known too fast' -- the splash dwells are declared and the port already played them

The Decoder measured both splashes over 3 cold boots: publisher t=0..255,
developer t=0..210, the developer agreeing with wall clock to 1.1%. The port
emits each declared value plus the 9-unit black hold, exactly. No code change.

My error was the generalisation, not the arithmetic: build 4 is the title, whose
exit is caused from outside its timeline, so it holds; a splash's exit is caused
by nothing, so it plays out. I used the one boot screen the port is unaffected
by to overturn the two it governs. Declining to scale by 9x while adopting the
conclusion that implied was half a caution.

Also refutes their two splash boundaries as not comparably anchored: 2.237 vs
2.414 units/frame in one boot, and the publisher has a glow symmetric with the
developer's three.

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 21:32:08 +00:00
parent b366e404ee
commit be643ba58a
5 changed files with 153 additions and 79 deletions

View File

@@ -350,21 +350,20 @@ func _process(delta: float) -> void:
return
# A screen holds at `rest` until it has arrived, then plays itself out and
# the next one begins. Nothing waits on a timer the disc does not carry.
# the next one begins. Nothing waits on a timer the disc does not carry --
# and for the two splashes that is now MEASURED to be right, not merely
# cautious. Their dwells are declared: publisher t=0..255, developer
# t=0..210, corroborated over 3 cold boots to 1.1 % on the developer. The
# port emits each declared value plus the 9-unit black hold, exactly.
#
# 🔴 That is a choice made for lack of a number, NOT a reproduction of the
# game's pacing, and this comment used to claim otherwise. Measured in the
# draw stream (docs/port/DECISIONS.md, "The clock freezes at settle"): the
# top-level clock advances through the build-in, STOPS inside the settle
# window and holds -- build 4 declares ~120 presented frames and dwelled
# ~1100. The exit ramp is not on a timer; it plays when something makes the
# screen leave. Leaving AT settle, as the line below does, is leaving at the
# instant the real game starts waiting.
# ⚠️ The title is the exception and it is why this loop leaves the LAST screen
# alone: build 4 declares ~120 presented frames and dwells ~1100, because its
# exit is caused by something outside its timeline. A splash's exit is caused
# by nothing, so it plays out. Do not generalise either one to the other --
# a previous revision of this comment did, in both directions.
#
# The structure here is right and the duration is wrong: `_advance` is
# already caused by the next screen rather than scheduled, which is what the
# measurement says the game does. What is missing is the hold, and it goes
# in `authored/flow.json` `dwell` the day a capture times one.
# `_advance` is CAUSED by the next screen arriving, never scheduled off a
# timer, which is what the draw stream says the game does.
if view.holding and view.time_units >= view.settle_time():
# The LAST screen in the sequence keeps holding. A screen plays itself
# out because something is taking its place; nothing is taking the