@startuml
scale 600 height
top to bottom direction
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 10
skinparam stateBorderColor #2c7794
skinparam stateBackgroundColor #edf6fa
skinparam ArrowColor #8095a1
title A6 STATE — reusable states of the same RV32 arena

[*] --> Free : 01 E01 one list node
Free --> Allocated : 02 E04 A+B+C allocated\ncurrent free = 3936
Allocated --> Fragmented : E05 free A\nE06 free C
Fragmented : 03 E06 two free blocks
Fragmented : sum free > largest block
Fragmented --> Coalesced : 04 E07 free B\nmerge previous, then next
Coalesced : one free block
Coalesced : current = largest = initial
Coalesced --> OOMChecked : 05 E08 request > arena
OOMChecked : NULL · hook=1 · PASS=1
OOMChecked --> [*]

state "minimum-ever" as MIN
Allocated -right-> MIN : records low watermark
Fragmented -right-> MIN : does not rise
Coalesced -right-> MIN : history remains
@enduml
