@startuml
title Route Collision Dispatch (Before)

skinparam backgroundColor White
skinparam defaultFontColor Black
skinparam sequence {
  ArrowColor Black
  LifeLineBorderColor Black
  LifeLineBackgroundColor #FFFFFF
  ParticipantBorderColor Black
  ParticipantBackgroundColor #E8EEF9
  ActorBorderColor Black
  ActorBackgroundColor #F5F8FF
}

actor "Client" as Client
participant "AthenaAuth::handle_request_inner" as Pipeline
participant "Core dispatcher\nhandle_core_request" as Core #FFD7D7
participant "Plugin dispatcher\nplugin.on_request" as Plugin #D9F0FF

Client -> Pipeline: POST /change-email or POST /delete-user
Pipeline -> Core: Core routes checked first
Core --> Pipeline: Matched -> response returned
note right of Pipeline #FFF0B3
For exact method+path collisions,
plugin verification flows are bypassed
because core resolves first.
end note
Pipeline --> Client: 200 from core
Pipeline -[#999999,dashed]> Plugin: not reached on collisions

@enduml
