A macro is a [macros.<Name>] table with typed params, defaults, a doc line
and a body; any table with a "macro" key invokes one, as a value or spliced
into an array, once per zipped element under "each". Expansion runs on the
parsed tree between Parse and Decode, is bounded, and reads nothing but the
documents it is given. The package is the expander vif's scenarios, bot
graphs and audio banks already use, placed here so that a module outside
vif, the audio engine's coming spin-off first, can share it.
Claude-Session: https://claude.ai/code/session_01RP6NsvbSaLTt1UbBXHNfL4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>