From 6438316f24b75e5fe3609849cac61d9d5e4bf1bd Mon Sep 17 00:00:00 2001 From: MechaCat02 Date: Wed, 2 Sep 2026 18:39:13 +0200 Subject: [PATCH 1/2] agents: correct "both clocks" -- there is ONE, and F4 tests whether it is right I wrote "whether the game snaps both clocks forward" into yesterday's F4 and the human asked which clocks. There are none: authored/flow.json sets `clock: "shared"`, so the title's two composited builds -- build 4 the artwork (finishes t~=118) and build 2/3 the plate (full alpha t=236) -- run on ONE clock started together. Left standing, that phrasing sends an agent hunting for a second clock this corpus says does not exist. Corrected in both briefs and in the playtest page, marked as a correction rather than silently edited. And the question is better than I first framed it. `clock: "shared"` is AUTHORED, and the port's own plate-arrival-halves.md calls it "not falsified... not confirmed to better than ~20 % either", with an unresolved anchor disagreement inside one binary: the reconciliation picked t=118 while settle_time() returns 160 and the boot prints "settles at t=160". So F4 is a TEST OF THAT PREMISE, and the discriminator is observable -- press (A) early, while the wordmark is still building in, and watch the ARTWORK rather than the plate: advances the shared clock -> the artwork SNAPS to finished only forces the plate -> the artwork KEEPS ANIMATING its build-in Both briefs now say to answer F4 before building on `shared`, and tell the port not to choose what "jump" means. --- docs/agents/PLAYTEST-2026-09-02-menus.md | 38 ++++++++++++++++++++---- docs/agents/decoder-loop.md | 30 ++++++++++++++----- docs/agents/port-loop.md | 2 +- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/docs/agents/PLAYTEST-2026-09-02-menus.md b/docs/agents/PLAYTEST-2026-09-02-menus.md index 021f847c..0d48b185 100644 --- a/docs/agents/PLAYTEST-2026-09-02-menus.md +++ b/docs/agents/PLAYTEST-2026-09-02-menus.md @@ -103,14 +103,40 @@ player gets past the boot. | Ⓐ #3 | activates the plate → main menu | ✅ implemented | * **Port:** Ⓐ during the title build-in should jump the sequence to the plate's - arrival rather than being swallowed. ⚠️ **Careful what "jump" means** — the - plate has a declared arrival at `t=238` and the title a build-in ending at - `t≈118`. Whether the game *snaps* both clocks forward, or only reveals the - plate and leaves the title where it is, is a question, not a detail. Ask if - the capture does not say. -* **Decoder:** what does Ⓐ do to the clocks? This is also a **second, cheap route + arrival rather than being swallowed. ⚠️ **Careful what "jump" means, and do + not choose it.** See below — it is a test of an authored premise, not a detail. +* **Decoder:** what does Ⓐ do to the clock? This is also a **second, cheap route to the plate-arrival question** — a press that skips to the plate tells you where the game thinks the plate belongs. + +### 🔴 F4 is a TEST OF `clock: "shared"`, which is authored and only ~20 % confirmed + +**Correction, by the human who wrote this page: an earlier draft said "both +clocks". There is only ONE.** `authored/flow.json` sets `"clock": "shared"`: the +title is two composited builds — build 4 the artwork, build 2/3 the plate — and +they run on **one clock started together**. Build 4's artwork finishes at +`t ≈ 118`; the plate reaches full alpha at `t = 236`. Saying "both clocks" would +send someone hunting for a second one that this corpus says does not exist. + +With that fixed, the question is sharp and **observable**: + +| if Ⓐ … | then pressing EARLY looks like | +|---|---| +| **advances the shared clock** | the title artwork **snaps** to finished, and the plate appears | +| **only forces the plate visible** | the artwork **keeps animating** its remaining build-in while the plate appears over it | + +So film a boot, press Ⓐ while the wordmark is still building in, and watch the +**artwork**, not the plate. + +📌 **Why this matters beyond the feature.** `clock: "shared"` is **authored**, and +`plate-arrival-halves.md` says in its own words that it is *"not falsified… not +confirmed to better than ~20 % either"*. There is also an unresolved anchor +disagreement **inside one binary**: the reconciliation picked `t=118`, while +`settle_time()` returns **160** and the boot prints `settles at t=160`. + +If Ⓐ snaps the artwork, that is evidence **for** one shared clock. If the artwork +carries on while the plate appears, the plate has a timeline of its own and the +authored premise is in trouble. **Answer F4 before building on `shared`.** * 📌 And it bears on `REFUTED.md`: *"any title after the first one refuses input"* is already narrowed to the attract-returned title. This is a third input the boot title accepts. diff --git a/docs/agents/decoder-loop.md b/docs/agents/decoder-loop.md index c02c84d2..e51986bf 100644 --- a/docs/agents/decoder-loop.md +++ b/docs/agents/decoder-loop.md @@ -62,14 +62,30 @@ because the port is blocked on two of them. the plate appears or when Ⓐ is accepted? ⚠️ A negative needs a positive control (R4): show the method finding the *menu's* cue before concluding the title has none. -4. **F4 — WHAT DOES Ⓐ DO TO THE CLOCKS?** In the real game, Ⓐ during the title +4. **F4 — WHAT DOES Ⓐ DO TO THE CLOCK?** In the real game, Ⓐ during the title build-in **reveals the plate immediately** — so the boot takes three presses: - skip video, reveal plate, accept plate. Does the game snap both clocks - forward, or only reveal the plate? 📌 This is also a **cheap second route to - the plate-arrival question**: a press that skips to the plate tells you where - the game thinks the plate belongs. And it is a third input the boot title - accepts, which narrows `REFUTED.md`'s *"any title after the first refuses - input"* further. + skip video, reveal plate, accept plate. + + 🔴 **This is a test of `clock: "shared"`.** The title is two composited builds + — build 4 the artwork (finishes `t≈118`), build 2/3 the plate (full alpha + `t=236`) — and the port's `authored/flow.json` runs them on **one** clock + started together. That premise is **authored**, and the port's own + `plate-arrival-halves.md` calls it *"not falsified… not confirmed to better + than ~20 %"*, with an unresolved anchor disagreement inside one binary + (`t=118` from the reconciliation, `160` from `settle_time()`). + + The discriminator is observable: **press Ⓐ early, while the wordmark is still + building in, and watch the ARTWORK, not the plate.** + + | if Ⓐ … | the artwork | + |---|---| + | advances the shared clock | **snaps** to finished | + | only forces the plate visible | **keeps animating** its remaining build-in | + + 📌 It is also a **cheap second route to the plate-arrival question** — a press + that skips to the plate says where the game thinks the plate belongs — and a + third input the boot title accepts, narrowing `REFUTED.md`'s *"any title after + the first refuses input"* further. ⚠️ Deliver a **series, not a settled value** — see [`TEMPORAL-VERIFICATION.md`](TEMPORAL-VERIFICATION.md), and note that the port's diff --git a/docs/agents/port-loop.md b/docs/agents/port-loop.md index f6a4814e..b98505a4 100644 --- a/docs/agents/port-loop.md +++ b/docs/agents/port-loop.md @@ -32,7 +32,7 @@ difficulty select comes first in the real game and that the port announces it. | **F1** | **The menu REPEATS on a held direction. Ours does not.** One step per deflection was authored as the safe choice; the human has now watched the real game and it repeats. | **Implement the mechanism. Take the RATE from the Decoder — do NOT ship a placeholder interval.** An invented rate here is indistinguishable from a measured one later, and this is the exact field where that already cost us. | | **F2** | **SFX too loud, and there is no mix at all.** Measured: `confirm` −17.7 dB mean / **−0.0 dB peak**, 3 dB hotter than the music; no gain value exists anywhere in `export/` or `authored/`. | Add gains **at playback, as data** — a bus per kind. ⚠️ **Do NOT normalise in the exporter**: re-levelling destroys the relationship between clips and a modder cannot undo it. The Decoder is checking whether the mix is on the disc. | | **F3** | **Something is missing on the title screen** — a track or a sting. The export has one music file and the port plays nothing on the title. | Wait for the Decoder; nothing to author yet. | -| **F4** | **Ⓐ skips FORWARD through the boot, and we implement two of three presses.** Ⓐ#1 skips the video ✅, **Ⓐ#2 reveals the plate immediately ❌ missing**, Ⓐ#3 activates it ✅. | Make Ⓐ during the title build-in jump to the plate. ⚠️ Whether the game snaps **both** clocks forward or only reveals the plate is a question — ask rather than choose. | +| **F4** | **Ⓐ skips FORWARD through the boot, and we implement two of three presses.** Ⓐ#1 skips the video ✅, **Ⓐ#2 reveals the plate immediately ❌ missing**, Ⓐ#3 activates it ✅. | Make Ⓐ during the title build-in jump to the plate — but **do not choose what "jump" means.** 🔴 It is a **test of `clock: "shared"`**, which is authored and, in your own words, *"not confirmed to better than ~20 %"*. If Ⓐ advances the shared clock the artwork **snaps**; if it only forces the plate visible the artwork **keeps animating**. Those look different on an early press, so the oracle can settle it. **Answer it before building on `shared`.** (Correction: an earlier draft of this brief said "both clocks" — there is only ONE, and hunting for a second would waste an iteration.) | **H3, the plate delay, is ACCEPTED** — *"feels the same… sufficient"*. Stop working on it. Leave the row unattributed rather than closing it green. From fee2e4278a277a0df7c718a88cd87848e1365df4 Mon Sep 17 00:00:00 2001 From: MechaCat02 Date: Wed, 2 Sep 2026 20:14:46 +0200 Subject: [PATCH 2/2] agents: one item only -- the title's animation timing -- and split work into human-checkable units Two new findings from the human, both about WHEN a title animation starts, and both handed over rather than guessed: F5 Does (A) SNAP the title to finished, or ACCELERATE it? The human says they cannot tell and is right that they cannot -- a three-frame acceleration and a one-frame cut look identical to an eye. Two routes that should agree: a per-frame capture (acceleration shows intermediate alphas, a cut shows none) and the code (assigning a target time and raising a rate multiplier are different instructions). Their "looks more like a snap on multiple attempts" is recorded as a PRIOR, not a result. F6 The title's sweeping white glow -- ptloop01/ptloop02, the blue PCB-like lines -- starts only when the plate appears in the real game, and starts earlier in the port. A lead from the exported declaration, mine and unverified: those elements are keyed at t = 0, 70, 100, 238, 250 while the plate reaches full alpha at 236, with pteff02 keyed at exactly 236 and ptlogo_back2eff and ptcopyright at 238. 236-238 is a synchronisation point in the declared data and a human just reported a behaviour change there. Flagged AGAINST itself too: 238...250 looks equally like an exit ramp -- ptcopyright uses that shape and starts nothing -- and the sweep lives in a nested .rat leaf with its own timeline. F6 bears on clock: "shared" and on F4: if a title element does not move until the plate arrives, either the declared data says so and our keyframe reading is wrong, or something at the plate's arrival STARTS it, which is a mechanism nobody has proposed. And the process change, which is the human's and outlives this item: "attacking the 'whole' mission was too big for them to handle. Split the given missions and tasks into even smaller tasks which they can tackle and give to a human for feedback." PROTOCOL.md gains "Work in units a human can check in a minute". A milestone is not a unit of work, it is a bag of them. A unit is right-sized when it ends in something a person can judge in under a minute WITHOUT READING ANYTHING, and each one states its question, what the human looks at, and what it does NOT cover. Do one, hand it over, stop -- an unverified fix under a second change makes a regression two-variable. The evidence for the rule is this week: the splash sat through a whole milestone and took one day once scoped to "does it animate?". The bar is a HUMAN check, not a green tool -- three instruments passed a frozen screen. --- docs/agents/PLAYTEST-2026-09-02-menus.md | 77 ++++++++++++++++++++++++ docs/agents/PROTOCOL.md | 39 ++++++++++++ docs/agents/decoder-loop.md | 34 +++++++++++ docs/agents/port-loop.md | 29 +++++++++ 4 files changed, 179 insertions(+) diff --git a/docs/agents/PLAYTEST-2026-09-02-menus.md b/docs/agents/PLAYTEST-2026-09-02-menus.md index 0d48b185..0b27a5b9 100644 --- a/docs/agents/PLAYTEST-2026-09-02-menus.md +++ b/docs/agents/PLAYTEST-2026-09-02-menus.md @@ -143,6 +143,83 @@ authored premise is in trouble. **Answer F4 before building on `shared`.** --- +## F5 — Ⓐ: does the animation SNAP, or accelerate? **A human cannot tell.** + +Follow-up from the same human, and the honesty in it is the useful part: + +> *"I think the animation speeds up to the finished state. So it is not a snap in +> the sense of a cut, but rather becoming much quicker — which however feels +> instant too, so it is difficult to discern by a human. It might also actually +> snap/cut to the finished state, but appear as a quick animation… Similar to how +> videos work by quickly playing distinct frames. So I cannot tell certainly +> which it is. Upon multiple attempts it does look more like a snap. Decoder +> still should verify."* + +**This is a question the oracle-by-eye cannot answer, and it is being handed over +as such rather than guessed.** A three-frame acceleration and a one-frame cut are +indistinguishable to a person; they are trivially distinguishable to an +instrument. Two independent routes, and they should agree: + +1. **Per-frame capture.** Press Ⓐ mid-build-in and read the submitted alphas + frame by frame. An acceleration shows **intermediate values**; a cut shows + one transition and none. This is a counting question — see + [`TEMPORAL-VERIFICATION.md`](TEMPORAL-VERIFICATION.md), and note that the eye + failing here is exactly why. +2. **The code.** Whatever Ⓐ does to the clock is a store somewhere: does it + assign the target time, or raise a rate multiplier? A snap and a speed-up are + different instructions, and the image says which. + +⚠️ The human's *"looks more like a snap on multiple attempts"* is a **prior, not +a result.** Do not let it stand in for the measurement, and say so if the +measurement disagrees with it. + +## F6 — 🔴 The title's sweeping glow starts TOO EARLY in the port + +> *"…blue geometric lines (like on a PCB, straight lines and rectangular or 45° +> turns). These have a white glow moving on them as an animation. In the game +> this animation only starts when the plate is shown — basically the animation +> starts the same as the 'insert' of the plate. In the port it already starts +> before the plate arrives."* + +**The elements are `ptloop01` and `ptloop02`** — already known to this corpus as +the sweeps whose leaf *"sweeps a 400 px quad whose left edge travels +−639…1521"*, and whose free-running on the settled title is a ❌ entry in +`REFUTED.md` (they **do** free-run). Nothing there says **when they start**, and +that is the whole of this finding. + +### 📌 A lead, from the exported declaration — MINE, unverified, check it first + +`title.json` gives `ptloop01` and `ptloop02` keyframes at: + +``` +t = 0, 70, 100, 238, 250 +``` + +and the plate reaches full alpha at **`t = 236`**. They are not alone: `pteff02` +has a key at exactly **236**, and `ptlogo_back2eff` and `ptcopyright` at **238**. +**236–238 is a synchronisation point in the declared data**, and the human has +just reported a behaviour change at that instant. + +So the first question is cheap: **is the sweep's motion declared to begin at 238, +with the port instead free-running the leaf from t=0?** If so this is a decode +question with a decoded answer, and nothing needs authoring. + +⚠️ **Two reasons not to take that lead as the answer.** The `238…250` pair looks +just as much like an **exit ramp** — `ptcopyright` and `ptlogo_back2eff` use +exactly that shape and they are certainly not starting anything. And the sweep +lives in a **nested `.rat` leaf** with its own three keyframes, so the parent's +envelope and the leaf's motion are different timelines. Which of the two the +human is watching is the thing to establish. + +### Why this one is worth prioritising + +It bears directly on **F4 and on `clock: "shared"`**. If a title element does not +begin moving until the plate arrives, then either the declared data says so — in +which case the shared clock survives and our reading of the keyframes is wrong — +or something at the plate's arrival **starts** it, which is a mechanism nobody +has proposed. Either answer constrains the clock question that F4 is also +probing. + ## H3 — the plate delay is ACCEPTED > *"Delay feels the same. Cannot verify it is exact same, but is sufficient."* diff --git a/docs/agents/PROTOCOL.md b/docs/agents/PROTOCOL.md index 92cc2052..71410dcb 100644 --- a/docs/agents/PROTOCOL.md +++ b/docs/agents/PROTOCOL.md @@ -152,6 +152,45 @@ asking X"** rather than approximating. An approximation from the wrong agent arrives with no classification attached and is indistinguishable from a measurement a month later. +## Work in units a human can check in a minute + +**Set by the human, 2026-09-02, from what actually worked.** The splash bug had +sat through a whole milestone. Scoped to *one* question — *does it animate?* — it +was found, fixed, verified and signed off in a day. + +> *"I think attacking the 'whole' mission was too big for them to handle. Split +> the given missions and tasks into even smaller tasks which they can tackle and +> give to a human for feedback."* + +So: **a milestone is not a unit of work. It is a bag of them.** Before starting, +split it, and pick one. + +A unit is right-sized when it ends in something **a person can judge in under a +minute without reading anything**. Not "P6 audio" — *"the confirm SFX is no +longer louder than the music; listen once."* Not "the title screen" — *"the glow +starts when the plate appears; watch one boot."* + +Each unit, written down **before** the work: + +* **the question**, as one sentence a non-expert could answer; +* **what the human looks at**, and what pass and fail each look like; +* **what it does NOT cover** — the neighbouring thing you are deliberately not + fixing, so nobody reads a narrow pass as a broad one. + +Then: **do that one, hand it over, and stop.** Do not run ahead into the next +unit while the first is unverified — an unverified fix underneath a second change +is how a regression becomes two-variable and unattributable. + +⚠️ **The bar is a HUMAN check, not a green tool.** Three instruments passed a +frozen screen. A tool answers *did my change do what I intended*; only the person +answers *is it right*. When a unit needs a look, say so plainly and say what to +look at — an ask that is buried in a document nobody opens is not an ask. + +📌 And this bounds the writing, which has been the other failure: the retro found +`DECISIONS.md` past 13 000 lines while the gate did not move. **A unit's record +is proportional to the unit.** If explaining it takes longer than doing it, the +unit was too big or the writing is doing something other than explaining. + ## Publishing * Commit to `auto/`; a human merges. diff --git a/docs/agents/decoder-loop.md b/docs/agents/decoder-loop.md index e51986bf..c38b62e0 100644 --- a/docs/agents/decoder-loop.md +++ b/docs/agents/decoder-loop.md @@ -1,6 +1,40 @@ You are the **Decoder**. Answer the open questions the Godot menu port is blocked on, one at a time. +## 🔴🔴 SOLE FOCUS, 2026-09-02: **THE TITLE'S ANIMATION TIMING — F5 and F6, nothing else** + +**Work only these two.** Not the pipeline, not the audio mix, not the repeat +rate — they stay queued in +[`PLAYTEST-2026-09-02-menus.md`](PLAYTEST-2026-09-02-menus.md). + +> *"Let's have the agents focus on this item and only this only."* + +**F6 first** — it is the one with a lead. A human reports that the title's +sweeping white glow (**`ptloop01` / `ptloop02`**, the blue PCB-like lines) **only +starts when the plate appears** in the real game, while the port starts it +earlier. `title.json` declares those elements at `t = 0, 70, 100, 238, 250` and +the plate reaches full alpha at **`t = 236`** — with `pteff02` keyed at exactly +236 and `ptlogo_back2eff`/`ptcopyright` at 238. **236–238 is a synchronisation +point in the declared data and a human just reported a behaviour change there.** +⚠️ `238…250` may equally be an **exit ramp** (`ptcopyright` uses that shape and +starts nothing), and the sweep lives in a nested `.rat` leaf with its own +timeline. Establish which of the two the human is watching. + +**F5 second** — does Ⓐ **snap** the title to finished, or **accelerate** it? The +human says they cannot tell, and is right that they cannot: a three-frame +acceleration and a one-frame cut look identical to an eye. Two routes, and they +should agree: a **per-frame capture** (an acceleration shows intermediate alphas, +a cut shows none) and **the code** (assigning a target time and raising a rate +multiplier are different instructions). Their *"looks more like a snap"* is a +**prior, not a result** — say so if the measurement disagrees. + +### And split it before you start + +**Read the new "Work in units a human can check in a minute" section of +[`PROTOCOL.md`](PROTOCOL.md).** The human's diagnosis is that whole missions have +been too big to hold. Break even F6 down, write the question and the +look-at-this-and-you-will-see before working, do one, hand it over, stop. + ## ✅ THE LOGO SPLASHES ARE DONE — signed off by the human, 2026-09-02 > *"Looks good! Cannot notice any obvious difference from the actual game. diff --git a/docs/agents/port-loop.md b/docs/agents/port-loop.md index b98505a4..6fd67c27 100644 --- a/docs/agents/port-loop.md +++ b/docs/agents/port-loop.md @@ -1,5 +1,34 @@ You are the **Port**. Build the Godot menu shell, one milestone at a time. +## 🔴🔴 SOLE FOCUS, 2026-09-02: **THE TITLE'S ANIMATION TIMING — F5 and F6, nothing else** + +**Work only these.** Not the repeat rate, not the audio mix, not P7 — they stay +queued in +[`../agents/PLAYTEST-2026-09-02-menus.md`](../agents/PLAYTEST-2026-09-02-menus.md). + +> *"Let's have the agents focus on this item and only this only."* + +**F6 — the title's sweeping white glow starts too early here.** A human watching +the real game reports that the glow travelling along the blue PCB-like lines +(**`ptloop01` / `ptloop02`**) **only begins when the plate appears**; the port +starts it before. **This is the Decoder's to establish and yours to implement** — +do not choose a start time. What you *can* do now without an answer: determine +exactly **what your renderer currently uses** to start that sweep, so that when +the answer lands the change is one line and not an investigation. + +**F5 — does Ⓐ snap or accelerate the title?** The Decoder is measuring it. Until +they answer, **do not implement Ⓐ#2** — a snap and a speed-up are different +behaviours and picking one is exactly the guessing that has cost this project. + +### And split it before you start + +**Read the new "Work in units a human can check in a minute" section of +[`PROTOCOL.md`](PROTOCOL.md).** The human's diagnosis is that whole missions have +been too big to hold — the splash sat through a milestone, then took a day once +scoped to *does it animate?*. Break the work down, write the question and what +the human should look at **before** working, do one unit, hand it over, and stop. +Do not stack a second change on an unverified first. + ## ✅ THE LOGO SPLASHES ARE DONE — signed off by the human, 2026-09-02 > *"Looks good! Cannot notice any obvious difference from the actual game.