@startuml
title Session IP Capture (Before)
skinparam backgroundColor #FFFFFF
skinparam sequence {
  ArrowColor #4B5563
  LifeLineBorderColor #9CA3AF
  LifeLineBackgroundColor #F9FAFB
  ParticipantBorderColor #6B7280
  ParticipantBackgroundColor #EEF2FF
}

actor Client
participant "Axum Router" as Axum
participant "convert_axum_request" as Convert
participant "AuthContext::extract_client_ip" as Extract
database "sessions" as Sessions

Client -> Axum: POST /sign-up/email\n(no proxy IP headers)
Axum -> Convert: Request -> AuthRequest
note right of Convert
Header-only IP extraction inputs.
No socket-address fallback injected.
end note
Convert -> Extract: headers only
Extract --> Convert: ip_address = None
Convert -> Sessions: create_session(ip_address = NULL)
Sessions --> Client: session row persisted\n(ip_address NULL)

@enduml