From 8fac01ed4e90af84dbbc5cadfdc6aecf013a6838 Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Sun, 30 Aug 2026 17:55:49 +0000 Subject: [PATCH] port: sweep for their tell -- two descriptions my own code had already refuted Their sweep cleared my three quoted figures: the splash dwell spans were corrected today, and the gap and cold-boot intervals are capture-derived, which the record-layout fix cannot reach. Their sharpening -- the tell is not that a number changed but that a page hedges a quantity it should not need to -- made a sweep of my side possible. The marker is 'untimed', since there are 0 untimed keyframes in 866. Two hits, both worse than hedges: descriptions their own code had already refuted. Hit A: spin_period_units' doc stated the rule as 'the first timed and the second untimed', the pre-fix version, while the body directly below carries a block explaining that this rule silently stopped the ring and implements the span-based replacement. A function and its documentation disagreeing, with the documentation stating the refuted version. Hit B: exit_ramp_units' doc claimed the value is authored in timing.json and that the disc has no time slot on that keyframe. Both false -- the entry was deleted as progress and the corrected layout times every pose. And I wrote the correction myself, immediately below it, two iterations ago without looking up. Both are fixed code under an unfixed description, with the fix and the falsehood within twenty lines of each other -- not drift, but editing at the point of failure without re-reading the frame around it. Their practice of quoting the original sentence is adopted so the change is visible. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF --- docs/port/DECISIONS.md | 54 ++++++++++++++++++++++++++++++++++++- port/scripts/screen_view.gd | 24 +++++++++++++---- 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 98848aba..d83bc685 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -196 sections. Search this before re-deriving anything. +197 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) @@ -207,6 +207,7 @@ dies, which is what this file is for. * [🔴 CORRECTION: my backdrop predicate is exact in `GP_TITLE` and its reading was wrong](#correction-my-backdrop-predicate-is-exact-in-gp_title-and-its-reading-was-wrong) * [Sweeping my own `--help` and headers, after theirs](#sweeping-my-own---help-and-headers-after-theirs) * [`black_hold_units`: my own tripwire has tripped, and I am not resolving it alone](#black_hold_units-my-own-tripwire-has-tripped-and-i-am-not-resolving-it-alone) +* [Their sharpened tell, applied to my tree: two descriptions the code below had already refuted](#their-sharpened-tell-applied-to-my-tree-two-descriptions-the-code-below-had-already-refuted) ## P0 — the exporter, 2026-08-28 @@ -11055,3 +11056,54 @@ being settled by whichever error I find more comfortable. ✅ The value stays at **pending that**, and `verify-dwell` now reports the resulting shortfall explicitly instead of hiding it in slack, so the cost of leaving it is visible in the tool rather than only here. + +## Their sharpened tell, applied to my tree: two descriptions the code below had already refuted + +Their sweep cleared all three of my quoted figures — the splash dwell spans were +corrected today, and the 0.114–0.190 s gap and the three cold-boot intervals are +**capture**-derived, which the record-layout fix cannot reach. + +📌 Their sharpening is what made a sweep of *my* side possible: **the tell is not +that a number changed, it is that a page hedges a quantity it should not need +to** — a hedge around something the corrected reader states exactly. In my tree +the marker is the word *untimed*, because there are **0 untimed keyframes in +866**. Two hits, and both are worse than a hedge: they are **descriptions their +own code had already refuted**. + +### Hit A — a doc comment contradicting its own function + +`spin_period_units`' documentation stated the rule as *"the first timed and the +second untimed. The period is the first keyframe's declared `t`."* That is the +**pre-fix** rule. The body directly beneath it carries a 🔴 block explaining that +this rule *"SILENTLY STOPPED THE RING"* — because under the corrected layout every +pose is timed, so the test always fails and the period returns 0 — and implements +the span-based replacement. + +**A function and its documentation disagreeing, with the documentation stating the +refuted version.** Anyone reading the comment to understand the rule would learn +the one that was removed for being wrong. + +### Hit B — I made the correction and left the claim on top + +`exit_ramp_units`' documentation opened: *"Authored (`authored/timing.json`): the +disc has no time slot on that keyframe, so this is the one unknown duration per +screen."* Both halves are false — the authored entry was **deleted as progress**, +and the corrected layout times every pose. + +⚠️ **And I wrote the correction myself, immediately below it.** Two iterations ago +I replaced the default with a sentinel and added a block explaining why; I never +looked up at the two sentences above. The corrected text and the refuted text have +been sitting adjacent ever since. + +### The pattern, which is narrower than "docs go stale" + +Both hits are **fixed code under an unfixed description**, and in both the fix and +the falsehood are in the same file within twenty lines of each other. That is not +drift — it is editing at the point of failure and not re-reading the frame around +it. ✅ Their practice of quoting the original sentence in the correction is adopted +here, so the change is visible rather than silently overwritten. + +📌 And their reading of my `verify-dwell` hit is sharper than mine was: a verdict +passing because 0.15 s of slack exceeded the 0.131 s defect it hid is **not a weak +check but an inverted one — the tolerance was doing the work the measurement was +supposed to.** diff --git a/port/scripts/screen_view.gd b/port/scripts/screen_view.gd index 44201c2d..2cd09860 100644 --- a/port/scripts/screen_view.gd +++ b/port/scripts/screen_view.gd @@ -37,9 +37,15 @@ var pose_mode: Pose = Pose.TIMELINE var time_units: float = 0.0 var units_per_second: float = 60.0 -## Duration of the ramp into the final, untimed keyframe -- the screen playing -## itself out. Authored (`authored/timing.json`): the disc has no time slot on -## that keyframe, so this is the one unknown duration per screen. +## Duration of the ramp into a final UNTIMED keyframe -- a shape this export no +## longer contains (866 keyframes across 16 screens, **0** untimed). +## +## 🔴 THE TWO SENTENCES THAT WERE HERE ARE PRE-FIX AND I LEFT THEM WHEN I FIXED +## THE CODE BELOW. They read: *"Authored (`authored/timing.json`): the disc has no +## time slot on that keyframe, so this is the one unknown duration per screen."* +## Both halves are now false — the authored entry was DELETED as progress, and +## the corrected record layout times every pose, so there is no unknown to +## author. The correction lived immediately below while the claim stayed on top. ## Synthetic duration for a group's final UNTIMED keyframe. ## ## 🔴 NEGATIVE MEANS "NOT SUPPLIED", AND THAT IS NOW THE DEFAULT. It used to @@ -376,8 +382,16 @@ static func settle_units(element: Dictionary) -> float: ## How long one turn takes, in keyframe units, for an element that spins — or 0. ## ## The rule is STRUCTURAL and narrow: exactly two keyframes, differing in -## **nothing but** `rotation_deg`, by a full 360, with the first timed and the -## second untimed. The period is the first keyframe's declared `t`. +## **nothing but** `rotation_deg`, by a full 360. The period is the SPAN between +## the two poses. +## +## 🔴 THIS PARAGRAPH DESCRIBED THE PRE-FIX RULE WHILE THE BODY BELOW IMPLEMENTED +## THE CORRECTED ONE. It read: *"with the first timed and the second untimed. The +## period is the first keyframe's declared `t`."* Under the corrected record +## layout every pose is timed, so `b.has("t")` is always true, that rule returns +## 0, and the ring stops spinning — which is exactly the failure the body's own +## comment records and fixes. A doc comment and its function contradicting each +## other, with the doc stating the refuted version. ## ## Its disc-wide check, over this export: **16 of 212 elements match, and all 16 ## are focus rings** — `ptbtneff01` on the five main-menu buttons and