bd4f5d3818
When the album sidecar location isn't writable (e.g. read-only music mount in a container), the album-cover write previously failed and left cover_art_source NULL forever — every scan retried the same provider call and re-failed at the same os.WriteFile. With a managed data_dir available, we fall back to <DataDir>/album-art/<album_id>/ cover.jpg and record that path on the album row. The cover-serving HTTP path already serves whatever cover_art_path stores, so the client sees the art uniformly regardless of where it landed. DataDir is opt-in via the Enricher field (cmd/minstrel/main.go sets it from cfg.Storage.DataDir on the production path; tests leave it empty and behave as before).