Openclaw never emits an execution tree — it leaves one scattered across the
filesystem. Spawn metadata lives in SQLite (flows, tasks) and JSON
(subagents, cron); the actual work lives in per-session JSONL transcripts.
Each child points upward to its parent through a different field, and a Task
tool call buried inside a transcript is the only edge binding a session to the
subagent it spawns. Reconstructing "who's running, under what" means following
those pointers, source by source — including the documented gap where
spawnMode:"session" subagents leave a transcript but no spawn record at all.