Step 4 rewritten: /Library/Refresh is a silent no-op on this build, must POST to /ScheduledTasks/Running/<scan-task-id> directly. Old endpoint moved to known-broken table. Step 5 rewritten: /Items/Counts is scope-cached and stays stale even after items are indexed. Use /Shows/<id>/Episodes?Season=<NN> as authoritative verify with provider + image-tag checks. Both bugs surfaced in archer-s02-2009 run. LibraryMonitor inotify auto-fire also confirmed broken (failed on lilo-stitch-2002 and archer-s02-2009 runs). Replaced user@192.168.0.100 (LAN IP, RFC1918 — flagged by gitleaks lan-ip-rfc1918) with user@nullstone throughout. SSH config already aliases nullstone -> 192.168.0.100. Aligns with CLAUDE.md two-file doc rule: IPs belong in SYSTEM.md, not operational docs.
1.9 KiB
1.9 KiB
Import-media playbook changelog
v1.1 — 2026-05-10
Two Jellyfin endpoint bugs found during archer-s02-2009 run, codified into the playbook:
POST /Library/Refreshis a silent no-op on this Jellyfin build — returns HTTP 204 but theScan Media Libraryscheduled task does NOT execute. Step 4 rewritten to fetch the scan-task ID from/ScheduledTasksand POST to/ScheduledTasks/Running/<id>instead. Old endpoint added to a "known broken" table./Items/Countsis scope-cached and stays stale even after items are indexed (counts stayed at 230 after 13 new eps landed). Step 5 rewritten to use the per-series authoritative query/Shows/<id>/Episodes?Season=<NN>with provider + image-tag verification, plus a per-seriesItems/<id>/Refreshrecipe for missing metadata.- LibraryMonitor inotify auto-fire wording removed from Step 4 (failed on both recorded runs — Lilo & Stitch + Archer S02). Manual task trigger is now mandatory.
- Verification checklist updated to reference the task-trigger endpoint and per-series query.
- Rollback section: replaced
/Library/Refreshinvocation with/ScheduledTasks/Running/<id>.
v1.0 — 2026-05-10
Initial playbook. 7 steps from staging on onyx → rsync to nullstone → verify scan + counts → optional subtitle pass → run-log.
Gaps flagged for future versions:
- v1.2 will add canonical
bin/import-media.shwrapper oncebin/cleanup-import.shandbin/normalize.pyare extracted from docs/07 and docs/08 (ROADMAP M6). (Bumped from v1.1 since v1.1 was needed for the Jellyfin endpoint fixes.) - v1.3 will add a TV multi-season import section (currently only single-season example).
- v1.4 will add NFO override pattern with worked example for a wrong-TMDb-match recovery.
- v1.5: document API-token retrieval (mint a permanent ApiKeys row labelled
import-pipelineinstead of pulling a session token fromDevicestable).