M7: trace tree and replay. Spec §10.
At runtime the VM emits Call/Effect enter/exit events through the
Tracer trait. The Recorder here builds a tree of TraceNodes
keyed by AST NodeId (from the original canonical AST).
Persistence: a trace is one JSON file per run. Replay re-executes the
program with overrides keyed by NodeId.