metadata: provider-id ledger so orphaned StarTrack ratings resolve by type #372
No reviewers
Labels
No labels
audit-work
bug
docs
general-admin
major-upgrade
needs-vps-sync
new-service
on-hold
outside-work
post-podman
renovate
upstream
vps
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mysticalsoap/docker!372
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/startrack-ledger"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
#350: StarTrack keys ratings by Jellyfin item id, the id changes with the file path, and when a rating goes orphaned nothing in the pipeline remembers what it pointed at. #340's report leans on
movie_poster_state.json, which only knows movies the poster sync processed, and only sees orphans that reach the tagging path. Live today: 9 of 190 ratings point at missing items, 8 of them below the 4-star threshold and so never reported.Fix
First piece of #350, pipeline only:
state/startrack_ledger.json: refreshed while the item exists, kept once it vanishes (that record is what names the orphan), dropped once nobody rates the id any more (re-keyed or deleted).ids=lookup over all ratings (Jellyfin silently omits missing ids, confirmed live), so ratings below the threshold count too and tagging never hits a 404. The nightlyERROR GET /Items/4c443647… 404on stderr goes away.media/metadata/stateto the backup includes: the ledger is the only record of what an orphaned rating pointed at.Verification
Inside the metadata container on the live Jellyfin (12.1.0):
--dry-run: 190 ratings, 67 qualify, 181 present, 9 gone, 8 named withOLD=NEWpairs via the poster state,4c443647…still unknown (no record anywhere, as #350 says).startrack_ledger.jsonwritten with 181 records (owned byapps), state file holds 9 orphans with 8 current ids, no tag changes, one notification.The 8 pairs go to
startrack_rekey.pyby hand; that is still the hand step pieces 2 and 3 of #350 remove.🤖 Generated with Claude Code