6fb6729beb
Five sites wired: - Create / Update / Delete playlist: pool-bound LogChange after success - AppendTracks: tx-bound LogChange per inserted playlist_track row - RemoveTrack: tx-bound LogChange after the delete + lookup the track_id pre-delete so the composite key is still resolvable The two tx-bound paths (AppendTracks, RemoveTrack) treat LogChange as required — failure rolls back the playlist mutation too. The pool-bound paths Warn on failure to match the scanner / likes pattern (mutation already committed; missed log row recovers on next mutation). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>