fix(export): take the sylpheed-formats dependency by path, not by tag #62

Merged
fabi merged 1 commits from fix/export-path-dep into main 2026-09-20 15:09:51 +00:00
Owner

Removes the last reason this repository depends on its own history.

The pin had a written exit condition, and it is met

The comment above the dependency said it outright:

Revert to the path dependency the day the tag is an ancestor of main.

Measured: formats-pin-2026-09-01 (e2630413) is an ancestor of main now. So the cost that comment named goes away too — while the pin held, sylpheed-cli built from the workspace crate and the exporter from the tag, so tools/port/verify-screen was comparing two eras instead of detecting drift. They read one decoder again.

And it removes the failure mode nobody priced in

Depending on this repo by tag is why the #49 history rewrite broke the build: every commit was replaced, the locked rev vanished, and clean checkouts could not resolve it — while the machine that did the rewrite kept building happily off its ~/.cargo/git cache (#60). A path dependency cannot fail that way.

Cargo.lock now has zero references to Sylpheed.git.

Gated on the full suite, not a compile

This moves the exporter across a 243-file decoder change (8,467 insertions), so a cargo check would not have been enough:

check result
suites / passed / failed / ignored 45 / 377 / 0 / 14
cargo exit 0
binaries launched vs reported 45 = 45 — nothing vanished
corpus report PRESENT for disc, res3d, iso

That launched-vs-reported row matters: a SIGKILLed suite prints no test result: line at all and silently drops out of the tally, which is how the earlier 44/367 run looked like "0 failed".

Removes the last reason this repository depends on **its own history**. ### The pin had a written exit condition, and it is met The comment above the dependency said it outright: > *Revert to the path dependency the day the tag is an ancestor of `main`.* Measured: `formats-pin-2026-09-01` (`e2630413`) **is** an ancestor of `main` now. So the cost that comment named goes away too — while the pin held, `sylpheed-cli` built from the **workspace** crate and the exporter from the **tag**, so `tools/port/verify-screen` was comparing two eras instead of detecting drift. They read one decoder again. ### And it removes the failure mode nobody priced in Depending on this repo by tag is *why* the #49 history rewrite broke the build: every commit was replaced, the locked rev vanished, and clean checkouts could not resolve it — while the machine that did the rewrite kept building happily off its `~/.cargo/git` cache (#60). **A path dependency cannot fail that way.** `Cargo.lock` now has **zero** references to `Sylpheed.git`. ### Gated on the full suite, not a compile This moves the exporter across a **243-file decoder change** (8,467 insertions), so a `cargo check` would not have been enough: | check | result | |---|---| | suites / passed / failed / ignored | **45 / 377 / 0 / 14** | | `cargo` exit | **0** | | binaries launched vs reported | **45 = 45** — nothing vanished | | corpus report | **PRESENT** for disc, res3d, iso | That launched-vs-reported row matters: a SIGKILLed suite prints no `test result:` line at all and silently drops out of the tally, which is how the earlier 44/367 run looked like "0 failed".
fabi added 1 commit 2026-09-20 12:06:09 +00:00
fix(export): take the sylpheed-formats dependency by path, not by tag
Some checks failed
CI / Native — linux (pull_request) Failing after 5m12s
CI / WASM — Web (pull_request) Successful in 32m8s
CI / Formatting (pull_request) Successful in 1m31s
1fec20a2a3
Removes the last reason this repository depends on its own history.

The pin was deliberate and carried its own exit condition, written into the
comment above it: "revert to the path dependency the day the tag is an ancestor
of `main`." Measured -- `formats-pin-2026-09-01` (e2630413) IS an ancestor of
`main` now, so the condition is met, and the cost the comment named goes away
with it: while the pin held, `sylpheed-cli` built from the workspace crate and
the exporter from the tag, so `tools/port/verify-screen` compared two eras
instead of detecting drift. They read one decoder again.

It also removes a failure mode nobody priced in. Depending on this repo by tag
is what made the #49 history rewrite break the build: every commit was replaced,
the locked rev vanished, and clean checkouts could not resolve it while the
rewriting machine kept working off its `~/.cargo/git` cache (PR #60). A path
dependency cannot fail that way. `Cargo.lock` now has ZERO references to
Sylpheed.git.

⚠️ This moves the exporter across a 243-file decoder change (8 467 insertions),
so it was gated on the full suite rather than a compile:

  45 suites / 377 passed / 0 failed / 14 ignored, cargo exit 0
  45 binaries launched, 45 reported  (a SIGKILLed suite prints no result line
  and would otherwise vanish from the tally)
  corpus report: PRESENT for disc, res3d and iso

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fabi merged commit b9d009b7a2 into main 2026-09-20 15:09:51 +00:00
Sign in to join this conversation.