docs: mark slice 3 (discovery) done + record deferred todos

README: discovery status → done (ListenBrainz-native, no Spotify); off-by-default
note for the discovery sweep; architecture mentions MusicBrainz+ListenBrainz.
Plan: check off final verification (suites green, whole-branch review passed,
live-API algorithm fix), append the review's deferred items to Notes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jonathan
2026-07-12 01:06:56 +02:00
parent d2c581d8e7
commit decb6302d4
2 changed files with 41 additions and 14 deletions
+24 -10
View File
@@ -2,8 +2,10 @@
Self-hosted, multi-source music acquisition and library tool — a replacement for
Lidarr + NZBget. Lyra discovers, ranks, downloads, tags, and organizes music across
sources of differing quality: **Qobuz** (lossless/hi-res), **Soulseek** (P2P),
**YouTube** (universal lossy fallback), and **Spotify** (discovery/metadata only).
sources of differing quality: **Qobuz** (lossless/hi-res), **Soulseek** (P2P), and
**YouTube** (universal lossy fallback), with recommendation-driven discovery via
**ListenBrainz** (Spotify's recommendation/related-artists APIs were retired for new
apps, so discovery is MetaBrainz-native and MBID-clean — no Spotify).
## Status
@@ -19,14 +21,25 @@ Built in three slices:
auto-grabs through the acquisition pipeline. Plus a **library scan** that ingests
existing on-disk albums as have + monitored + followed, and a per-artist
studio-only / show-all release-type filter.
3. **Discovery** **not started**. Spotify/recommendation-driven finding of new music.
3. **Discovery** **done**. Recommendation-driven finding of new music via
**ListenBrainz** similar-artists (MBID-native), behind a pluggable
`SimilaritySource` interface. A background sweep (and a "Discover now" button)
aggregates artists similar to the ones you follow into a manual review feed of
suggested **artists** and **albums** at `/discover`; **Follow** and **Want**
reuse the slice-2 follow / wanted flows, **Dismiss** is permanent. Plus a
web-side seed-search box. No Spotify (its recommendation APIs are dead for new
apps).
**Operational notes:** the monitor is **off by default** — set `monitor.enabled=true`
(+ optional `monitor.*` tuning) in the `Config` table to activate auto-grab/upgrade.
Credentials are entered in Settings and persist across `docker compose up -d --build`
rebuilds (don't use `down -v`). Tests run against a separate `lyra_test` database (a
guard blocks the live DB). Deferred hardening + the full roadmap live in the
implementation-plan "Notes" sections under [`docs/superpowers/plans/`](docs/superpowers/plans/).
**Operational notes:** the monitor and the discovery sweep are both **off by
default** — set `monitor.enabled=true` (+ optional `monitor.*` tuning) in the
`Config` table to activate auto-grab/upgrade, and `discover.enabled=true` (or
Settings → Discovery, + optional `discover.*` tuning) to activate the scheduled
discovery sweep. The `/discover` "Discover now" button and seed-search work with the
sweep off. Credentials are entered in Settings and persist across
`docker compose up -d --build` rebuilds (don't use `down -v`). Tests run against a
separate `lyra_test` database (a guard blocks the live DB). Deferred hardening + the
full roadmap live in the implementation-plan "Notes" sections under
[`docs/superpowers/plans/`](docs/superpowers/plans/).
## Architecture
@@ -34,7 +47,8 @@ Three Docker containers on a home server:
- **Next.js app** — UI + API (search, request, queue, progress, settings).
- **Python worker** — all source integration (streamrip, yt-dlp, slskd client,
beets/mutagen), running the six-stage acquisition pipeline.
mutagen; MusicBrainz + ListenBrainz for metadata and discovery), running the
six-stage acquisition pipeline plus the background monitor and discovery sweeps.
- **slskd** — off-the-shelf headless Soulseek daemon.
**Postgres** is the shared source of truth; a shared `/music` volume is the library.