From 2a688e2309ce9a68dc7bc76c98f113b4a3389d94 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Fri, 24 Apr 2026 09:58:09 +0100 Subject: [PATCH] Cleanup old tasks --- ...ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md | 0 .../ml-101 - Artists-without-Wikipedia-page.md | 0 .../ml-102 - Extend-Universal-Search-to-search-across-notes.md | 0 ...Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md | 0 ...tup-Litestream-to-backup-database-to-Hetzner-object-storage.md | 0 .../ml-105 - Refactor-MusicLibrary.ScrobbleRules.md | 0 .../{tasks => completed}/ml-106 - Set-up-Copilot-instructions.md | 0 .../ml-107 - Regular-job-to-cleanup-asset-cache.md | 0 .../ml-108 - Support-universal-search-navigation-via-keyboard.md | 0 backlog/{tasks => completed}/ml-109 - Improve-test-suite.md | 0 backlog/{tasks => completed}/ml-110 - Radios.md | 0 .../ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md | 0 .../ml-112 - Optimise-scrobble-rule-application.md | 0 .../{tasks => completed}/ml-113 - Scrobble-groups-of-tracks.md | 0 .../ml-114 - Display-progarchives-links-for-records.md | 0 backlog/{tasks => completed}/ml-115 - Import-Last.fm-history.md | 0 .../ml-116 - Display-similar-artists-with-an-image-grid.md | 0 .../ml-117 - Move-artist-bio-to-a-left-side-sheet.md | 0 ...actions-to-refresh-artist-info-and-artwork-from-artist-page.md | 0 .../{tasks => completed}/ml-119 - Scrobble-individual-media.md | 0 ...hange_note-2-instead-of-Note.changeset-2-in-notes-component.md | 0 ...When-scanning-a-wish-listed-record-set-its-selected-release.md | 0 .../{tasks => completed}/ml-121 - Disable-Last.fm-http-pool.md | 0 ...ml-122 - Increase-size-of-record-form-save-button-on-mobile.md | 0 ...4 - Improve-display-of-releases-in-the-edit-record-dropdown.md | 0 .../ml-125 - Display-total-runtime-for-the-entire-release.md | 0 ...6 - For-compilations-each-track-should-also-display-artists.md | 0 ... - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md | 0 ... Display-media-discs-ordered-by-position-with-total-runtime.md | 0 .../ml-129 - Display-tracklist-sheet-from-record-detail-page.md | 0 .../ml-130 - Enrich-selected-release-input-and-display.md | 0 .../{tasks => completed}/ml-131 - Connect-a-Last.fm-account.md | 0 .../{tasks => completed}/ml-132 - Scrobble-a-record-to-Last.fm.md | 0 .../ml-133 - Show-a-record-track-list-with-durations.md | 0 .../ml-134 - Support-selecting-a-release-per-record.md | 0 .../{tasks => completed}/ml-135 - Add-country-to-artist-page.md | 0 backlog/{tasks => completed}/ml-136 - Unicode-search.md | 0 .../ml-137 - Polyfill-missing-data-in-scrobble-activity.md | 0 ...Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md | 0 .../ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md | 0 ...Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md | 0 backlog/{tasks => completed}/ml-140 - Get-artist-images.md | 0 .../{tasks => completed}/ml-141 - Support-records-with-accents.md | 0 .../ml-142 - Improve-scrobble-UI-in-the-Release-component.md | 0 .../ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md | 0 .../ml-17 - Experimental-comment-left-in-Last.fm-API-client.md | 0 .../ml-2 - Verify-or-drop-multipart-hex-dependency.md | 0 .../ml-22 - Search-count-function-pairs-duplicate-query-logic.md | 0 ...-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md | 0 ... recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md | 0 .../ml-29 - Collection-Wishlist-index-LiveView-duplication.md | 0 ...tistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md | 0 ...- Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md | 0 .../ml-31 - Deeply-nested-subqueries-in-ListeningStats.md | 0 ...OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md | 0 .../ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md | 0 ... Make-record-creation-resilient-to-color-extraction-failure.md | 0 ...- Harden-the-public-asset-endpoint-against-invalid-payloads.md | 0 .../ml-36 - Return-controlled-errors-from-genre-population.md | 0 .../ml-37 - Fix-production-migration-strategy-mismatch.md | 0 .../ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md | 0 .../ml-39 - Missing-dark-mode-class-in-search_components.ex.md | 0 ...-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md | 0 ...-40 - Two-different-pagination-query-styles-across-contexts.md | 0 .../ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md | 0 ...2 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md | 0 .../ml-43 - Wikipedia.Config-missing-enforce_keys.md | 0 ...l-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md | 0 ...- Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md | 0 .../ml-46 - FetchArtistInfo-worker-contains-business-logic.md | 0 .../ml-47 - PruneAssets-worker-has-direct-Repo-queries.md | 0 .../ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md | 0 .../ml-49 - BarcodeScan-context-has-zero-test-coverage.md | 0 ...-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md | 0 .../{tasks => completed}/ml-51 - ArtistLive.Show-is-823-lines.md | 0 .../ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md | 0 .../ml-53 - Rewrite-vertical-bar-chart-component.md | 0 .../{tasks => completed}/ml-54 - Standardize-play-icon-sizing.md | 0 .../ml-55 - Standardize-stats-dashboard-gap-sizes.md | 0 .../ml-56 - Standardize-card-border-radius-and-shadow.md | 0 .../ml-57 - Standardize-grid-gap-values-across-record-grids.md | 0 .../ml-58 - Standardize-page-header-top-margin.md | 0 ...9 - Standardize-list-separation-pattern-divide-y-vs-space-y.md | 0 ...x.exs-test-coverage-threshold-with-sandbox-achievable-level.md | 0 .../ml-60 - Unify-genre-tag-styling-between-edit-and-display.md | 0 .../ml-61 - Standardize-dropdown-toggle-variant-across-pages.md | 0 ...ml-62 - Route-Search-artist-queries-through-Artists-context.md | 0 ... Break-bidirectional-dependency-between-Records-and-Artists.md | 0 .../ml-64 - Split-ScrobbleActivity-into-focused-modules.md | 0 .../ml-65 - Move-scrobble-queries-out-of-Records-context.md | 0 .../ml-67 - Credo-ModuleDoc-check-still-disabled.md | 0 ...vague-test-assertions-in-scrobble_activity-and-worker-tests.md | 0 .../ml-71 - page_title-2-public-in-two-LiveViews.md | 0 .../ml-72 - TopAlbums-TopArtists-structural-duplication.md | 0 ...ze-markdown-HTML-output-in-search-and-record-set-components.md | 0 .../ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md | 0 ...75 - Add-Content-Security-Policy-header-to-browser-pipeline.md | 0 .../ml-77 - Inconsistent-alphabetical-ordering-helpers.md | 0 .../ml-78 - Commented-out-code-in-error_json.ex.md | 0 .../ml-79 - Chat-implementations-have-trivial-test-coverage.md | 0 ...d-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md | 0 .../ml-80 - ScrobbleLive-has-zero-test-coverage.md | 0 .../ml-81 - Inconsistent-toast-arity-in-form-components.md | 0 .../ml-82 - MaintenanceLive.Index-queries-database-directly.md | 0 .../ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md | 0 .../ml-84 - Missing-FK-index-on-record_set_items.record_id.md | 0 .../ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md | 0 backlog/{tasks => completed}/ml-86 - Scrobble-data-enrichment.md | 0 .../ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md | 0 .../ml-88 - Hardcoded-genre-filter-in-collection-stats.md | 0 .../ml-90 - Credo-complexity-checks-disabled.md | 0 .../ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md | 0 ...l-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md | 0 .../ml-93 - inspectreason-exposed-to-users-in-error-messages.md | 0 ...94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md | 0 .../ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md | 0 .../ml-96 - Missing-schema-validations-on-string-fields.md | 0 ...7 - Duplicate-fixture-definitions-in-tests-partially-solved.md | 0 .../ml-98 - Potential-nil-crash-in-ScrobbleActivity.md | 0 .../ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md | 0 120 files changed, 0 insertions(+), 0 deletions(-) rename backlog/{tasks => completed}/ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md (100%) rename backlog/{tasks => completed}/ml-101 - Artists-without-Wikipedia-page.md (100%) rename backlog/{tasks => completed}/ml-102 - Extend-Universal-Search-to-search-across-notes.md (100%) rename backlog/{tasks => completed}/ml-103 - Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md (100%) rename backlog/{tasks => completed}/ml-104 - Setup-Litestream-to-backup-database-to-Hetzner-object-storage.md (100%) rename backlog/{tasks => completed}/ml-105 - Refactor-MusicLibrary.ScrobbleRules.md (100%) rename backlog/{tasks => completed}/ml-106 - Set-up-Copilot-instructions.md (100%) rename backlog/{tasks => completed}/ml-107 - Regular-job-to-cleanup-asset-cache.md (100%) rename backlog/{tasks => completed}/ml-108 - Support-universal-search-navigation-via-keyboard.md (100%) rename backlog/{tasks => completed}/ml-109 - Improve-test-suite.md (100%) rename backlog/{tasks => completed}/ml-110 - Radios.md (100%) rename backlog/{tasks => completed}/ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md (100%) rename backlog/{tasks => completed}/ml-112 - Optimise-scrobble-rule-application.md (100%) rename backlog/{tasks => completed}/ml-113 - Scrobble-groups-of-tracks.md (100%) rename backlog/{tasks => completed}/ml-114 - Display-progarchives-links-for-records.md (100%) rename backlog/{tasks => completed}/ml-115 - Import-Last.fm-history.md (100%) rename backlog/{tasks => completed}/ml-116 - Display-similar-artists-with-an-image-grid.md (100%) rename backlog/{tasks => completed}/ml-117 - Move-artist-bio-to-a-left-side-sheet.md (100%) rename backlog/{tasks => completed}/ml-118 - Add-actions-to-refresh-artist-info-and-artwork-from-artist-page.md (100%) rename backlog/{tasks => completed}/ml-119 - Scrobble-individual-media.md (100%) rename backlog/{tasks => completed}/ml-12 - Use-Notes.change_note-2-instead-of-Note.changeset-2-in-notes-component.md (100%) rename backlog/{tasks => completed}/ml-120 - When-scanning-a-wish-listed-record-set-its-selected-release.md (100%) rename backlog/{tasks => completed}/ml-121 - Disable-Last.fm-http-pool.md (100%) rename backlog/{tasks => completed}/ml-122 - Increase-size-of-record-form-save-button-on-mobile.md (100%) rename backlog/{tasks => completed}/ml-124 - Improve-display-of-releases-in-the-edit-record-dropdown.md (100%) rename backlog/{tasks => completed}/ml-125 - Display-total-runtime-for-the-entire-release.md (100%) rename backlog/{tasks => completed}/ml-126 - For-compilations-each-track-should-also-display-artists.md (100%) rename backlog/{tasks => completed}/ml-127 - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md (100%) rename backlog/{tasks => completed}/ml-128 - Display-media-discs-ordered-by-position-with-total-runtime.md (100%) rename backlog/{tasks => completed}/ml-129 - Display-tracklist-sheet-from-record-detail-page.md (100%) rename backlog/{tasks => completed}/ml-130 - Enrich-selected-release-input-and-display.md (100%) rename backlog/{tasks => completed}/ml-131 - Connect-a-Last.fm-account.md (100%) rename backlog/{tasks => completed}/ml-132 - Scrobble-a-record-to-Last.fm.md (100%) rename backlog/{tasks => completed}/ml-133 - Show-a-record-track-list-with-durations.md (100%) rename backlog/{tasks => completed}/ml-134 - Support-selecting-a-release-per-record.md (100%) rename backlog/{tasks => completed}/ml-135 - Add-country-to-artist-page.md (100%) rename backlog/{tasks => completed}/ml-136 - Unicode-search.md (100%) rename backlog/{tasks => completed}/ml-137 - Polyfill-missing-data-in-scrobble-activity.md (100%) rename backlog/{tasks => completed}/ml-138 - Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md (100%) rename backlog/{tasks => completed}/ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md (100%) rename backlog/{tasks => completed}/ml-14 - Replace-Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md (100%) rename backlog/{tasks => completed}/ml-140 - Get-artist-images.md (100%) rename backlog/{tasks => completed}/ml-141 - Support-records-with-accents.md (100%) rename backlog/{tasks => completed}/ml-142 - Improve-scrobble-UI-in-the-Release-component.md (100%) rename backlog/{tasks => completed}/ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md (100%) rename backlog/{tasks => completed}/ml-17 - Experimental-comment-left-in-Last.fm-API-client.md (100%) rename backlog/{tasks => completed}/ml-2 - Verify-or-drop-multipart-hex-dependency.md (100%) rename backlog/{tasks => completed}/ml-22 - Search-count-function-pairs-duplicate-query-logic.md (100%) rename backlog/{tasks => completed}/ml-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md (100%) rename backlog/{tasks => completed}/ml-25 - recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md (100%) rename backlog/{tasks => completed}/ml-29 - Collection-Wishlist-index-LiveView-duplication.md (100%) rename backlog/{tasks => completed}/ml-3 - Add-tests-for-ArtistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md (100%) rename backlog/{tasks => completed}/ml-30 - Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md (100%) rename backlog/{tasks => completed}/ml-31 - Deeply-nested-subqueries-in-ListeningStats.md (100%) rename backlog/{tasks => completed}/ml-32 - OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md (100%) rename backlog/{tasks => completed}/ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md (100%) rename backlog/{tasks => completed}/ml-34 - Make-record-creation-resilient-to-color-extraction-failure.md (100%) rename backlog/{tasks => completed}/ml-35 - Harden-the-public-asset-endpoint-against-invalid-payloads.md (100%) rename backlog/{tasks => completed}/ml-36 - Return-controlled-errors-from-genre-population.md (100%) rename backlog/{tasks => completed}/ml-37 - Fix-production-migration-strategy-mismatch.md (100%) rename backlog/{tasks => completed}/ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md (100%) rename backlog/{tasks => completed}/ml-39 - Missing-dark-mode-class-in-search_components.ex.md (100%) rename backlog/{tasks => completed}/ml-4 - Improve-test-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md (100%) rename backlog/{tasks => completed}/ml-40 - Two-different-pagination-query-styles-across-contexts.md (100%) rename backlog/{tasks => completed}/ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md (100%) rename backlog/{tasks => completed}/ml-42 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md (100%) rename backlog/{tasks => completed}/ml-43 - Wikipedia.Config-missing-enforce_keys.md (100%) rename backlog/{tasks => completed}/ml-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md (100%) rename backlog/{tasks => completed}/ml-45 - Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md (100%) rename backlog/{tasks => completed}/ml-46 - FetchArtistInfo-worker-contains-business-logic.md (100%) rename backlog/{tasks => completed}/ml-47 - PruneAssets-worker-has-direct-Repo-queries.md (100%) rename backlog/{tasks => completed}/ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md (100%) rename backlog/{tasks => completed}/ml-49 - BarcodeScan-context-has-zero-test-coverage.md (100%) rename backlog/{tasks => completed}/ml-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md (100%) rename backlog/{tasks => completed}/ml-51 - ArtistLive.Show-is-823-lines.md (100%) rename backlog/{tasks => completed}/ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md (100%) rename backlog/{tasks => completed}/ml-53 - Rewrite-vertical-bar-chart-component.md (100%) rename backlog/{tasks => completed}/ml-54 - Standardize-play-icon-sizing.md (100%) rename backlog/{tasks => completed}/ml-55 - Standardize-stats-dashboard-gap-sizes.md (100%) rename backlog/{tasks => completed}/ml-56 - Standardize-card-border-radius-and-shadow.md (100%) rename backlog/{tasks => completed}/ml-57 - Standardize-grid-gap-values-across-record-grids.md (100%) rename backlog/{tasks => completed}/ml-58 - Standardize-page-header-top-margin.md (100%) rename backlog/{tasks => completed}/ml-59 - Standardize-list-separation-pattern-divide-y-vs-space-y.md (100%) rename backlog/{tasks => completed}/ml-6 - Align-mix.exs-test-coverage-threshold-with-sandbox-achievable-level.md (100%) rename backlog/{tasks => completed}/ml-60 - Unify-genre-tag-styling-between-edit-and-display.md (100%) rename backlog/{tasks => completed}/ml-61 - Standardize-dropdown-toggle-variant-across-pages.md (100%) rename backlog/{tasks => completed}/ml-62 - Route-Search-artist-queries-through-Artists-context.md (100%) rename backlog/{tasks => completed}/ml-63 - Break-bidirectional-dependency-between-Records-and-Artists.md (100%) rename backlog/{tasks => completed}/ml-64 - Split-ScrobbleActivity-into-focused-modules.md (100%) rename backlog/{tasks => completed}/ml-65 - Move-scrobble-queries-out-of-Records-context.md (100%) rename backlog/{tasks => completed}/ml-67 - Credo-ModuleDoc-check-still-disabled.md (100%) rename backlog/{tasks => completed}/ml-7 - Tighten-vague-test-assertions-in-scrobble_activity-and-worker-tests.md (100%) rename backlog/{tasks => completed}/ml-71 - page_title-2-public-in-two-LiveViews.md (100%) rename backlog/{tasks => completed}/ml-72 - TopAlbums-TopArtists-structural-duplication.md (100%) rename backlog/{tasks => completed}/ml-73 - Sanitize-markdown-HTML-output-in-search-and-record-set-components.md (100%) rename backlog/{tasks => completed}/ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md (100%) rename backlog/{tasks => completed}/ml-75 - Add-Content-Security-Policy-header-to-browser-pipeline.md (100%) rename backlog/{tasks => completed}/ml-77 - Inconsistent-alphabetical-ordering-helpers.md (100%) rename backlog/{tasks => completed}/ml-78 - Commented-out-code-in-error_json.ex.md (100%) rename backlog/{tasks => completed}/ml-79 - Chat-implementations-have-trivial-test-coverage.md (100%) rename backlog/{tasks => completed}/ml-8 - Add-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md (100%) rename backlog/{tasks => completed}/ml-80 - ScrobbleLive-has-zero-test-coverage.md (100%) rename backlog/{tasks => completed}/ml-81 - Inconsistent-toast-arity-in-form-components.md (100%) rename backlog/{tasks => completed}/ml-82 - MaintenanceLive.Index-queries-database-directly.md (100%) rename backlog/{tasks => completed}/ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md (100%) rename backlog/{tasks => completed}/ml-84 - Missing-FK-index-on-record_set_items.record_id.md (100%) rename backlog/{tasks => completed}/ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md (100%) rename backlog/{tasks => completed}/ml-86 - Scrobble-data-enrichment.md (100%) rename backlog/{tasks => completed}/ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md (100%) rename backlog/{tasks => completed}/ml-88 - Hardcoded-genre-filter-in-collection-stats.md (100%) rename backlog/{tasks => completed}/ml-90 - Credo-complexity-checks-disabled.md (100%) rename backlog/{tasks => completed}/ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md (100%) rename backlog/{tasks => completed}/ml-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md (100%) rename backlog/{tasks => completed}/ml-93 - inspectreason-exposed-to-users-in-error-messages.md (100%) rename backlog/{tasks => completed}/ml-94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md (100%) rename backlog/{tasks => completed}/ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md (100%) rename backlog/{tasks => completed}/ml-96 - Missing-schema-validations-on-string-fields.md (100%) rename backlog/{tasks => completed}/ml-97 - Duplicate-fixture-definitions-in-tests-partially-solved.md (100%) rename backlog/{tasks => completed}/ml-98 - Potential-nil-crash-in-ScrobbleActivity.md (100%) rename backlog/{tasks => completed}/ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md (100%) diff --git a/backlog/tasks/ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md b/backlog/completed/ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md similarity index 100% rename from backlog/tasks/ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md rename to backlog/completed/ml-100 - Inconsistent-timestamp-type-in-ScrobbleRule-schema.md diff --git a/backlog/tasks/ml-101 - Artists-without-Wikipedia-page.md b/backlog/completed/ml-101 - Artists-without-Wikipedia-page.md similarity index 100% rename from backlog/tasks/ml-101 - Artists-without-Wikipedia-page.md rename to backlog/completed/ml-101 - Artists-without-Wikipedia-page.md diff --git a/backlog/tasks/ml-102 - Extend-Universal-Search-to-search-across-notes.md b/backlog/completed/ml-102 - Extend-Universal-Search-to-search-across-notes.md similarity index 100% rename from backlog/tasks/ml-102 - Extend-Universal-Search-to-search-across-notes.md rename to backlog/completed/ml-102 - Extend-Universal-Search-to-search-across-notes.md diff --git a/backlog/tasks/ml-103 - Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md b/backlog/completed/ml-103 - Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md similarity index 100% rename from backlog/tasks/ml-103 - Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md rename to backlog/completed/ml-103 - Increase-size-of-latest-purchase-artwork-in-stats-on-mobile.md diff --git a/backlog/tasks/ml-104 - Setup-Litestream-to-backup-database-to-Hetzner-object-storage.md b/backlog/completed/ml-104 - Setup-Litestream-to-backup-database-to-Hetzner-object-storage.md similarity index 100% rename from backlog/tasks/ml-104 - Setup-Litestream-to-backup-database-to-Hetzner-object-storage.md rename to backlog/completed/ml-104 - Setup-Litestream-to-backup-database-to-Hetzner-object-storage.md diff --git a/backlog/tasks/ml-105 - Refactor-MusicLibrary.ScrobbleRules.md b/backlog/completed/ml-105 - Refactor-MusicLibrary.ScrobbleRules.md similarity index 100% rename from backlog/tasks/ml-105 - Refactor-MusicLibrary.ScrobbleRules.md rename to backlog/completed/ml-105 - Refactor-MusicLibrary.ScrobbleRules.md diff --git a/backlog/tasks/ml-106 - Set-up-Copilot-instructions.md b/backlog/completed/ml-106 - Set-up-Copilot-instructions.md similarity index 100% rename from backlog/tasks/ml-106 - Set-up-Copilot-instructions.md rename to backlog/completed/ml-106 - Set-up-Copilot-instructions.md diff --git a/backlog/tasks/ml-107 - Regular-job-to-cleanup-asset-cache.md b/backlog/completed/ml-107 - Regular-job-to-cleanup-asset-cache.md similarity index 100% rename from backlog/tasks/ml-107 - Regular-job-to-cleanup-asset-cache.md rename to backlog/completed/ml-107 - Regular-job-to-cleanup-asset-cache.md diff --git a/backlog/tasks/ml-108 - Support-universal-search-navigation-via-keyboard.md b/backlog/completed/ml-108 - Support-universal-search-navigation-via-keyboard.md similarity index 100% rename from backlog/tasks/ml-108 - Support-universal-search-navigation-via-keyboard.md rename to backlog/completed/ml-108 - Support-universal-search-navigation-via-keyboard.md diff --git a/backlog/tasks/ml-109 - Improve-test-suite.md b/backlog/completed/ml-109 - Improve-test-suite.md similarity index 100% rename from backlog/tasks/ml-109 - Improve-test-suite.md rename to backlog/completed/ml-109 - Improve-test-suite.md diff --git a/backlog/tasks/ml-110 - Radios.md b/backlog/completed/ml-110 - Radios.md similarity index 100% rename from backlog/tasks/ml-110 - Radios.md rename to backlog/completed/ml-110 - Radios.md diff --git a/backlog/tasks/ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md b/backlog/completed/ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md similarity index 100% rename from backlog/tasks/ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md rename to backlog/completed/ml-111 - Review-design-of-ad-hoc-scrobble-show-view.md diff --git a/backlog/tasks/ml-112 - Optimise-scrobble-rule-application.md b/backlog/completed/ml-112 - Optimise-scrobble-rule-application.md similarity index 100% rename from backlog/tasks/ml-112 - Optimise-scrobble-rule-application.md rename to backlog/completed/ml-112 - Optimise-scrobble-rule-application.md diff --git a/backlog/tasks/ml-113 - Scrobble-groups-of-tracks.md b/backlog/completed/ml-113 - Scrobble-groups-of-tracks.md similarity index 100% rename from backlog/tasks/ml-113 - Scrobble-groups-of-tracks.md rename to backlog/completed/ml-113 - Scrobble-groups-of-tracks.md diff --git a/backlog/tasks/ml-114 - Display-progarchives-links-for-records.md b/backlog/completed/ml-114 - Display-progarchives-links-for-records.md similarity index 100% rename from backlog/tasks/ml-114 - Display-progarchives-links-for-records.md rename to backlog/completed/ml-114 - Display-progarchives-links-for-records.md diff --git a/backlog/tasks/ml-115 - Import-Last.fm-history.md b/backlog/completed/ml-115 - Import-Last.fm-history.md similarity index 100% rename from backlog/tasks/ml-115 - Import-Last.fm-history.md rename to backlog/completed/ml-115 - Import-Last.fm-history.md diff --git a/backlog/tasks/ml-116 - Display-similar-artists-with-an-image-grid.md b/backlog/completed/ml-116 - Display-similar-artists-with-an-image-grid.md similarity index 100% rename from backlog/tasks/ml-116 - Display-similar-artists-with-an-image-grid.md rename to backlog/completed/ml-116 - Display-similar-artists-with-an-image-grid.md diff --git a/backlog/tasks/ml-117 - Move-artist-bio-to-a-left-side-sheet.md b/backlog/completed/ml-117 - Move-artist-bio-to-a-left-side-sheet.md similarity index 100% rename from backlog/tasks/ml-117 - Move-artist-bio-to-a-left-side-sheet.md rename to backlog/completed/ml-117 - Move-artist-bio-to-a-left-side-sheet.md diff --git a/backlog/tasks/ml-118 - Add-actions-to-refresh-artist-info-and-artwork-from-artist-page.md b/backlog/completed/ml-118 - Add-actions-to-refresh-artist-info-and-artwork-from-artist-page.md similarity index 100% rename from backlog/tasks/ml-118 - Add-actions-to-refresh-artist-info-and-artwork-from-artist-page.md rename to backlog/completed/ml-118 - Add-actions-to-refresh-artist-info-and-artwork-from-artist-page.md diff --git a/backlog/tasks/ml-119 - Scrobble-individual-media.md b/backlog/completed/ml-119 - Scrobble-individual-media.md similarity index 100% rename from backlog/tasks/ml-119 - Scrobble-individual-media.md rename to backlog/completed/ml-119 - Scrobble-individual-media.md diff --git a/backlog/tasks/ml-12 - Use-Notes.change_note-2-instead-of-Note.changeset-2-in-notes-component.md b/backlog/completed/ml-12 - Use-Notes.change_note-2-instead-of-Note.changeset-2-in-notes-component.md similarity index 100% rename from backlog/tasks/ml-12 - Use-Notes.change_note-2-instead-of-Note.changeset-2-in-notes-component.md rename to backlog/completed/ml-12 - Use-Notes.change_note-2-instead-of-Note.changeset-2-in-notes-component.md diff --git a/backlog/tasks/ml-120 - When-scanning-a-wish-listed-record-set-its-selected-release.md b/backlog/completed/ml-120 - When-scanning-a-wish-listed-record-set-its-selected-release.md similarity index 100% rename from backlog/tasks/ml-120 - When-scanning-a-wish-listed-record-set-its-selected-release.md rename to backlog/completed/ml-120 - When-scanning-a-wish-listed-record-set-its-selected-release.md diff --git a/backlog/tasks/ml-121 - Disable-Last.fm-http-pool.md b/backlog/completed/ml-121 - Disable-Last.fm-http-pool.md similarity index 100% rename from backlog/tasks/ml-121 - Disable-Last.fm-http-pool.md rename to backlog/completed/ml-121 - Disable-Last.fm-http-pool.md diff --git a/backlog/tasks/ml-122 - Increase-size-of-record-form-save-button-on-mobile.md b/backlog/completed/ml-122 - Increase-size-of-record-form-save-button-on-mobile.md similarity index 100% rename from backlog/tasks/ml-122 - Increase-size-of-record-form-save-button-on-mobile.md rename to backlog/completed/ml-122 - Increase-size-of-record-form-save-button-on-mobile.md diff --git a/backlog/tasks/ml-124 - Improve-display-of-releases-in-the-edit-record-dropdown.md b/backlog/completed/ml-124 - Improve-display-of-releases-in-the-edit-record-dropdown.md similarity index 100% rename from backlog/tasks/ml-124 - Improve-display-of-releases-in-the-edit-record-dropdown.md rename to backlog/completed/ml-124 - Improve-display-of-releases-in-the-edit-record-dropdown.md diff --git a/backlog/tasks/ml-125 - Display-total-runtime-for-the-entire-release.md b/backlog/completed/ml-125 - Display-total-runtime-for-the-entire-release.md similarity index 100% rename from backlog/tasks/ml-125 - Display-total-runtime-for-the-entire-release.md rename to backlog/completed/ml-125 - Display-total-runtime-for-the-entire-release.md diff --git a/backlog/tasks/ml-126 - For-compilations-each-track-should-also-display-artists.md b/backlog/completed/ml-126 - For-compilations-each-track-should-also-display-artists.md similarity index 100% rename from backlog/tasks/ml-126 - For-compilations-each-track-should-also-display-artists.md rename to backlog/completed/ml-126 - For-compilations-each-track-should-also-display-artists.md diff --git a/backlog/tasks/ml-127 - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md b/backlog/completed/ml-127 - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md similarity index 100% rename from backlog/tasks/ml-127 - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md rename to backlog/completed/ml-127 - Display-tracks-each-one-with-title-and-duration-in-mm-ss.md diff --git a/backlog/tasks/ml-128 - Display-media-discs-ordered-by-position-with-total-runtime.md b/backlog/completed/ml-128 - Display-media-discs-ordered-by-position-with-total-runtime.md similarity index 100% rename from backlog/tasks/ml-128 - Display-media-discs-ordered-by-position-with-total-runtime.md rename to backlog/completed/ml-128 - Display-media-discs-ordered-by-position-with-total-runtime.md diff --git a/backlog/tasks/ml-129 - Display-tracklist-sheet-from-record-detail-page.md b/backlog/completed/ml-129 - Display-tracklist-sheet-from-record-detail-page.md similarity index 100% rename from backlog/tasks/ml-129 - Display-tracklist-sheet-from-record-detail-page.md rename to backlog/completed/ml-129 - Display-tracklist-sheet-from-record-detail-page.md diff --git a/backlog/tasks/ml-130 - Enrich-selected-release-input-and-display.md b/backlog/completed/ml-130 - Enrich-selected-release-input-and-display.md similarity index 100% rename from backlog/tasks/ml-130 - Enrich-selected-release-input-and-display.md rename to backlog/completed/ml-130 - Enrich-selected-release-input-and-display.md diff --git a/backlog/tasks/ml-131 - Connect-a-Last.fm-account.md b/backlog/completed/ml-131 - Connect-a-Last.fm-account.md similarity index 100% rename from backlog/tasks/ml-131 - Connect-a-Last.fm-account.md rename to backlog/completed/ml-131 - Connect-a-Last.fm-account.md diff --git a/backlog/tasks/ml-132 - Scrobble-a-record-to-Last.fm.md b/backlog/completed/ml-132 - Scrobble-a-record-to-Last.fm.md similarity index 100% rename from backlog/tasks/ml-132 - Scrobble-a-record-to-Last.fm.md rename to backlog/completed/ml-132 - Scrobble-a-record-to-Last.fm.md diff --git a/backlog/tasks/ml-133 - Show-a-record-track-list-with-durations.md b/backlog/completed/ml-133 - Show-a-record-track-list-with-durations.md similarity index 100% rename from backlog/tasks/ml-133 - Show-a-record-track-list-with-durations.md rename to backlog/completed/ml-133 - Show-a-record-track-list-with-durations.md diff --git a/backlog/tasks/ml-134 - Support-selecting-a-release-per-record.md b/backlog/completed/ml-134 - Support-selecting-a-release-per-record.md similarity index 100% rename from backlog/tasks/ml-134 - Support-selecting-a-release-per-record.md rename to backlog/completed/ml-134 - Support-selecting-a-release-per-record.md diff --git a/backlog/tasks/ml-135 - Add-country-to-artist-page.md b/backlog/completed/ml-135 - Add-country-to-artist-page.md similarity index 100% rename from backlog/tasks/ml-135 - Add-country-to-artist-page.md rename to backlog/completed/ml-135 - Add-country-to-artist-page.md diff --git a/backlog/tasks/ml-136 - Unicode-search.md b/backlog/completed/ml-136 - Unicode-search.md similarity index 100% rename from backlog/tasks/ml-136 - Unicode-search.md rename to backlog/completed/ml-136 - Unicode-search.md diff --git a/backlog/tasks/ml-137 - Polyfill-missing-data-in-scrobble-activity.md b/backlog/completed/ml-137 - Polyfill-missing-data-in-scrobble-activity.md similarity index 100% rename from backlog/tasks/ml-137 - Polyfill-missing-data-in-scrobble-activity.md rename to backlog/completed/ml-137 - Polyfill-missing-data-in-scrobble-activity.md diff --git a/backlog/tasks/ml-138 - Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md b/backlog/completed/ml-138 - Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md similarity index 100% rename from backlog/tasks/ml-138 - Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md rename to backlog/completed/ml-138 - Allow-multiple-plays-of-the-same-album-in-scrobble-activity.md diff --git a/backlog/tasks/ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md b/backlog/completed/ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md similarity index 100% rename from backlog/tasks/ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md rename to backlog/completed/ml-139 - Polyfill-missing-artist-IDs-in-scrobble-activity.md diff --git a/backlog/tasks/ml-14 - Replace-Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md b/backlog/completed/ml-14 - Replace-Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md similarity index 100% rename from backlog/tasks/ml-14 - Replace-Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md rename to backlog/completed/ml-14 - Replace-Process.sleep-with-sys.get_state-in-error_notifier_test.exs.md diff --git a/backlog/tasks/ml-140 - Get-artist-images.md b/backlog/completed/ml-140 - Get-artist-images.md similarity index 100% rename from backlog/tasks/ml-140 - Get-artist-images.md rename to backlog/completed/ml-140 - Get-artist-images.md diff --git a/backlog/tasks/ml-141 - Support-records-with-accents.md b/backlog/completed/ml-141 - Support-records-with-accents.md similarity index 100% rename from backlog/tasks/ml-141 - Support-records-with-accents.md rename to backlog/completed/ml-141 - Support-records-with-accents.md diff --git a/backlog/tasks/ml-142 - Improve-scrobble-UI-in-the-Release-component.md b/backlog/completed/ml-142 - Improve-scrobble-UI-in-the-Release-component.md similarity index 100% rename from backlog/tasks/ml-142 - Improve-scrobble-UI-in-the-Release-component.md rename to backlog/completed/ml-142 - Improve-scrobble-UI-in-the-Release-component.md diff --git a/backlog/tasks/ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md b/backlog/completed/ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md similarity index 100% rename from backlog/tasks/ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md rename to backlog/completed/ml-15 - Sanitize-Wikipedia-bio_html-in-ArtistLive.Show.md diff --git a/backlog/tasks/ml-17 - Experimental-comment-left-in-Last.fm-API-client.md b/backlog/completed/ml-17 - Experimental-comment-left-in-Last.fm-API-client.md similarity index 100% rename from backlog/tasks/ml-17 - Experimental-comment-left-in-Last.fm-API-client.md rename to backlog/completed/ml-17 - Experimental-comment-left-in-Last.fm-API-client.md diff --git a/backlog/tasks/ml-2 - Verify-or-drop-multipart-hex-dependency.md b/backlog/completed/ml-2 - Verify-or-drop-multipart-hex-dependency.md similarity index 100% rename from backlog/tasks/ml-2 - Verify-or-drop-multipart-hex-dependency.md rename to backlog/completed/ml-2 - Verify-or-drop-multipart-hex-dependency.md diff --git a/backlog/tasks/ml-22 - Search-count-function-pairs-duplicate-query-logic.md b/backlog/completed/ml-22 - Search-count-function-pairs-duplicate-query-logic.md similarity index 100% rename from backlog/tasks/ml-22 - Search-count-function-pairs-duplicate-query-logic.md rename to backlog/completed/ml-22 - Search-count-function-pairs-duplicate-query-logic.md diff --git a/backlog/tasks/ml-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md b/backlog/completed/ml-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md similarity index 100% rename from backlog/tasks/ml-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md rename to backlog/completed/ml-24 - RecordComponents-is-755-lines-with-40-mixed-functions.md diff --git a/backlog/tasks/ml-25 - recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md b/backlog/completed/ml-25 - recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md similarity index 100% rename from backlog/tasks/ml-25 - recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md rename to backlog/completed/ml-25 - recompact_positions-issues-per-row-UPDATEs-instead-of-bulk.md diff --git a/backlog/tasks/ml-29 - Collection-Wishlist-index-LiveView-duplication.md b/backlog/completed/ml-29 - Collection-Wishlist-index-LiveView-duplication.md similarity index 100% rename from backlog/tasks/ml-29 - Collection-Wishlist-index-LiveView-duplication.md rename to backlog/completed/ml-29 - Collection-Wishlist-index-LiveView-duplication.md diff --git a/backlog/tasks/ml-3 - Add-tests-for-ArtistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md b/backlog/completed/ml-3 - Add-tests-for-ArtistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md similarity index 100% rename from backlog/tasks/ml-3 - Add-tests-for-ArtistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md rename to backlog/completed/ml-3 - Add-tests-for-ArtistLive.Form-and-RecordSetLive.RecordPicker-LiveComponents.md diff --git a/backlog/tasks/ml-30 - Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md b/backlog/completed/ml-30 - Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md similarity index 100% rename from backlog/tasks/ml-30 - Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md rename to backlog/completed/ml-30 - Silent-error-suppression-in-Artists.refresh_lastfm_data-1.md diff --git a/backlog/tasks/ml-31 - Deeply-nested-subqueries-in-ListeningStats.md b/backlog/completed/ml-31 - Deeply-nested-subqueries-in-ListeningStats.md similarity index 100% rename from backlog/tasks/ml-31 - Deeply-nested-subqueries-in-ListeningStats.md rename to backlog/completed/ml-31 - Deeply-nested-subqueries-in-ListeningStats.md diff --git a/backlog/tasks/ml-32 - OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md b/backlog/completed/ml-32 - OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md similarity index 100% rename from backlog/tasks/ml-32 - OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md rename to backlog/completed/ml-32 - OpenAI-API-uses-unsafe-bang-methods-and-lacks-rate-limiting.md diff --git a/backlog/tasks/ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md b/backlog/completed/ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md similarity index 100% rename from backlog/tasks/ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md rename to backlog/completed/ml-33 - Align-Last.fm-callback-errors-with-app-conventions.md diff --git a/backlog/tasks/ml-34 - Make-record-creation-resilient-to-color-extraction-failure.md b/backlog/completed/ml-34 - Make-record-creation-resilient-to-color-extraction-failure.md similarity index 100% rename from backlog/tasks/ml-34 - Make-record-creation-resilient-to-color-extraction-failure.md rename to backlog/completed/ml-34 - Make-record-creation-resilient-to-color-extraction-failure.md diff --git a/backlog/tasks/ml-35 - Harden-the-public-asset-endpoint-against-invalid-payloads.md b/backlog/completed/ml-35 - Harden-the-public-asset-endpoint-against-invalid-payloads.md similarity index 100% rename from backlog/tasks/ml-35 - Harden-the-public-asset-endpoint-against-invalid-payloads.md rename to backlog/completed/ml-35 - Harden-the-public-asset-endpoint-against-invalid-payloads.md diff --git a/backlog/tasks/ml-36 - Return-controlled-errors-from-genre-population.md b/backlog/completed/ml-36 - Return-controlled-errors-from-genre-population.md similarity index 100% rename from backlog/tasks/ml-36 - Return-controlled-errors-from-genre-population.md rename to backlog/completed/ml-36 - Return-controlled-errors-from-genre-population.md diff --git a/backlog/tasks/ml-37 - Fix-production-migration-strategy-mismatch.md b/backlog/completed/ml-37 - Fix-production-migration-strategy-mismatch.md similarity index 100% rename from backlog/tasks/ml-37 - Fix-production-migration-strategy-mismatch.md rename to backlog/completed/ml-37 - Fix-production-migration-strategy-mismatch.md diff --git a/backlog/tasks/ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md b/backlog/completed/ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md similarity index 100% rename from backlog/tasks/ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md rename to backlog/completed/ml-38 - Inconsistent-Logger-style-in-workers-eager-vs-lazy.md diff --git a/backlog/tasks/ml-39 - Missing-dark-mode-class-in-search_components.ex.md b/backlog/completed/ml-39 - Missing-dark-mode-class-in-search_components.ex.md similarity index 100% rename from backlog/tasks/ml-39 - Missing-dark-mode-class-in-search_components.ex.md rename to backlog/completed/ml-39 - Missing-dark-mode-class-in-search_components.ex.md diff --git a/backlog/tasks/ml-4 - Improve-test-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md b/backlog/completed/ml-4 - Improve-test-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md similarity index 100% rename from backlog/tasks/ml-4 - Improve-test-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md rename to backlog/completed/ml-4 - Improve-test-coverage-for-LiveHelpers.RecordActions-and-Components.Chat.md diff --git a/backlog/tasks/ml-40 - Two-different-pagination-query-styles-across-contexts.md b/backlog/completed/ml-40 - Two-different-pagination-query-styles-across-contexts.md similarity index 100% rename from backlog/tasks/ml-40 - Two-different-pagination-query-styles-across-contexts.md rename to backlog/completed/ml-40 - Two-different-pagination-query-styles-across-contexts.md diff --git a/backlog/tasks/ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md b/backlog/completed/ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md similarity index 100% rename from backlog/tasks/ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md rename to backlog/completed/ml-41 - ArtistInfo-changeset-uniquely-casts-id-field.md diff --git a/backlog/tasks/ml-42 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md b/backlog/completed/ml-42 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md similarity index 100% rename from backlog/tasks/ml-42 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md rename to backlog/completed/ml-42 - Missing-foreign_key_type-on-Note-and-ArtistInfo-schemas.md diff --git a/backlog/tasks/ml-43 - Wikipedia.Config-missing-enforce_keys.md b/backlog/completed/ml-43 - Wikipedia.Config-missing-enforce_keys.md similarity index 100% rename from backlog/tasks/ml-43 - Wikipedia.Config-missing-enforce_keys.md rename to backlog/completed/ml-43 - Wikipedia.Config-missing-enforce_keys.md diff --git a/backlog/tasks/ml-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md b/backlog/completed/ml-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md similarity index 100% rename from backlog/tasks/ml-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md rename to backlog/completed/ml-44 - Wikipedia-and-BraveSearch-APIs-missing-rate-limiting.md diff --git a/backlog/tasks/ml-45 - Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md b/backlog/completed/ml-45 - Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md similarity index 100% rename from backlog/tasks/ml-45 - Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md rename to backlog/completed/ml-45 - Inconsistent-fetch_-vs-refresh_-naming-in-Artists-context.md diff --git a/backlog/tasks/ml-46 - FetchArtistInfo-worker-contains-business-logic.md b/backlog/completed/ml-46 - FetchArtistInfo-worker-contains-business-logic.md similarity index 100% rename from backlog/tasks/ml-46 - FetchArtistInfo-worker-contains-business-logic.md rename to backlog/completed/ml-46 - FetchArtistInfo-worker-contains-business-logic.md diff --git a/backlog/tasks/ml-47 - PruneAssets-worker-has-direct-Repo-queries.md b/backlog/completed/ml-47 - PruneAssets-worker-has-direct-Repo-queries.md similarity index 100% rename from backlog/tasks/ml-47 - PruneAssets-worker-has-direct-Repo-queries.md rename to backlog/completed/ml-47 - PruneAssets-worker-has-direct-Repo-queries.md diff --git a/backlog/tasks/ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md b/backlog/completed/ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md similarity index 100% rename from backlog/tasks/ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md rename to backlog/completed/ml-48 - ScrobbleActivity-context-has-zero-test-coverage.md diff --git a/backlog/tasks/ml-49 - BarcodeScan-context-has-zero-test-coverage.md b/backlog/completed/ml-49 - BarcodeScan-context-has-zero-test-coverage.md similarity index 100% rename from backlog/tasks/ml-49 - BarcodeScan-context-has-zero-test-coverage.md rename to backlog/completed/ml-49 - BarcodeScan-context-has-zero-test-coverage.md diff --git a/backlog/tasks/ml-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md b/backlog/completed/ml-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md similarity index 100% rename from backlog/tasks/ml-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md rename to backlog/completed/ml-50 - Duplicated-parse-helpers-in-Collection-Wishlist-Index.md diff --git a/backlog/tasks/ml-51 - ArtistLive.Show-is-823-lines.md b/backlog/completed/ml-51 - ArtistLive.Show-is-823-lines.md similarity index 100% rename from backlog/tasks/ml-51 - ArtistLive.Show-is-823-lines.md rename to backlog/completed/ml-51 - ArtistLive.Show-is-823-lines.md diff --git a/backlog/tasks/ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md b/backlog/completed/ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md similarity index 100% rename from backlog/tasks/ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md rename to backlog/completed/ml-52 - Collection-Wishlist-Show-LiveViews-duplication.md diff --git a/backlog/tasks/ml-53 - Rewrite-vertical-bar-chart-component.md b/backlog/completed/ml-53 - Rewrite-vertical-bar-chart-component.md similarity index 100% rename from backlog/tasks/ml-53 - Rewrite-vertical-bar-chart-component.md rename to backlog/completed/ml-53 - Rewrite-vertical-bar-chart-component.md diff --git a/backlog/tasks/ml-54 - Standardize-play-icon-sizing.md b/backlog/completed/ml-54 - Standardize-play-icon-sizing.md similarity index 100% rename from backlog/tasks/ml-54 - Standardize-play-icon-sizing.md rename to backlog/completed/ml-54 - Standardize-play-icon-sizing.md diff --git a/backlog/tasks/ml-55 - Standardize-stats-dashboard-gap-sizes.md b/backlog/completed/ml-55 - Standardize-stats-dashboard-gap-sizes.md similarity index 100% rename from backlog/tasks/ml-55 - Standardize-stats-dashboard-gap-sizes.md rename to backlog/completed/ml-55 - Standardize-stats-dashboard-gap-sizes.md diff --git a/backlog/tasks/ml-56 - Standardize-card-border-radius-and-shadow.md b/backlog/completed/ml-56 - Standardize-card-border-radius-and-shadow.md similarity index 100% rename from backlog/tasks/ml-56 - Standardize-card-border-radius-and-shadow.md rename to backlog/completed/ml-56 - Standardize-card-border-radius-and-shadow.md diff --git a/backlog/tasks/ml-57 - Standardize-grid-gap-values-across-record-grids.md b/backlog/completed/ml-57 - Standardize-grid-gap-values-across-record-grids.md similarity index 100% rename from backlog/tasks/ml-57 - Standardize-grid-gap-values-across-record-grids.md rename to backlog/completed/ml-57 - Standardize-grid-gap-values-across-record-grids.md diff --git a/backlog/tasks/ml-58 - Standardize-page-header-top-margin.md b/backlog/completed/ml-58 - Standardize-page-header-top-margin.md similarity index 100% rename from backlog/tasks/ml-58 - Standardize-page-header-top-margin.md rename to backlog/completed/ml-58 - Standardize-page-header-top-margin.md diff --git a/backlog/tasks/ml-59 - Standardize-list-separation-pattern-divide-y-vs-space-y.md b/backlog/completed/ml-59 - Standardize-list-separation-pattern-divide-y-vs-space-y.md similarity index 100% rename from backlog/tasks/ml-59 - Standardize-list-separation-pattern-divide-y-vs-space-y.md rename to backlog/completed/ml-59 - Standardize-list-separation-pattern-divide-y-vs-space-y.md diff --git a/backlog/tasks/ml-6 - Align-mix.exs-test-coverage-threshold-with-sandbox-achievable-level.md b/backlog/completed/ml-6 - Align-mix.exs-test-coverage-threshold-with-sandbox-achievable-level.md similarity index 100% rename from backlog/tasks/ml-6 - Align-mix.exs-test-coverage-threshold-with-sandbox-achievable-level.md rename to backlog/completed/ml-6 - Align-mix.exs-test-coverage-threshold-with-sandbox-achievable-level.md diff --git a/backlog/tasks/ml-60 - Unify-genre-tag-styling-between-edit-and-display.md b/backlog/completed/ml-60 - Unify-genre-tag-styling-between-edit-and-display.md similarity index 100% rename from backlog/tasks/ml-60 - Unify-genre-tag-styling-between-edit-and-display.md rename to backlog/completed/ml-60 - Unify-genre-tag-styling-between-edit-and-display.md diff --git a/backlog/tasks/ml-61 - Standardize-dropdown-toggle-variant-across-pages.md b/backlog/completed/ml-61 - Standardize-dropdown-toggle-variant-across-pages.md similarity index 100% rename from backlog/tasks/ml-61 - Standardize-dropdown-toggle-variant-across-pages.md rename to backlog/completed/ml-61 - Standardize-dropdown-toggle-variant-across-pages.md diff --git a/backlog/tasks/ml-62 - Route-Search-artist-queries-through-Artists-context.md b/backlog/completed/ml-62 - Route-Search-artist-queries-through-Artists-context.md similarity index 100% rename from backlog/tasks/ml-62 - Route-Search-artist-queries-through-Artists-context.md rename to backlog/completed/ml-62 - Route-Search-artist-queries-through-Artists-context.md diff --git a/backlog/tasks/ml-63 - Break-bidirectional-dependency-between-Records-and-Artists.md b/backlog/completed/ml-63 - Break-bidirectional-dependency-between-Records-and-Artists.md similarity index 100% rename from backlog/tasks/ml-63 - Break-bidirectional-dependency-between-Records-and-Artists.md rename to backlog/completed/ml-63 - Break-bidirectional-dependency-between-Records-and-Artists.md diff --git a/backlog/tasks/ml-64 - Split-ScrobbleActivity-into-focused-modules.md b/backlog/completed/ml-64 - Split-ScrobbleActivity-into-focused-modules.md similarity index 100% rename from backlog/tasks/ml-64 - Split-ScrobbleActivity-into-focused-modules.md rename to backlog/completed/ml-64 - Split-ScrobbleActivity-into-focused-modules.md diff --git a/backlog/tasks/ml-65 - Move-scrobble-queries-out-of-Records-context.md b/backlog/completed/ml-65 - Move-scrobble-queries-out-of-Records-context.md similarity index 100% rename from backlog/tasks/ml-65 - Move-scrobble-queries-out-of-Records-context.md rename to backlog/completed/ml-65 - Move-scrobble-queries-out-of-Records-context.md diff --git a/backlog/tasks/ml-67 - Credo-ModuleDoc-check-still-disabled.md b/backlog/completed/ml-67 - Credo-ModuleDoc-check-still-disabled.md similarity index 100% rename from backlog/tasks/ml-67 - Credo-ModuleDoc-check-still-disabled.md rename to backlog/completed/ml-67 - Credo-ModuleDoc-check-still-disabled.md diff --git a/backlog/tasks/ml-7 - Tighten-vague-test-assertions-in-scrobble_activity-and-worker-tests.md b/backlog/completed/ml-7 - Tighten-vague-test-assertions-in-scrobble_activity-and-worker-tests.md similarity index 100% rename from backlog/tasks/ml-7 - Tighten-vague-test-assertions-in-scrobble_activity-and-worker-tests.md rename to backlog/completed/ml-7 - Tighten-vague-test-assertions-in-scrobble_activity-and-worker-tests.md diff --git a/backlog/tasks/ml-71 - page_title-2-public-in-two-LiveViews.md b/backlog/completed/ml-71 - page_title-2-public-in-two-LiveViews.md similarity index 100% rename from backlog/tasks/ml-71 - page_title-2-public-in-two-LiveViews.md rename to backlog/completed/ml-71 - page_title-2-public-in-two-LiveViews.md diff --git a/backlog/tasks/ml-72 - TopAlbums-TopArtists-structural-duplication.md b/backlog/completed/ml-72 - TopAlbums-TopArtists-structural-duplication.md similarity index 100% rename from backlog/tasks/ml-72 - TopAlbums-TopArtists-structural-duplication.md rename to backlog/completed/ml-72 - TopAlbums-TopArtists-structural-duplication.md diff --git a/backlog/tasks/ml-73 - Sanitize-markdown-HTML-output-in-search-and-record-set-components.md b/backlog/completed/ml-73 - Sanitize-markdown-HTML-output-in-search-and-record-set-components.md similarity index 100% rename from backlog/tasks/ml-73 - Sanitize-markdown-HTML-output-in-search-and-record-set-components.md rename to backlog/completed/ml-73 - Sanitize-markdown-HTML-output-in-search-and-record-set-components.md diff --git a/backlog/tasks/ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md b/backlog/completed/ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md similarity index 100% rename from backlog/tasks/ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md rename to backlog/completed/ml-74 - Sanitize-markdown-HTML-output-in-Notes-component.md diff --git a/backlog/tasks/ml-75 - Add-Content-Security-Policy-header-to-browser-pipeline.md b/backlog/completed/ml-75 - Add-Content-Security-Policy-header-to-browser-pipeline.md similarity index 100% rename from backlog/tasks/ml-75 - Add-Content-Security-Policy-header-to-browser-pipeline.md rename to backlog/completed/ml-75 - Add-Content-Security-Policy-header-to-browser-pipeline.md diff --git a/backlog/tasks/ml-77 - Inconsistent-alphabetical-ordering-helpers.md b/backlog/completed/ml-77 - Inconsistent-alphabetical-ordering-helpers.md similarity index 100% rename from backlog/tasks/ml-77 - Inconsistent-alphabetical-ordering-helpers.md rename to backlog/completed/ml-77 - Inconsistent-alphabetical-ordering-helpers.md diff --git a/backlog/tasks/ml-78 - Commented-out-code-in-error_json.ex.md b/backlog/completed/ml-78 - Commented-out-code-in-error_json.ex.md similarity index 100% rename from backlog/tasks/ml-78 - Commented-out-code-in-error_json.ex.md rename to backlog/completed/ml-78 - Commented-out-code-in-error_json.ex.md diff --git a/backlog/tasks/ml-79 - Chat-implementations-have-trivial-test-coverage.md b/backlog/completed/ml-79 - Chat-implementations-have-trivial-test-coverage.md similarity index 100% rename from backlog/tasks/ml-79 - Chat-implementations-have-trivial-test-coverage.md rename to backlog/completed/ml-79 - Chat-implementations-have-trivial-test-coverage.md diff --git a/backlog/tasks/ml-8 - Add-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md b/backlog/completed/ml-8 - Add-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md similarity index 100% rename from backlog/tasks/ml-8 - Add-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md rename to backlog/completed/ml-8 - Add-docker-ecosystem-to-Dependabot-for-Dockerfile-base-images.md diff --git a/backlog/tasks/ml-80 - ScrobbleLive-has-zero-test-coverage.md b/backlog/completed/ml-80 - ScrobbleLive-has-zero-test-coverage.md similarity index 100% rename from backlog/tasks/ml-80 - ScrobbleLive-has-zero-test-coverage.md rename to backlog/completed/ml-80 - ScrobbleLive-has-zero-test-coverage.md diff --git a/backlog/tasks/ml-81 - Inconsistent-toast-arity-in-form-components.md b/backlog/completed/ml-81 - Inconsistent-toast-arity-in-form-components.md similarity index 100% rename from backlog/tasks/ml-81 - Inconsistent-toast-arity-in-form-components.md rename to backlog/completed/ml-81 - Inconsistent-toast-arity-in-form-components.md diff --git a/backlog/tasks/ml-82 - MaintenanceLive.Index-queries-database-directly.md b/backlog/completed/ml-82 - MaintenanceLive.Index-queries-database-directly.md similarity index 100% rename from backlog/tasks/ml-82 - MaintenanceLive.Index-queries-database-directly.md rename to backlog/completed/ml-82 - MaintenanceLive.Index-queries-database-directly.md diff --git a/backlog/tasks/ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md b/backlog/completed/ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md similarity index 100% rename from backlog/tasks/ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md rename to backlog/completed/ml-83 - Duplicated-apply_fallback_index-across-5-LiveViews.md diff --git a/backlog/tasks/ml-84 - Missing-FK-index-on-record_set_items.record_id.md b/backlog/completed/ml-84 - Missing-FK-index-on-record_set_items.record_id.md similarity index 100% rename from backlog/tasks/ml-84 - Missing-FK-index-on-record_set_items.record_id.md rename to backlog/completed/ml-84 - Missing-FK-index-on-record_set_items.record_id.md diff --git a/backlog/tasks/ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md b/backlog/completed/ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md similarity index 100% rename from backlog/tasks/ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md rename to backlog/completed/ml-85 - Unvalidated-String.to_integer-in-HTTP-endpoints.md diff --git a/backlog/tasks/ml-86 - Scrobble-data-enrichment.md b/backlog/completed/ml-86 - Scrobble-data-enrichment.md similarity index 100% rename from backlog/tasks/ml-86 - Scrobble-data-enrichment.md rename to backlog/completed/ml-86 - Scrobble-data-enrichment.md diff --git a/backlog/tasks/ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md b/backlog/completed/ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md similarity index 100% rename from backlog/tasks/ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md rename to backlog/completed/ml-87 - ArtistInfo.country-1-assumes-map-key-exists.md diff --git a/backlog/tasks/ml-88 - Hardcoded-genre-filter-in-collection-stats.md b/backlog/completed/ml-88 - Hardcoded-genre-filter-in-collection-stats.md similarity index 100% rename from backlog/tasks/ml-88 - Hardcoded-genre-filter-in-collection-stats.md rename to backlog/completed/ml-88 - Hardcoded-genre-filter-in-collection-stats.md diff --git a/backlog/tasks/ml-90 - Credo-complexity-checks-disabled.md b/backlog/completed/ml-90 - Credo-complexity-checks-disabled.md similarity index 100% rename from backlog/tasks/ml-90 - Credo-complexity-checks-disabled.md rename to backlog/completed/ml-90 - Credo-complexity-checks-disabled.md diff --git a/backlog/tasks/ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md b/backlog/completed/ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md similarity index 100% rename from backlog/tasks/ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md rename to backlog/completed/ml-91 - ScrobbleActivity-is-a-god-module-557-lines.md diff --git a/backlog/tasks/ml-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md b/backlog/completed/ml-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md similarity index 100% rename from backlog/tasks/ml-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md rename to backlog/completed/ml-92 - Heavy-duplication-in-ScrobbleRules-context-819-lines.md diff --git a/backlog/tasks/ml-93 - inspectreason-exposed-to-users-in-error-messages.md b/backlog/completed/ml-93 - inspectreason-exposed-to-users-in-error-messages.md similarity index 100% rename from backlog/tasks/ml-93 - inspectreason-exposed-to-users-in-error-messages.md rename to backlog/completed/ml-93 - inspectreason-exposed-to-users-in-error-messages.md diff --git a/backlog/tasks/ml-94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md b/backlog/completed/ml-94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md similarity index 100% rename from backlog/tasks/ml-94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md rename to backlog/completed/ml-94 - Unsafe-Assets.store_image-pattern-match-in-artist-form.md diff --git a/backlog/tasks/ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md b/backlog/completed/ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md similarity index 100% rename from backlog/tasks/ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md rename to backlog/completed/ml-95 - Process.sleep-for-rate-limiting-in-Oban-workers.md diff --git a/backlog/tasks/ml-96 - Missing-schema-validations-on-string-fields.md b/backlog/completed/ml-96 - Missing-schema-validations-on-string-fields.md similarity index 100% rename from backlog/tasks/ml-96 - Missing-schema-validations-on-string-fields.md rename to backlog/completed/ml-96 - Missing-schema-validations-on-string-fields.md diff --git a/backlog/tasks/ml-97 - Duplicate-fixture-definitions-in-tests-partially-solved.md b/backlog/completed/ml-97 - Duplicate-fixture-definitions-in-tests-partially-solved.md similarity index 100% rename from backlog/tasks/ml-97 - Duplicate-fixture-definitions-in-tests-partially-solved.md rename to backlog/completed/ml-97 - Duplicate-fixture-definitions-in-tests-partially-solved.md diff --git a/backlog/tasks/ml-98 - Potential-nil-crash-in-ScrobbleActivity.md b/backlog/completed/ml-98 - Potential-nil-crash-in-ScrobbleActivity.md similarity index 100% rename from backlog/tasks/ml-98 - Potential-nil-crash-in-ScrobbleActivity.md rename to backlog/completed/ml-98 - Potential-nil-crash-in-ScrobbleActivity.md diff --git a/backlog/tasks/ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md b/backlog/completed/ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md similarity index 100% rename from backlog/tasks/ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md rename to backlog/completed/ml-99 - Raw-SQL-with-string-concatenation-in-ScrobbleRules.md