Loop · Apply to each (concurrency: 50)
Per item: compose all 8 phases
Compose_all_Phases builds [{name, actual, deadline, schedule, status}×8] → Filter_Incomplete keeps actual=null rows → first() = current phase → Compose_Result_Object → Append to TrackingList
status: if(empty(currentPhase), 'Completed', 'In Progress')