# 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/Refresh` is a silent no-op** on this Jellyfin build — returns HTTP 204 but the `Scan Media Library` scheduled task does NOT execute. Step 4 rewritten to fetch the scan-task ID from `/ScheduledTasks` and POST to `/ScheduledTasks/Running/` instead. Old endpoint added to a "known broken" table. - **`/Items/Counts` is 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//Episodes?Season=` with provider + image-tag verification, plus a per-series `Items//Refresh` recipe 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/Refresh` invocation with `/ScheduledTasks/Running/`. ## 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.sh` wrapper once `bin/cleanup-import.sh` and `bin/normalize.py` are 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-pipeline` instead of pulling a session token from `Devices` table).