Add two more public-domain starter songs alongside Für Elise, wired into
_BUILTIN_STARTER_SOURCES so they seed into DLC_DIR/starter/ on first run:
- The Star-Spangled Banner (lead) — John Stafford Smith; cleaned the "Unknown"
artist / placeholder album, author "Fee[dB]ack".
- Ode to Joy (lead/rhythm/bass + drums) — Beethoven. Replaces the raw
"Ode to Joy (VST Cover)_The Adicts.feedpak" that was committed to main but
never added to the seed list (so it bundled 23 MB of dead weight and never
appeared). Fixed metadata (artist Beethoven, year 1824, author "Fee[dB]ack"),
and repointed the stem from the 22 MB editor WAV to the byte-identical-render
full.ogg (both exactly 85.324 s), shrinking the pack 23.8 MB -> 1.7 MB.
Add guard tests asserting every _BUILTIN_STARTER_SOURCES entry has its file
committed and that a seed run lands them all — this catches exactly the
listed-but-missing (or committed-but-unlisted) mismatch that left Ode to Joy
un-seeded.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ship a public-domain Für Elise (keys) feedpak as starter content so a fresh
install isn't an empty library. server._seed_builtin_starter_content() copies
bundled packs into DLC_DIR/starter/ exactly once, guarded by a marker in
CONFIG_DIR — unlike the always-reseeding diagnostic seed, a user who deletes
the starter song does not get it back. `starter/` is deliberately outside the
diagnostics/tutorials library carve-out so the song surfaces as a normal
library entry.
Extract the shared symlink-safe, mtime-aware copy loop into
_copy_builtin_packs() and route both the diagnostic and starter seeds through
it (diagnostic behavior unchanged; existing tests green).
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>