Parent
- #402 Acquire word-timed lyrics from AMLL, then fall back to LRCLIB
What to build
Songs that already have Line-timed Lyrics from an online source first-paint those lyrics, then receive a Word-timed Upgrade. The upgrade path calls AMLL only. A confident word-timed hit replaces the cache, resets offset, and lights karaoke fill. An ambiguous or empty AMLL result leaves the current lyrics in place and stamps a seven-day probe. Network errors do not stamp. Manual, sidecar, and embedded lyrics are not replaced by this upgrade. Unsynced embedded still uses the existing full-chain automatic upgrade.
Acceptance criteria
- First paint of cached
lrc_lib/lrc_api/lrc_api_ttmlis not blocked on AMLL. - The session requests
automatic_upgradefor those online line-timed sources when they have no word tokens, including unsyncedlrc_lib. Protected sources stay skipped. - Upgrade persist may replace those sources only with word-timed
amll. A distinct probe-miss result must not share a type with “all online providers missing.” - Merge gate: seed
lrc_lib, drive the real AMLL-only persist path with AMLL 404 and with empty/ambiguous search; the row must staylrc_liband must not become absent. - Successful miss/ambiguous stamps
word_timed_checked_at(7-day TTL, same clock as negative cache). 429/5xx/timeout do not stamp. Clock failure treats the probe as fresh. An AMLL win clears the stamp. - Stamp-only persist is a real change so Publish Changes copies the stamp. Upgrade miss keeps a user-tuned offset. Upgrade win resets offset.
- Session apply-filter ignores a non-
amllfollow-up when the current source is online line-timed. - ADR 0027 records Word-timed Upgrade + confidence. ADR 0028 records no AGPL AMLL player packages. Contract
fetch_lyrics_onlinesemantics update.
Blocked by
- Ticket 3 (cold-path AMLL client, matcher, and accept-gate)