From 0ba754254718cc75288aea5035d065305f25ee7c Mon Sep 17 00:00:00 2001 From: MechaCat02 Date: Wed, 2 Sep 2026 18:15:03 +0200 Subject: [PATCH] agents: the logo splashes are DONE -- the human cannot tell them from the game "Looks good! Cannot notice any obvious difference from the actual game. Mark logos as done." -- 2026-09-02 Not "the check passes": a person compared the port against the real game and could not tell them apart. That is the oracle, and it is the strongest result this port has produced. The sole-focus order is lifted; both agents return to their milestones. The fix was one word -- pose_at ASSIGNED the settle instant instead of clamping to it, so every query returned the settled pose whatever the clock said. The same line manufactured the false green: the capture harness shoots after two frames, so it was photographing t~=2 units, which looked settled only because everything looked settled. The 0.01 % agreement that closed H2 was measured through the accident. One bug produced the defect AND the evidence of its absence. Verified here before it went to the human, by film rather than by claim: motion 16.4 % -> 27.7 %, distinct luma states 26 -> 43, the publisher ramp 6 steps -> 13 in one continuous run, and the developer splash's interrupting 0.50 s freeze gone. The publisher trajectory rises to a peak and settles back -- the crossfade signature. The port then closed a gap motion-census names in its own header ("a wrong ramp that moves every frame passes here") with a shape check pre-registered from the disc, measured off a film, on a non-overlapped strip, in ratios so the texture divides out: rise:last declared 1.20, measured 1.20 exact. Kept as the standing lesson, because it is the fourth instance: an instrument that sits below the thing under test cannot see it fail. Ask of any new check what it would still report if the feature were entirely absent. Explicitly NOT claimed: P5's gate is "a human clicks through it" and nobody has said the milestone is met. The briefs say so, and say not to record it on the human's behalf. The decoder's end-to-end pipeline work returns to normal priority rather than being dropped -- it is what decides whether the port's 60 units/s matches the game. The ramp is now right in SHAPE and unverified in DURATION. --- docs/agents/PLAYTEST-2026-09-02.md | 83 +++++++++++++++++++++++++++++- docs/agents/decoder-loop.md | 48 +++++++++++++++-- docs/agents/port-loop.md | 33 ++++++++++-- 3 files changed, 155 insertions(+), 9 deletions(-) diff --git a/docs/agents/PLAYTEST-2026-09-02.md b/docs/agents/PLAYTEST-2026-09-02.md index 98a7ad17..03fde8ad 100644 --- a/docs/agents/PLAYTEST-2026-09-02.md +++ b/docs/agents/PLAYTEST-2026-09-02.md @@ -1,6 +1,68 @@ -# Play-test, 2026-09-02 — **the splash does not animate at all** +# Play-test, 2026-09-02 — the splash did not animate. **Now fixed and signed off.** -**This is the only thing either agent works on until it is fixed.** +## ✅ CLOSED THE SAME DAY — the human's verdict, which is the only gate that counts + +> *"Looks good! Cannot notice any obvious difference from the actual game. +> Mark logos as done."* — 2026-09-02 + +**The logo splashes are DONE.** Not "the check passes" — a person compared the +port against the real game and could not tell them apart. That is the oracle, +and it is the strongest result this port has produced. + +⚠️ **Both agents: the sole-focus block is lifted.** Return to your milestones. +What remains open from the play-tests is listed at the bottom of this page; none +of it is this. + +### The root cause was one word + +```diff +- t = settle_instant if settle_instant >= 0.0 else min(t, settle_units(element)) ++ t = min(t, settle_instant) # the comment above it already said "stop at" +``` + +`pose_at` **assigned** the settle instant instead of clamping to it, so every +query returned the settled pose whatever the clock said. + +🔴 **And the same line manufactured the false green.** The capture harness shoots +after two frames, so it was photographing t ≈ 2 units — which *looked* settled +only because everything looked settled. **The 0.01 % agreement that closed H2 was +measured through the accident.** One bug produced the defect and the evidence +that the defect was absent. + +### Verified independently before it went to the human + +Filmed a real boot at 0.05 s, before against after: + +| | before | after | +|---|---|---| +| splash in motion | 1.30 s / 7.95 s (16.4 %) | **2.20 s / 7.95 s (27.7 %)** | +| distinct luma states | 26 | **43** | +| publisher ramp | 0.30 s, 6 steps | **0.65 s, 13 steps, one continuous run** | +| developer splash | two bursts split by a **0.50 s freeze** | **one continuous 0.90 s run** | + +The publisher trajectory rises to a peak and settles back — the **crossfade +signature**: glow alone, then both, then sharp only. The developer splash's +interrupting freeze disappearing is the clearest single sign the clock now drives +the poses. + +The port then closed a gap `motion-census` names in its own header — *"a wrong +ramp that moves every frame passes here"* — with a shape check pre-registered +from the disc, measured off a film, on a strip no other element overlaps, in +**ratios** so the texture divides out: middle:last declared 0.203 / measured +0.213, rise:last declared 1.20 / measured **1.20 exact**. It agrees with the +Decoder's independent measurement of the running game. + +### 🔴 The lesson, which outlives the bug + +Three instruments passed a frozen screen. Keep this: **an instrument that sits +below the thing under test cannot see it fail.** A frozen sweep drives the clock +by hand; a settled comparison is *defined* to pass on a frozen screen; an +achieved-fps counter counts frames drawn, not frames different. Ask of any new +check: *what would this still report if the feature were entirely absent?* + +--- + +## The original report, kept for the record The human, watching the port on real hardware, on a GPU, at ~140 fps: @@ -112,3 +174,20 @@ sweep. The mechanism half stands — the blur is a baked companion texture, that is decoded and correct. **The behaviour half does not**: the port draws those quads and does not animate them, so *"the companions are drawn"* was true and did not mean what the row used it to mean. + +--- + +## What is STILL OPEN after the sign-off + +The logos are done. These are not, and none of them blocks a milestone gate: + +| | | owner | +|---|---|---| +| **H1** | Does a held direction **repeat** in the menus, and at what rate? One step per deflection stays authored. The 61 % arm threshold is decoded and adopted; the 0.11 hysteresis gap is still authored. | Decoder | +| **H3** | The `PRESS Ⓐ` plate. All four named causes are dead and the port measures fractionally **early**, so what the human saw is **unattributed** — deliberately not closed green. ⚠️ Worth re-asking now: the animation fix changed what the whole boot looks like, so the original observation may simply no longer reproduce. | both | +| **pipeline** | The end-to-end graphics account — disc → decode → the game's per-frame update → submitted draws → Canary's processing → the presented frame. Cut short by the sole-focus order and **still the right work**: it is what would let the port know whether its ramp *duration* matches the game rather than only its own declared keyframes. | Decoder | + +**P5's gate is "a human clicks through it" and has NOT been claimed here.** The +human has signed off the *logos*, and separately confirmed that Ⓐ, the stick and +the submenus work. Nobody has said the milestone is met, and an agent must not +say it on their behalf. diff --git a/docs/agents/decoder-loop.md b/docs/agents/decoder-loop.md index 5a0f2cf1..4219330b 100644 --- a/docs/agents/decoder-loop.md +++ b/docs/agents/decoder-loop.md @@ -1,10 +1,52 @@ You are the **Decoder**. Answer the open questions the Godot menu port is blocked on, one at a time. -## 🔴🔴 SOLE FOCUS, set by the human 2026-09-02: THE WHOLE GRAPHICS PIPELINE +## ✅ THE LOGO SPLASHES ARE DONE — signed off by the human, 2026-09-02 -**Read [`PLAYTEST-2026-09-02.md`](PLAYTEST-2026-09-02.md) first. Work nothing -else until this is answered.** +> *"Looks good! Cannot notice any obvious difference from the actual game. +> Mark logos as done."* + +**The sole-focus order is lifted.** The port's defect was `pose_at` assigning the +settle instant rather than clamping to it; your per-frame measurement of the real +game (28 distinct alphas over 28 consecutive presents, modal steps −3 and −14 +against predicted −2.87 and −14.13) is what let their fix be checked for *shape* +and not merely for motion. That is the pairing this team is for. + +### 🔴 The pipeline work is STILL THE RIGHT WORK — continue it, at normal priority + +It was cut short by the sole-focus order, and it remains the thing that decides a +question the port cannot answer about itself: **the port matches its own declared +keyframes; nobody has established that its 60 units/s matches the game.** The +ramp is right in shape and unverified in duration. + +So carry on with the end-to-end account, unchanged in substance: + +``` +disc bytes → RATC/T8aD decode → what the GAME CODE does per frame + → the draw calls it submits → Canary's own processing + → the presented frame +``` + +The three load-bearing questions stand, and the first is now the most valuable: + +1. **The per-frame update** — which function advances a UI group's clock, in what + units, and **what it does between keyframes**. The port interpolates + piecewise-linearly across declared segments and your capture agrees; the + remaining gap is the *rate*. +2. **What is submitted per frame** during a screen's build-in, as a series. +3. **What Canary does to it** before a capture records it — present cadence, + resolve, scale, gamma. + +Also open and yours: **H1** — does a held direction repeat in the menus, and at +what rate? The 61 % arm threshold you decoded is adopted; one step per deflection +is still authored. + +⚠️ Deliver a **series, not a settled value** — see +[`TEMPORAL-VERIFICATION.md`](TEMPORAL-VERIFICATION.md), and note that the port's +whole defect was invisible to three instruments that each measured a pose or a +throughput rather than a change. + +## Previous sole focus, 2026-09-02 — the order, kept for the method A human on real hardware: *"the logos just switch, there is no animation."* Measured from a real boot — **the splash moves 1.30 s of 7.95 s (16.4 %)**, the diff --git a/docs/agents/port-loop.md b/docs/agents/port-loop.md index c0e95400..c8644c2d 100644 --- a/docs/agents/port-loop.md +++ b/docs/agents/port-loop.md @@ -1,10 +1,35 @@ You are the **Port**. Build the Godot menu shell, one milestone at a time. -## 🔴🔴 SOLE FOCUS, set by the human 2026-09-02: THE SPLASH DOES NOT ANIMATE +## ✅ THE LOGO SPLASHES ARE DONE — signed off by the human, 2026-09-02 -**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. +> *"Looks good! Cannot notice any obvious difference from the actual game. +> Mark logos as done."* + +**The sole-focus order is lifted. Return to your milestones.** The fix was +`pose_at` assigning the settle instant instead of clamping to it — and that same +line manufactured the false green, because the capture harness was photographing +t ≈ 2 units and it *looked* settled only because everything did. + +📌 **Keep the lesson, it outlives the bug.** Three instruments passed a frozen +screen: a frozen sweep drives the clock by hand, a settled comparison is +*defined* to pass on a frozen screen, and an achieved-fps counter counts frames +drawn rather than frames different. Ask of any new check: **what would this still +report if the feature were entirely absent?** `tools/motion-census` exists for +exactly that question; keep it in `check-all`. + +⚠️ **P5's gate is "a human clicks through it" and is NOT claimed.** They signed +off the logos, and separately confirmed Ⓐ, the stick and the submenus work. +Nobody has said the milestone is met — **do not record it as met on their +behalf.** If you believe it is ready, say so and ask. + +Still open, none of it blocking: **H1** (does a held direction repeat, and how +fast — one step per deflection stays authored) and **H3** (the plate; every named +cause is dead and the observation is unattributed — ⚠️ worth re-asking, since the +animation fix changed what the whole boot looks like and the original observation +may no longer reproduce). Both are in +[`../agents/PLAYTEST-2026-09-02.md`](../agents/PLAYTEST-2026-09-02.md). + +## Previous sole focus, 2026-09-02 — RESOLVED, kept for the method > *"The port does no blur animation at all. The logos just switch."*