Parallel to sync_show. Calls TMDBClient.get_movie_info,
combines the TmdbMovieInfo with the on-disk MovieRelease loaded
via DotAlfredMovieReleaseRepository.load_by_tmdb_id, and upserts
into DotAlfredMovieLibraryIndex.
Policy mirrors sync_show with two adaptations specific to movies:
* placeholder signature is name == metadata.path (auto-heal writes
them equal — the schema requires name to be non-empty so we can't
use name == "" as the spec originally suggested),
* when the per-movie sidecar is gone but the index entry remains,
sync warns and returns the existing entry unchanged (no upsert
possible without a release: index.upsert requires folder/imdb_id
from the MovieRelease itself).
Raises MovieNotFoundInLibrary when neither index nor sidecar
carry tmdb_id.