@startuml uc-12-level-up autonumber title UC-12 Level Up at Review Board (design sequence) actor Player participant "ReviewBoundary\n«/api/characters/{id}/level-up»" as boundary <> participant "ReviewBoard\nsb-core::character::level_up" as control <> participant "Progression\nxp_for_level + level_up_cost" as entity <> == Level up == Player -> boundary : POST level-up boundary -> control : level_up(character) control -> entity : xp_for_level(next) = 18*100*level^2 control -> entity : cost = 500 * next level alt at max level 100 control --> boundary : 422 (DomainError) else XP below threshold control --> boundary : 422 (DomainError) else gold < cost control --> boundary : 422 (DomainError) else ok control -> entity : level += 1, gold -= cost control -> entity : recompute + fully restore\nHP/energy/nerve/max SP, persist control --> boundary : {success, message, character} boundary --> Player : {success, message, character} end @enduml