@startuml !include card-uml-style.iuml scale 620 width top to bottom direction state "01 WorkerContext lifetime\nstatic initialization → program end" as ObjectLifetime state "PREPARED" as Constructed state "02 STARTING" as Starting state "READY" as ReadyWrapper state "03 RUNNING" as RunningWrapper state "COMPLETED" as CompletedWrapper state "Ready" as ReadyKernel state "04 Running" as RunningKernel state "05 time sliced\nA ↔ B" as TimeSlice state "06 Deleted\ncontext remains static" as DeletedKernel Constructed --> Starting : create_worker() Starting --> ReadyWrapper : xTaskCreate = pdPASS ReadyWrapper --> RunningWrapper : callback entry RunningWrapper --> CompletedWrapper : result published ReadyKernel --> RunningKernel : scheduler RunningKernel --> ReadyKernel : preemption RunningKernel --> TimeSlice : equal priority TimeSlice --> RunningKernel : resume RunningKernel --> DeletedKernel : vTaskDelete(NULL) ObjectLifetime -[hidden]down-> Constructed CompletedWrapper -[hidden]down-> DeletedKernel note right of RunningWrapper trace_state is diagnostic application data. It is not eTaskState. end note @enduml