v0.7.2
v0.7.2 is a dogfooding-driven point release on the v0.7 line. It introduces a top-level schema_version field on policy.toml and threads the underlying loader cause through the gaze-cli PolicyConfig error envelope, both surfaced during a Pulseflow adopter demo on 2026-05-13. The release stays focused on Gaze's core contract: fail closed, preserve reversibility, and keep PII out of agent-visible surfaces.
TL;DR
Policy loading now declares its own schema_version and fails closed when an adopter's policy.toml targets an unsupported major.minor prefix, emitting a dedicated {"error":"PolicySchemaUnsupported","exit":2,"found":"...","supported":"0.1"} CLI envelope rather than the generic PolicyConfig shape. Every gaze-cli PolicyConfig map site now threads the loader cause through an additive optional detail field on the same JSON envelope, so adopters can see why a policy load failed without parsing free-form stderr. Existing 0.6.x and 0.7.x policy.toml files continue to load via a soft-default schema_version, so the upgrade is drop-in for current adopters.
Highlights
Policy schema versioning landed in PR #192. A new top-level schema_version field on policy.toml is parsed by gaze::Policy::load; the loader compares the major.minor prefix against gaze::SUPPORTED_POLICY_SCHEMA_MAJOR_MINOR and fails closed with the typed gaze::PolicyError::PolicySchemaUnsupported variant when the prefix does not match. The CLI maps this onto gaze_cli::CliError::PolicySchemaUnsupported and renders the dedicated {"error":"PolicySchemaUnsupported","exit":2,"found":"...","supported":"0.1"} envelope distinct from the generic PolicyConfig shape, so adopters can detect schema-version drift programmatically. Files written without schema_version resolve to gaze::DEFAULT_POLICY_SCHEMA_VERSION so existing 0.6.x and 0.7.x policies keep loading without edits. The change strengthens trust (auditable error variants tied to a specific schema contract) and adopter ergonomics (schema drift fails cleanly rather than producing a confusing parse error).
PolicyConfig error-envelope detail landed in PR #191. Every gaze-cli map_err(|_| PolicyConfig) site now threads the underlying loader cause through CliError::PolicyConfigDetail, populating an additive optional detail field on the existing {"error":"PolicyConfig","exit":2} envelope. The JSON shape stays additive — the error discriminator and exit code are unchanged — so downstream agents that key on the envelope keep parsing without code changes. The bare clap parse fallback intentionally remains detail-less so that raw argv noise does not leak into adopter-visible error metadata. The change strengthens adopter ergonomics (loader causes are now machine-readable instead of stderr-only) without weakening the closed error-variant guarantee.
Adopter notes
Policies that currently omit schema_version keep working unchanged. Adopters who want explicit schema pinning can add schema_version = "0.1" at the top of their policy.toml. Adopters who target a schema_version prefix that does not match 0.1 will see exit code 2 plus the PolicySchemaUnsupported envelope — the policy is rejected before any pipeline construction.
Agents that consume gaze-cli stderr-JSON for PolicyConfig envelopes will now receive an optional detail string carrying the loader cause. The field is additive: existing parsers that key on error and exit are unaffected.
Download
- Apple Silicon macOS: https://github.com/EmpireTwo/gaze/releases/download/v0.7.2/gaze-aarch64-apple-darwin
- Apple Silicon macOS SHA256: https://github.com/EmpireTwo/gaze/releases/download/v0.7.2/gaze-aarch64-apple-darwin.sha256
- Linux x86_64: https://github.com/EmpireTwo/gaze/releases/download/v0.7.2/gaze-x86_64-linux-gnu
- Linux x86_64 SHA256: https://github.com/EmpireTwo/gaze/releases/download/v0.7.2/gaze-x86_64-linux-gnu.sha256
Full CHANGELOG
https://github.com/EmpireTwo/gaze/blob/main/CHANGELOG.md#072---2026-05-13