agents: the splash does not animate, and three instruments could not see it
Some checks failed
Some checks failed
A human on a GPU at ~140 fps: "the logos just switch, there is no animation at
all." Measured from a real boot with --film at 0.05 s, then per-frame change:
splash moves 1.30 s of 7.95 s = 16.4 %
publisher splash 0.30 s of motion, then 3.20 s FROZEN
developer splash 0.35 s + 0.25 s, then 2.40 s FROZEN
distinct luma states in 7.95 s 26
A 45-unit build-in cannot be drawn in 26 states, and a fade does not hold one
picture for 3.20 s. The frame counter says 24.8 fps achieved; both are true --
the port is DRAWING 25 times a second and CHANGING almost never.
🔴 Why every check passed, which matters more than the bug:
frozen sweep drives the clock BY HAND -- proves the renderer can draw
pose N, never that the poses are drawn in sequence
settled compare 0.01 % against the capture -- a screen frozen 84 % of the
time matches a settled reference PERFECTLY, that is what
frozen means
achieved fps counts frames DRAWN -- the same pixels 25x/s scores
identically to animating
Every one measured throughput or a pose. None measured CHANGE. Same shape as
InputEventAction bypassing the input map: the instrument sat below the thing
that was broken, so the break could not appear in it.
tools/motion-census closes the class. It measures change and nothing else, and
its --selftest asserts it separates a fade (97.4 % moving) from a switch (2.6 %)
from a frozen film (0.0 %) -- a detector that cannot tell those apart would
report the same green line on all three.
Both briefs: this is the SOLE focus. The port reproduces before changing
anything and gates every fix on a film rather than a still. The decoder maps the
whole pipeline end to end -- disc bytes, the game's per-frame update (does it
interpolate between keyframes or hold?), what is submitted per frame, and what
Canary does to it before a capture records it -- delivered as a SERIES, not a
settled value.
The port should also record the refutation against itself: H2 reads ANSWERED on
the strength of the frozen sweep. The mechanism half stands, the blur is a baked
companion texture. The behaviour half does not.
This commit is contained in:
@@ -1,6 +1,53 @@
|
||||
You are the **Port**. Build the Godot menu shell, one milestone at a time.
|
||||
|
||||
## 🔴 CURRENT FOCUS, set by the human 2026-09-01: THE LOGO SPLASHES, EXACTLY
|
||||
## 🔴🔴 SOLE FOCUS, set by the human 2026-09-02: THE SPLASH DOES NOT ANIMATE
|
||||
|
||||
**Read [`../agents/PLAYTEST-2026-09-02.md`](../agents/PLAYTEST-2026-09-02.md)
|
||||
first. Work nothing else until this is fixed** — not the clock rate, not the
|
||||
plate, not blend, not audio.
|
||||
|
||||
> *"The port does no blur animation at all. The logos just switch."*
|
||||
|
||||
Measured from a real boot, not paraphrased: **the splash moves 1.30 s of 7.95 s
|
||||
(16.4 %)**, the publisher logo is **frozen for 3.20 s**, the developer logo for
|
||||
2.40 s, and the whole 7.95 s takes **26 distinct luma states**. A 45-unit
|
||||
build-in cannot be drawn in 26 states.
|
||||
|
||||
🔴 **Your three instruments all passed this, and the reason is the point:**
|
||||
|
||||
* the **frozen sweep** drives the clock by hand — it proves the renderer can
|
||||
draw pose *N*, never that the poses are drawn in sequence while running;
|
||||
* the **settled comparison** scored 0.01 % — a screen frozen 84 % of the time
|
||||
matches a settled reference *perfectly*, because that is what frozen means;
|
||||
* the **achieved-fps counter** counts frames DRAWN — drawing the same pixels
|
||||
25×/s scores exactly like animating.
|
||||
|
||||
**Every one measured throughput or a pose. None measured CHANGE.** Same shape as
|
||||
`InputEventAction` bypassing the input map: the instrument sat below the thing
|
||||
that was broken.
|
||||
|
||||
**Use [`tools/motion-census`](../../tools/motion-census)** — it measures change
|
||||
and nothing else, and its `--selftest` proves it separates a fade from a switch
|
||||
from a frozen film. Order of work:
|
||||
|
||||
1. **Reproduce first**, with `--film` + `motion-census`, and quote the numbers.
|
||||
If you do not get ~16 %, that disagreement is the finding — say so.
|
||||
2. **Find why the poses do not advance.** Unranked, none established:
|
||||
interpolation returning one pose across a range of *t*; `rest()`/plateau
|
||||
snapping to an endpoint; the group clock not integrating; nearest-keyframe
|
||||
instead of lerp; advancing by keyframe *index* rather than by time.
|
||||
3. **Every fix is gated by a FILM, never a still.** A change that improves a
|
||||
settled frame and leaves the film at 16 % has not fixed this.
|
||||
4. Put `motion-census` in `check-all` so the regression fails a check instead of
|
||||
waiting for a human.
|
||||
|
||||
⚠️ **And record the refutation against yourself.** `BLOCKED.md` H2 reads ✅
|
||||
ANSWERED on the strength of the frozen sweep. The *mechanism* half stands — the
|
||||
blur is a baked companion texture, decoded and correct. The *behaviour* half does
|
||||
not: you draw those quads and do not animate them, so "the companions are drawn"
|
||||
was true and did not mean what the row used it to mean.
|
||||
|
||||
## Previous focus, 2026-09-01 (still live, but AFTER the above)
|
||||
|
||||
A human played this port on a real controller for the first time. Read
|
||||
[`../agents/PLAYTEST-2026-09-01.md`](../agents/PLAYTEST-2026-09-01.md) **before
|
||||
|
||||
Reference in New Issue
Block a user