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