@startuml uc-10-practice-bard-song autonumber title UC-10 Practice Bard Song (design sequence) actor Player participant "SongBoundary\n«/api/characters/{id}/songs»" as boundary <> participant "SongService\nsb-api::routes::set_song" as control <> participant "BardSong\nBARD_SONGS + active_song" as entity <> == View == Player -> boundary : GET songs boundary -> entity : available_songs (level-gated) boundary --> Player : songs + effects + active song == Set / Clear == Player -> boundary : POST song id (or empty to clear) boundary -> control : set_song(character, song) alt non-Bard control --> boundary : 403 else unknown song control --> boundary : 404 else level too low control --> boundary : 422 else ok control -> entity : active_song = song (or None), persist control --> boundary : {success, message, active_song} boundary --> Player : {success, message, active_song} end note over entity : active song applies in UC-08 combat (step 5) @enduml