The Pipeline

project.cue
    |
schema.cue + export.cue
    |  cue export -e build
    v
resolved model
    |  gen_build_spec.sh
    v
build_spec.zig
    |  comptime import
    v
build.zig / std.Build
    |
    v
zig-out/

The canonical path is:

python3 azazel check
python3 azazel gen
python3 azazel build
zig build test --summary all

azazel gen delegates to gen_build_spec.sh; there is one generator implementation. build_spec.zig is generated and gitignored. Generation is memoized, while CI removes the memoization stamp before its second pass so the determinism check performs a real regeneration.