@startuml
scale 600 height
top to bottom direction
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 10
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
skinparam ArrowColor #8095a1
title A1 CONTEXT — from linear cursor to reusable heap

rectangle "<<application>>\n01 A / B / C experiment\nrequests payload bytes" as APP
rectangle "<<public API>>\n02 pvPortMalloc / vPortFree\nheap statistics" as API
rectangle "<<allocator>>\n03 heap_4\nfirst-fit · split · coalesce" as H4
rectangle "<<arena>>\n04 ucHeap[4096]\nheaders + payload" as ARENA
rectangle "<<target>>\n05 Hazard3 / RV32I\nGDB · registers · memory" as TARGET

APP -down-> API : request / release
API -down-> H4 : direct C call
H4 -down-> ARENA : manages
ARENA -down-> TARGET : stored in RAM

note right of H4
heap_1: allocate only
heap_2: free, no coalesce
heap_3: libc wrapper
heap_4: free + coalesce
heap_5: multiple regions
end note
@enduml
