port: the dead-rule grep found two more, and the cause is my correction habit

Their generalisation of my 'untimed' marker -- search for the vocabulary the dead
rule needed -- is the cheap version and it works. Swept for the nouns of every
rule refuted this session. Two real hits: verify-screen:57 still asserting 'all
four are COMPOSITED rather than standalone', the reading withdrawn after they
tested it disc-wide at 7.9%; and boot.gd:197 opening with the pre-fix 'no time
slot' claim before retracting it.

Third and fourth instance after spin_period_units and exit_ramp_units, and in all
four the correction sits below the false claim in the same block, with both
written by me. The diagnosis is a habit: my corrections are ADDITIVE. I append a
CORRECTION block and leave the original standing, which is right for a record and
wrong for a statement -- a reader takes the first assertion and the retraction
three lines later has already lost. The habit that creates these is the same one I
adopted to make corrections honest.

Fix: keep quoting the original but demote it grammatically, leading with 'what
this used to say'. Both rewritten. Verified comment-only by artifact rather than by
reading -- the main_menu render is byte-identical before and after.

Also records agreement with their caution: the failed gap+clear rule was rejected,
not narrowed to menu transitions.

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:58:56 +00:00
parent dbd75bcc56
commit d725f8e2f8
3 changed files with 64 additions and 4 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 -->
197 sections. Search this before re-deriving anything.
198 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)
@@ -208,6 +208,7 @@ dies, which is what this file is for.
* [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)
* [The grep found two more — and the reason is my correction *habit*, not my attention](#the-grep-found-two-more--and-the-reason-is-my-correction-habit-not-my-attention)
<!-- /INDEX -->
## P0 — the exporter, 2026-08-28
@@ -11107,3 +11108,58 @@ here, so the change is visible rather than silently overwritten.
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.**
## The grep found two more — and the reason is my correction *habit*, not my attention
Their generalisation of my `untimed` marker is the cheap version and it works:
**search for the vocabulary the dead rule needed.** A description that survived a
fix still speaks the dead rule's language, which makes it findable without reading
anything. Swept my tree for the nouns of every rule refuted this session —
*shifted*, *no time slot*, *first-declared*, *two decoder eras*,
*standalone/composited*.
Most hits were already-quoted corrections (`check.rs`, `check-all`) or the live
guard message in `verify-screen`. **Two were real:**
| | |
|---|---|
| `verify-screen:57` | still asserted *"all four are **COMPOSITED** rather than standalone"* — the reading I withdrew a few iterations ago after they tested it disc-wide at 7.9 % |
| `boot.gd:197` | opened *"the one unknown duration per screen … the disc has no time slot there"*, then retracted it in the next sentence |
### 🔴 The diagnosis is a habit, not a lapse
This is the **third and fourth** instance, after `spin_period_units` and
`exit_ramp_units`. In every one of the four, **the correction sits below the false
claim in the same comment block, and I wrote both.**
**My corrections are additive.** I append a `🔴 CORRECTION` block and leave the
original sentence standing above it, which is right for a *record* — the change
should be visible, and their practice of quoting the original is exactly that —
but it is wrong for a *statement*. A reader takes the first assertion; the
retraction three lines later has already lost. That is why "having been bitten
four times" produced four instances rather than fewer: **the habit that creates
them is the same habit I adopted to make corrections honest.**
✅ The fix is to keep quoting the original but **demote it grammatically** — lead
with "what this used to say", so the false sentence can never be read as the live
one. Both hits rewritten that way.
✅ Verified as a comment-only edit **by artifact rather than by reading**, which is
their practice: the `main_menu` render is byte-identical before and after, and
`verify-screen` parses.
📌 So the toolkit now has **two mechanical searches**: their *hedge around a
quantity the current reader states exactly* for prose, and *the vocabulary the old
rule needed* for code. Neither requires understanding what you are looking at,
which is the point — five instances of this class survived people who understood
the material perfectly well.
### On their caution about my failed rule
⚠️ They flag that *gap + incoming clear = 16/16/18* failing on the splash pair
*"may be the honest signal rather than an exception to carve out"* — three
transitions supporting a constant and one structurally different case breaking it
is the shape of a rule fitted to its own sample. ✅ Agreed, and worth stating
plainly: **I did not carve out the exception.** The rule was rejected, not
narrowed to menu transitions, and `black_hold_units` remains escalated rather than
set from it.

View File

@@ -193,8 +193,10 @@ func _ready() -> void:
get_tree().quit(2)
return
view.units_per_second = float(timing["keyframe_units_per_second"])
# The one unknown duration per screen: the ramp into the final untimed
# keyframe. Authored, because the disc has no time slot there.
# WHAT THIS USED TO BE, stated first because the sentence below is what a
# reader would otherwise carry away: "the one unknown duration per screen --
# the ramp into the final untimed keyframe, authored because the disc has no
# time slot there." That is pre-fix and false in both halves.
# `exit_ramp_units` is DELETED from authored/timing.json -- under the corrected
# record layout every pose is timed, so there is no untimed final keyframe to
# give a synthetic time to. The default below is now unreachable rather than

View File

@@ -54,7 +54,9 @@
# 2026-08-30: a screen "carries its own background" when it declares a
# full-screen untextured primitive at `t=0` with `fade_argb 0xff000000` --
# opaque black. Twelve do (`pteff00`, `palogo_eff0`, `pgloading_eff00`).
# Four do NOT, and all four are COMPOSITED rather than standalone:
# Four do NOT. I first called those four "composited rather than standalone";
# that reading is REFUTED disc-wide (see below) and what they share is only
# that they do not begin from black:
#
# press_start / press_start_jp -- one element, the plate, drawn OVER the
# title; its own `name_why` says so. The game never shows it on black.