re: main is 171 commits behind and carries the STALE keyframe reader
Went to refute sylpheed-port's finding that their check-all allowance ("the pin
is not on main, so this compares two decoder eras") explained nothing, by
extending its reach past three screens. Found the premise is understated.
git rev-list --left-right --count origin/main...HEAD -> 0 171
main has nothing we lack; we are 171 commits ahead of it. Its tip is dated
2026-08-29, the pin tag is not an ancestor of it, and its ui_layout.rs still
reads "Keyframe time, or None for the group's last frame" -- the pre-fix
association that takes a pose's time from the NEXT record and leaves a group's
final pose untimed. That is the exact bug that left fade_quads.py stale and made
screen-transitions.md publish a 0.87-4.08 s fade-in for a 0.20-0.27 s ramp.
So "sync with main first" is currently backwards: main is the stale era, and
`git merge origin/main` is a no-op from any topic branch -- it says "Already up
to date" every iteration, which reads as "I am current" and means "main has
nothing". Do not pin to main.
The port's measurement stands: across their three screens the two eras render
identically, which is consistent with the association fix moving TIMES and not
pixels -- same signature as the .tbm and stale-sylpheed-cli findings.
Not settled: whether the eras render identically beyond three screens (the
disc-wide build-and-compare is not done), and why 171 commits are unmerged,
which is a human's call.
Also adds the METHOD entry the port offered: an allowance is a claim and it
decays; allow by NAME, never by COUNT, because a count cannot notice that a
different row started failing while the total held steady.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -216,6 +216,22 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
|
||||
artifact, not the exit code — the artifact reached its correct 8.0 s duration
|
||||
while the process it came from never returned.
|
||||
|
||||
* **An allowance is a claim, and it decays like any other.** `sylpheed-port`'s
|
||||
`check-all` printed *"2 DIFFERS, allowed: the pin is not on main, so this
|
||||
compares two decoder eras"* — in green, for weeks, and both of us quoted it back
|
||||
without testing it. Tested: `sylpheed-cli` built at `formats-pin-2026-08-30` and
|
||||
at workspace HEAD render `title`, `title_jp` and `main_menu` **byte-identically**,
|
||||
despite 508 lines of difference in `ui_layout.rs`. The eras explain nothing; the
|
||||
allowance was making a real disagreement look accounted for, and the real reasons
|
||||
were already written down elsewhere in their own notes. Two rules:
|
||||
**an excuse in a passing check is an untested assertion that never gets read as
|
||||
one**, because green output is not scrutinised; and **allow by NAME, never by
|
||||
COUNT** — a count cannot notice that a *different* row started failing while the
|
||||
total held steady, which is exactly the hole the allowance opens. ⚠️ Same
|
||||
signature as the `.tbm` and stale-`sylpheed-cli` findings: *the times moved, the
|
||||
pixels did not*. When two versions of a renderer are supposed to differ, check
|
||||
whether they actually do before explaining a mismatch with the difference.
|
||||
|
||||
## Runtime / emulator
|
||||
|
||||
* **Look at the PNG** — and check its dimensions.
|
||||
|
||||
64
docs/re/main-is-the-stale-era.md
Normal file
64
docs/re/main-is-the-stale-era.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# ⚠️ `main` is 171 commits behind, and its `ui_layout.rs` carries the STALE keyframe reader
|
||||
|
||||
**Status:** ✅ measured against the refs, 2026-08-30. Not a finding about the game —
|
||||
a finding about this repository that changes what "sync with main" means.
|
||||
|
||||
## What prompted it
|
||||
|
||||
`sylpheed-port`'s `check-all` carried an allowance: *"2 DIFFERS, allowed: the pin is
|
||||
not on main, so this compares two decoder eras."* They tested the **conclusion** —
|
||||
`sylpheed-cli` at `formats-pin-2026-08-30` and at their workspace HEAD render
|
||||
`title`, `title_jp` and `main_menu` byte-identically — and replaced the allowance
|
||||
with a named set. Correct, and the pattern is now in
|
||||
[`METHOD.md`](METHOD.md): *an allowance is a claim, and it decays like any other.*
|
||||
|
||||
I went to refute it with more reach (three screens is not the archive) and found
|
||||
the **premise** is not only true but understated.
|
||||
|
||||
## The refs
|
||||
|
||||
```
|
||||
$ git rev-list --left-right --count origin/main...HEAD
|
||||
0 171 # main has nothing we lack; we are 171 commits ahead
|
||||
|
||||
$ git log -1 --date=short --format='%h %ad %s' origin/main
|
||||
1b1a4df 2026-08-29 containers: an expired token could never be replaced
|
||||
|
||||
$ git merge-base --is-ancestor formats-pin-2026-08-30 origin/main ; echo $?
|
||||
1 # the pin is NOT on main
|
||||
|
||||
$ git show origin/main:crates/sylpheed-formats/src/ui_layout.rs | grep -n 'None. for the group'
|
||||
114: /// Keyframe time, or `None` for the group's **last** frame.
|
||||
```
|
||||
|
||||
That last line is the **pre-fix association** — a pose's time read from the *next*
|
||||
record, leaving a group's final pose untimed. It is the exact bug that
|
||||
* left `fade_quads.py` stale after the crate was fixed, and
|
||||
* made [`screen-transitions.md`](screen-transitions.md) publish a fade-in of
|
||||
0.87–4.08 s for a ramp that is 0.20–0.27 s.
|
||||
|
||||
## ⚠️ So "sync with `main` first" is currently backwards
|
||||
|
||||
The standing instruction exists because tooling and protocol revisions once landed
|
||||
on `main` while an agent worked from a branch that had neither. **Right now the
|
||||
hazard runs the other way:** `main` is the stale era. `git merge origin/main` is a
|
||||
no-op from any current topic branch — it reports "Already up to date" every time,
|
||||
which is easy to read as *"I am current"* when it means *"main has nothing"*.
|
||||
|
||||
* **Do not pin to `main`.** A build from `main` gets the keyframe reader that this
|
||||
corpus spent two iterations retracting.
|
||||
* The port's pin (`formats-pin-2026-08-30`) is on a **topic branch**, not on main.
|
||||
That is the right choice today and a fragile one: nothing protects a tag whose
|
||||
commit is unmerged.
|
||||
* ✅ The port's measurement stands: across those three screens the two eras render
|
||||
**identically**. That is consistent with everything else here — the association
|
||||
fix moves **times**, not pixels. Same signature as the `.tbm` finding and the
|
||||
stale-`sylpheed-cli` finding.
|
||||
|
||||
## What this does not settle
|
||||
|
||||
* **Whether the two eras render identically beyond three screens.** I set out to
|
||||
test that disc-wide and stopped when the ref check turned up something larger; a
|
||||
build-and-compare across all 12 `GP_TITLE` builds is still not done.
|
||||
* **Why 171 commits are unmerged**, and whether that is deliberate. Merging is a
|
||||
human's call — this page only records that the state exists and what it costs.
|
||||
Reference in New Issue
Block a user