Repository navigation
Fixed
-
A kernel marked superseded now recovers when its file is present (#29).
superseded_byhad exactly one writer and it only ever SET the column, so
once a hash was flagged nothing could clear it. Whenever anything wrote
non-kernel content to a tracked path — a pre-0.17.0 interrupted download, a
Dropbox conflict copy, an editor — the real kernel's hash was marked
superseded by that junk. Restoring the file marked the junk superseded in
turn, leaving both rows flagged, andfind_by_filename()excludes
superseded rows. Soresolvereported "not found" for a byte-perfect file on
disk,_should_skip_download()saw nodb_hash, and everyupdate
re-downloaded the same kernel. Forever, with no shipped way to repair it.Observed on a real install where
pck00011.tpcand
earthstns_fx_201023.bspre-downloaded on every run.register_file()now clears the flag when the superseding content exists in
no live location. The condition is narrow on purpose: a genuine upstream
update whose newer file is on disk keeps its supersession, soresolvecan
never start handing back a real older release. Content that supersedes
nothing findable was never a version, only damage.If you have been bitten by this, run
spice-kernel-db scan <kernel_dir>—
one pass over the tree heals every poisoned row. The damage is otherwise
invisible without querying DuckDB by hand.