Airframe v0.2.9
Fixes:
- batch_count: 0 -> batch_count: 1 in server_inference.rs (was killing QKV threads)
- Struct layout: per-field quant types aligned between Rust/WGSL
- Grammar control module for schoolmarm+grammar integration
- Shimmy API: tokenizer_arc(), eos_token(), im_end_token(),
fse_control_from_patterns(), trace_callback() - PPT invariant cage (B1-B3) for regression detection
- Prefer discrete GPU over integrated in adapter selection
(multi-GPU laptops: picks NVIDIA/AMD over Intel iGPU) - 357 library tests pass