Top-level let bindings with function calls (e.g., `let result = factorial(10)`) were emitted as static initializers, which is invalid C since function calls aren't compile-time constants. Now globals are declared with zero-init and initialized inside main() before any run expressions execute. Also fixes validate.sh to use exit codes instead of grep for cargo check/build. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>