From d0208457b937ceba8b49387992fdb4ae0cc3d58f Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Sun, 30 Aug 2026 17:57:30 +0000 Subject: [PATCH] re: two fixed-code-under-unfixed-description hits in the crate the port pins sylpheed-port named a pattern narrower than "docs go stale": a correct fix sitting directly beneath a refuted description in the same file, within twenty lines. Not drift -- editing at the point of failure without re-reading the frame around it. Applied their grep (the vocabulary the OLD rule needed) to my crate and found two. ui_layout.rs:308, in rest_plateau's fallback: `continue; // the last frame carries no time`. That is the pre-fix rule, on a branch that is now UNREACHABLE -- measured at 0 untimed of 24 811 keyframes across 965 builds. Kept as a guard because `time` is still Option and a malformed group could yield None, but relabelled: it is no longer a description of the format. ui_layout.rs:268, on the `lastall` rest override: "This is what the shifted time reading predicts ... testing it against the captures is an independent check on that reading." The shifted reading was refuted by the record-layout fix in the same file. The override survives as a plain "take the last keyframe" diagnostic alongside the documented `last` and `maxalpha`, and now says so. Both corrections quote the original sentence so the change is visible rather than silently overwritten -- the practice the port adopted from me this iteration. Verified by artifact rather than by "it compiles": a comment-only edit must leave output byte-identical, and the build-7 render's md5 is unchanged at 141771d8f1a2b3496cfd679c6cd45d1a. METHOD records the pattern with the two greps that find it: the vocabulary of the dead rule in code, and a HEDGE around something the current reader states exactly in prose -- a "~0" marks where the old reader could not see. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v --- crates/sylpheed-formats/src/ui_layout.rs | 27 ++++++++++++++++++------ docs/re/METHOD.md | 17 +++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/crates/sylpheed-formats/src/ui_layout.rs b/crates/sylpheed-formats/src/ui_layout.rs index a789d5cf..e63fbc7d 100644 --- a/crates/sylpheed-formats/src/ui_layout.rs +++ b/crates/sylpheed-formats/src/ui_layout.rs @@ -265,11 +265,17 @@ impl Element { pub fn rest(&self) -> Option<&Keyframe> { // `lastall`: the LAST keyframe for every element, bypassing the plateau - // rule entirely. This is what the shifted time reading predicts — under - // it the final pose is reached at a definite time and nothing follows, - // so "rest" needs no heuristic. Testing it against the captures is an - // independent check on that reading, from static composites rather than - // from animation timing. + // rule entirely. + // + // ⚠️ ITS STATED PURPOSE IS RETIRED (corrected 2026-08-30). This comment + // read: "This is what the shifted time reading predicts — under it the + // final pose is reached at a definite time and nothing follows, so + // 'rest' needs no heuristic. Testing it against the captures is an + // independent check on that reading." The shifted reading was **refuted** + // by the record-layout fix above, so this override no longer checks + // anything about it. It survives only as a plain "take the last + // keyframe" diagnostic, alongside the documented `last` and `maxalpha` + // (see `docs/re/structures/ui-resting-pose.md`). if std::env::var("SYLPHEED_REST_RULE").as_deref() == Ok("lastall") { return self.keyframes.last(); } @@ -305,7 +311,16 @@ impl Element { let (Some(t0), Some(t1)) = (self.keyframes[k].time, self.keyframes[k + 1].time) else { - continue; // the last frame carries no time + // ⚠️ PRE-FIX COMMENT, corrected 2026-08-30. This read + // "the last frame carries no time", which was the rule + // BEFORE the record-layout fix directly above. Post-fix + // every pose is timed — measured at **0 untimed of + // 24 811 keyframes** across 965 builds — so this branch + // is unreachable on this disc. Kept as a guard because + // `time` is still `Option` and a malformed group + // could produce `None`; it is no longer a description of + // the format. + continue; }; let dwell = t1.saturating_sub(t0); // `>=`, not `>`: on a tie take the LATER frame. A group is diff --git a/docs/re/METHOD.md b/docs/re/METHOD.md index 758c1b13..5a0719d1 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -452,6 +452,23 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the actually establishes.** Docs are where a claim is *reasoned*; the tool is where it is *believed*. +* **Fixed code under an unfixed description — and the two are usually within + twenty lines of each other.** `sylpheed-port` named this and it is narrower and + more useful than "docs go stale": both of their hits were a *correct* fix sitting + directly beneath a *refuted* description in the same file, one of them written by + them two iterations earlier and never looked up at. **It is not drift. It is + editing at the point of failure without re-reading the frame around it.** + ⚠️ Two on this side, in the crate the port pins: `rest_plateau`'s fallback still + said *"the last frame carries no time"* — the pre-fix rule — on a branch now + unreachable (**0 untimed of 24 811 keyframes**), and `rest`'s `lastall` override + still described itself as *"an independent check on the shifted time reading"*, + a reading the fix above it **refuted**. + 📌 **The grep is the cheap part**: search for the vocabulary the *old* rule + needed — here `untimed`, `last frame`, `shifted reading` — because a description + that survived a fix still speaks the dead rule's language. **And the tell in a + document is a hedge around something the current reader states exactly**: a `~0` + or an "approximately" marks where the old reader could not see. + ## Runtime / emulator * **Look at the PNG** — and check its dimensions.