From 0c2910636ad3f697b1bfd715ed837fa7d1a4fe48 Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Sun, 30 Aug 2026 14:53:41 +0000 Subject: [PATCH] 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) Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v --- docs/re/METHOD.md | 16 ++++++++++++++++ docs/re/main-is-the-stale-era.md | 25 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/docs/re/METHOD.md b/docs/re/METHOD.md index a0de6229..dc6248d8 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -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. diff --git a/docs/re/main-is-the-stale-era.md b/docs/re/main-is-the-stale-era.md index 3f691680..99507e92 100644 --- a/docs/re/main-is-the-stale-era.md +++ b/docs/re/main-is-the-stale-era.md @@ -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