@startuml
title After: Poisoned Mutexes Recover Without Unwrap Panics
skinparam backgroundColor #FFFFFF
skinparam defaultFontColor #000000
skinparam ArrowColor #111827
skinparam componentStyle rectangle
skinparam defaultFontName Consolas

component "InMemoryAdapter / Cache / RateLimiter" as adapter #E8FFF0
component "mutex.lock().unwrap_or_else(|p| p.into_inner())" as lock_recover #EAF2FF
component "shared state access" as state_access #E8F5E9
component "request handling flow" as flow #E8F5E9

flow --> adapter
adapter --> lock_recover
lock_recover --> state_access : lock ok or poisoned recovery
state_access --> flow

note right of lock_recover #E8FFF0
Runtime paths avoid panic-on-poison.
State can still be read/updated for
graceful degradation.
end note
@enduml
