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
2 changed files with 15 additions and 48 deletions

25
Cargo.lock generated
View File

@@ -5197,7 +5197,7 @@ dependencies = [
"colored",
"image",
"indicatif",
"sylpheed-formats 0.1.0",
"sylpheed-formats",
"texpresso",
"tokio",
"tracing",
@@ -5213,7 +5213,7 @@ dependencies = [
"image",
"serde",
"serde_json",
"sylpheed-formats 0.1.0 (git+https://git.mc02.dev/fabi/Sylpheed.git?tag=formats-pin-2026-09-01)",
"sylpheed-formats",
]
[[package]]
@@ -5234,25 +5234,6 @@ dependencies = [
"xdvdfs",
]
[[package]]
name = "sylpheed-formats"
version = "0.1.0"
source = "git+https://git.mc02.dev/fabi/Sylpheed.git?tag=formats-pin-2026-09-01#e26304133732792cb1df5563c21df59471f5bf7d"
dependencies = [
"anyhow",
"binrw",
"flate2",
"futures",
"rayon",
"serde",
"serde_json",
"thiserror 2.0.18",
"tokio",
"tracing",
"ttf-parser 0.24.1",
"xdvdfs",
]
[[package]]
name = "sylpheed-ppc"
version = "0.1.0"
@@ -5276,7 +5257,7 @@ dependencies = [
"image",
"rfd",
"rodio",
"sylpheed-formats 0.1.0",
"sylpheed-formats",
"thiserror 2.0.18",
"tracing",
"tracing-subscriber",

View File

@@ -55,33 +55,19 @@ license.workspace = true
# a squash-merge can orphan, and no way for the exporter to be built against a
# decoder it was never tested with. A decoder change and the exporter change it
# requires now land in the same commit or not at all.
# PINNED BY TAG, which is what MISSION section 2 prescribes and what the tagging
# rule exists for: "the RE agent tags when it lands something you need and tells
# you over the message channel -- that is how you stay current without floating."
# That is exactly what happened here.
# ✅ UNPINNED 2026-09-20. The pin above was deliberate and carried its own exit
# condition -- "revert to the path dependency the day the tag is an ancestor of
# `main`" -- because while it 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. `formats-pin-2026-09-01` is now an ancestor of
# `main` (measured), so the two read one decoder again.
#
# The tag carries the CORRECTED keyframe association: a placement group is an
# 8-byte header then `frames` x {u32 time; 36-byte pose}, so pose 0's time is the
# group's lead-in word and EVERY POSE IS TIMED, including the last. The working
# tree's copy still has the retired `SYLPHEED_KF_TIME_SHIFT` knob -- a superseded
# partial fix that got the association right but left pose 0 untimed, which is
# why testing it moved the untimed frame from last to first instead of removing
# it. The old reading is behind `SYLPHEED_KF_TIME_LEGACY=1` here.
#
# 🔴 THE COST, STATED: `sylpheed-cli` builds from the WORKSPACE crate, so until
# this lands on `main` the exporter and the reference renderer read DIFFERENT
# decoders and `tools/port/verify-screen` is comparing two eras rather than
# detecting drift. `tools/port/verify-capture` is unaffected -- it compares the
# port against oracle CAPTURES and never touches the CLI -- and it is the check
# that matters. Revert to the path dependency the day the tag is an ancestor of
# `main`.
# Bumped c -> d 2026-08-29. What I wanted from the new state: `d` carries parser
# and `audio.rs` changes on top of `c`. ⚠️ Its headline change -- Reborn's
# renderer drawing `rotation_deg`, and `compose` drawing a leaf that carries
# geometry -- does NOT reach this port from here: `sylpheed-cli` builds from the
# WORKSPACE crate, so the reference renderer stays unrotated until the tag lands
# on `main`. This bump is for the parser, not for the renderer.
sylpheed-formats = { git = "https://git.mc02.dev/fabi/Sylpheed.git", tag = "formats-pin-2026-09-01" }
# 🔴 AND THE PIN HAD A COST NOBODY PRICED IN: it made this repository depend on
# its OWN history by tag. The issue-#49 history rewrite replaced every commit,
# the locked rev vanished, and the build broke for every clean checkout while
# still working on the machine that did the rewrite, because its `~/.cargo/git`
# still held the old object (PR #60). A path dependency cannot fail that way.
sylpheed-formats = { path = "../sylpheed-formats" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"