re: a stale INSTRUCTION that no-ops -- worse than any stale description found yet

sylpheed-port generalised the heading rule: an index is an amplifier, since
anything republishing headings multiplies whatever they assert. Checked mine --
INDEX.md's generated table republishes each file's H1 and Status line, a narrower
amplifier than their TOC but the same mechanism -- and then swept headings for the
dead-rule vocabulary.

The strongest hit is not a heading. ui-keyframe-time-unit.md, the Q1 page, told
readers a comparison was "Gated by SYLPHEED_KF_TIME_SHIFT=1, default unchanged"
and referred to "the other reading behind SYLPHEED_KF_TIME_SHIFT=1". That
variable was REMOVED with the record-layout fix and appears nowhere in crates/.

A reader following it sets something inert, gets default behaviour, and concludes
the two readings agree. A stale instruction that no-ops MANUFACTURES A FALSE
CONFIRMATION -- strictly worse than a stale description, and the same shape as
screen-transitions.md telling the port to author a value that is decoded.

Also demoted the section heading "and the shifted reading wins every time": the
shifted reading was itself superseded, the fix having established the same
association by a better route and timed pose 0 as well, which the shifted reading
never did. The evidence stands and is now evidence for the corrected reading.

METHOD gains three things: rank instructions above descriptions when sweeping for
stale text; an index is an amplifier; and the denominator, stated because it is
unflattering -- this corpus has 2 989 headings, 401 of which make a negative or
absolute assertion, and I have audited this session's plus the dead-vocabulary
intersection. That is a sample, not a sweep, and older headings are likelier to be
stale for having had more chances to be overturned.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-30 18:04:19 +00:00
parent fcfd05dd26
commit 92357702fd
2 changed files with 37 additions and 3 deletions

View File

@@ -485,6 +485,26 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
📌 **So audit headings first**: they are the assertions most likely to be read
and least likely to carry the qualification that would save them.
* 🔴 **A stale INSTRUCTION is worse than a stale description, because it fails
silently and manufactures a false confirmation.** `ui-keyframe-time-unit.md` told
readers a comparison was *"gated by `SYLPHEED_KF_TIME_SHIFT=1`"* — a variable
**removed with the record-layout fix and present nowhere in `crates/`**. Anyone
following it sets something inert, gets default behaviour, and concludes the two
readings agree. ⚠️ The same shape as `screen-transitions.md` telling the port to
**author** a value that is decoded. **When sweeping for stale text, rank
instructions above descriptions**: a wrong description misleads a reader, a wrong
instruction produces a wrong *result* that looks like evidence.
📌 And `sylpheed-port`'s generalisation of the heading rule: **an index is an
amplifier.** Anything that republishes headings — a generated table of contents,
a summary, `INDEX.md`'s H1-and-Status table — multiplies whatever the heading
asserts, including what it asserts wrongly. Theirs was republishing three
withdrawn claims at the top of the file as live findings.
⚠️ **Denominator, stated because the number is unflattering:** this corpus has
**2 989 headings**, of which **401** make a negative or absolute assertion. I have
audited the ones this session touched plus the high-yield intersection with dead
rule vocabulary. **That is a sample, not a sweep**, and older headings are the
likelier to be stale for having had more chances to be overturned.
## Runtime / emulator
* **Look at the PNG** — and check its dimensions.

View File

@@ -309,7 +309,13 @@ group, because a group owns `frames·40 4` bytes.
`kf[n1]` takes `W[n2]` — which exists. Nothing is missing and nothing is
special-cased: `W[k]` is simply *the time at which pose `k+1` is reached*.
Gated by `SYLPHEED_KF_TIME_SHIFT=1`, default unchanged. See below for what
🔴 **This sentence used to read "Gated by `SYLPHEED_KF_TIME_SHIFT=1`, default
unchanged."** That gate **no longer exists** — it was removed with the
[record-layout fix](ui-keyframe-record-layout.md) and appears **nowhere in
`crates/`**. ⚠️ A reader following the old instruction sets an environment
variable that does nothing, gets default behaviour, and concludes the two readings
agree: **a stale instruction that no-ops manufactures a false confirmation**,
which is worse than a stale description. See below for what
adopting it would cost.
### 🔴 …and what it costs — which is why the default is UNCHANGED
@@ -359,7 +365,14 @@ as they are.
---
## ✅ Replicated: three elements, two screens, and the shifted reading wins every time
## ✅ Replicated: three elements, two screens — evidence that SUPPORTED the shifted reading
⚠️ **This heading used to end "and the shifted reading wins every time".** Demoted
because the shifted reading was itself superseded: the
[record-layout fix](ui-keyframe-record-layout.md) established the same association
by a better route and timed pose 0 as well, which the shifted reading never did.
The evidence below stands; it is now evidence for the *corrected* reading, and the
gate it was collected behind no longer exists.
**2026-08-29.** The case for reading `+36` as *"the time the NEXT pose is
reached"* rested on one element's fade-out shape, then on one element's hold
@@ -412,4 +425,5 @@ the five screens' correlations stand ([acceptance](five-screens-acceptance.md)).
🟡 Classified **measured, not decoded**: this is three elements in one game
screen family, not a disc-wide field check, and our own decoder still defaults to
the other reading behind `SYLPHEED_KF_TIME_SHIFT=1`.
the other reading behind `SYLPHEED_KF_TIME_SHIFT=1` — ⚠️ **a gate since removed;
there is no way to select the old reading today, and nothing to set.**