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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-30 17:55:49 +00:00
parent 2799551821
commit 8fac01ed4e
2 changed files with 72 additions and 6 deletions

View File

@@ -9,7 +9,7 @@ dies, which is what this file is for.
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
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)
<!-- /INDEX -->
## 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.1140.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.**

View File

@@ -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