re: audit my own era comparison against the shared-target-dir trap -- it holds
sylpheed-port found that a shared CARGO_TARGET_DIR across two source trees serves one binary to both: cargo fingerprints per source path, so building tree B into a directory last written by tree A prints "Finished" in 0.15 s and changes nothing. Their harness scored against a decoder from an unnamed tree for hours, and it HAPPENED to be the correct era -- agreeing by luck, which is worse than disagreeing because nothing prompts the check. My own era comparison could have died the same way, so I audited it rather than assuming it was fine: the two binaries have different md5s (7516bdac vs 8370e0e9), they were built into SEPARATE target dirs, and the era control still distinguishes them live -- `rest t=70 [12 70 80 -]` against `rest t=12 [0 12 70 80]`. The result in ui-resting-pose.md stands, now with the evidence that it stands. Also raises main-is-the-stale-era.md from hygiene to a defect anyone can build. Two things landed since it was written: the corrected association is now confirmed against the running game (RMSE 41.69 vs 58.41 on a live title_jp capture, a margin ~14x the noise floor), and the port confirmed their published branch carries the stale ui_layout.rs, md5-identical to main's. So every published ref except this branch ships the decoder the game disagrees with, and nothing in a build warns you. Merging is a human's call; the page records the cost of not making it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -247,6 +247,22 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
|
||||
is nonetheless **md5-identical to `origin/main`'s**. *Line count is not era.* I
|
||||
reached the right conclusion about that branch through exactly that invalid step.
|
||||
|
||||
* **A shared `CARGO_TARGET_DIR` across two source trees silently serves one
|
||||
binary to both.** Cargo fingerprints per source path, so building tree B into a
|
||||
directory last written by tree A prints **"Finished" in 0.15 s and changes
|
||||
nothing** — the binary on disk still belongs to A. `sylpheed-port` scored their
|
||||
harness for hours against a decoder from a tree nobody had named, which
|
||||
*happened to be the correct era*: it agreed with their pin by luck, and one
|
||||
successful rebuild would have flipped it silently with 74 507 px at stake on
|
||||
`title_jp`. ⚠️ **Agreeing by luck is worse than disagreeing**, because nothing
|
||||
ever prompts the check. Give each tree its **own** target dir, and prove the
|
||||
binaries differ before comparing them — `md5sum` them and re-run a control that
|
||||
distinguishes them, at the time of use, not at build time. (The comparison in
|
||||
[`ui-resting-pose.md`](structures/ui-resting-pose.md) was audited against this
|
||||
after the fact: md5 `7516bdac…` against `8370e0e9…`, separate target dirs, and
|
||||
the era control re-run live — it holds. The audit was cheap; not doing it would
|
||||
have left a measurement resting on an assumption about a filesystem.)
|
||||
|
||||
## Runtime / emulator
|
||||
|
||||
* **Look at the PNG** — and check its dimensions.
|
||||
|
||||
@@ -103,6 +103,31 @@ precisely the open question, not a second unrelated one.
|
||||
and would have reported a difference with no cause. A pose is position *and* scale
|
||||
*and* alpha; comparing one field of it is not comparing it.
|
||||
|
||||
## 🔴 This now costs measured pixels on a real screen — and it needs a human
|
||||
|
||||
Two things landed after this page was written, and together they change its
|
||||
weight from *hygiene* to *a defect anyone can build*.
|
||||
|
||||
1. The corrected association is now **confirmed against the running game**, not
|
||||
just internally consistent — [`ui-resting-pose.md`](structures/ui-resting-pose.md).
|
||||
The fixed era's rest pose for `ptlogo_eff3.t32` scores RMSE **41.69** against a
|
||||
live capture of `title_jp` where the stale era scores **58.41**, a margin ~14×
|
||||
the instrument's own noise floor.
|
||||
2. `sylpheed-port` confirmed their published branch is the stale era too:
|
||||
`origin/auto/port-p6-audio`'s `ui_layout.rs` is md5-identical to
|
||||
`origin/main`'s.
|
||||
|
||||
**So every published ref except this branch ships the decoder the game disagrees
|
||||
with.** Anyone who builds `sylpheed-cli` from `main` — or from the port's branch —
|
||||
gets a reader that puts one element 30 px out on a real screen, and nothing in the
|
||||
build warns them. The port is insulated only because their exporter pins
|
||||
`formats-pin-2026-08-30`; they had been checking each iteration whether they could
|
||||
*drop* that pin, which would have silently downgraded them.
|
||||
|
||||
⚠️ **Merging is a human's call and this page does not make it.** What it records is
|
||||
the cost of not doing it: the fix is measured-correct against the oracle, and it is
|
||||
reachable only from a topic branch.
|
||||
|
||||
## What this does not settle
|
||||
|
||||
* **Why the `title_jp` measurement disagrees with the port's.** Recorded above with
|
||||
|
||||
Reference in New Issue
Block a user