Skip to content

v0.9.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@Naoray Naoray released this 16 May 08:24
· 46 commits to main since this release
79ba82f

gaze v0.9.0-rc.1

TL;DR

v0.9.0-rc.1 shipped the v0.9 performance wave as a release candidate for adopter validation. The headline change was Kiji moving from a subprocess-backed safety net to in-process inference: warm p50 dropped from 323ms (subprocess) to 2.981ms (in-process ORT fp32), int8 warm p50 landed at 1.849ms, int8 cold start landed at 297ms, and the int8 bundle shrank from 249MB to 63MB with a 0.000 F1 recall delta across all locales/modes.

This was a performance and operations release, not a restore-contract release. Manifest restore semantics and the signed snapshot wire format stayed unchanged from v0.8.1, preserving the north-star contract: never leak PII, keep pseudonymization reversible, and make every token traceable.

Highlights

  1. Kiji became fast enough for agent loops (#250, #256, #258). In-process ORT removed the Python subprocess path from the hot loop, int8 quantization cut cold start to 297ms and bundle size to 63MB, and the tiny-model leaderboard validated Kiji int8 as the v0.9 default without recall loss.
  2. The pipeline stopped doing avoidable safety-net work (#252). Skip gates, the capitals heuristic, prefix cache, and length bucketing are opt-in, fail-closed performance controls. Best-case numeric input can reduce SafetyNet calls from 100% to 0%, and prefix-cache hit latency dropped -50.8%.
  3. gaze daemon made repeated CLI calls practical (#255). The daemon keeps a persistent JSONL stdio process alive across calls, eliminating full binary fork and model-load overhead while keeping multi-session isolation.
  4. Runtime choice is now explicit (#257). ORT is the recommended default. tract is the opt-in static-binary path for deployments where static linking matters more than the default runtime profile.
  5. Benchmarking and trust artifacts caught up to the perf work (#244, #245, #248). The release added end-to-end pipeline measurement, a multi-NER model leaderboard, observer-residual safety-net cells, and latency snapshots grounded in the 150-fixture coverage-loop corpus.

Known limitations

  • This is a release candidate, not final v0.9.0. The performance internals may still change before the final tag if adopter validation finds regressions.
  • The new gates are opt-in controls. Adopters should validate their own workloads before enabling skip gating in production.
  • tract is available for the static-binary path, but ORT remains the recommended default runtime.
  • Some benchmark commands emit large JSON snapshots during CI; they are measurement artifacts, not release notes.

Adopter notes

  • Upgrade as a pre-release: 0.9.0-rc.1 means adopter-validation window.
  • Restore compatibility is unchanged from v0.8.1: signed snapshots and manifest restore semantics continue to work.
  • For fastest Kiji local inference, use the int8 Kiji bundle and ORT runtime.
  • For repeated CLI integration, prefer gaze daemon over launching a fresh process per call.
  • For static-binary deployments, evaluate the opt-in tract runtime and compare it against ORT on your target platform.

Download

  • aarch64-darwin: gaze-v0.9.0-rc.1-aarch64-apple-darwin.tar.gz
  • x86_64-linux: gaze-v0.9.0-rc.1-x86_64-unknown-linux-gnu.tar.gz
  • SHA256SUMS

Both binaries should be treated as release-candidate artifacts until final v0.9.0 is cut.

CHANGELOG

Full PR-by-PR detail: CHANGELOG.md.

What's Changed

  • docs(readme): anchor restore example on ghostwriter use case by @Naoray in #228
  • docs(readme): polish ghostwriter section — ASCII flow + org typo by @Naoray in #229
  • [agent] refactor(safety-net): bench matrix expansion (v0.9 #33c) by @Naoray in #230
  • feat(safety-net): pin OPF source and snapshot by @Naoray in #231
  • [agent] feat(cli): emit entries in plaintext JSON gaze clean response (#323) by @Naoray in #232
  • [agent] chore(fixtures): replace @example.com with @example.invalid (#285) by @Naoray in #233
  • [agent] docs(metrics): introduce metrics.md SSOT (#327) by @Naoray in #235
  • feat(safety-net): ship Python kiji-runner reference wrapper (#33d partial) by @Naoray in #236
  • [agent] refactor(audit): consolidate SqliteLogger leak-suspect method (#294) by @Naoray in #234
  • [agent] feat(safety-net): pin OPF checkpoint bundle SHA (#33d follow-up) by @Naoray in #240
  • [agent] refactor(api): rename redact_* → pseudonymize_* per north-star (#293) by @Naoray in #237
  • [agent] feat(audit): NER-provenance schema migration (11 cols, additive) (#309) by @Naoray in #238
  • [agent] feat(safety-net): score OPF direct-detector cells (#33d follow-up) by @Naoray in #241
  • [agent] feat(safety-net): locale-aware Pass-3 dispatcher (#33e precursor) by @Naoray in #242
  • [agent] docs(readme): correct ghostwriter flow (app owns lookup, LLM owns prose) by @Naoray in #246
  • [agent] feat(safety-net): observer-residual cells + latency snapshot (#33d follow-up) (re-target #243) by @Naoray in #248
  • [agent] feat(bench): end-to-end gaze pipeline benchmark (detection + perf) by @Naoray in #244
  • [agent] feat(bench): multi-NER model leaderboard (#33d follow-up) by @Naoray in #245
  • fix(ci): free preinstalled bloat to unblock ubuntu-latest disk-full by @Naoray in #249
  • docs(readme): remove link to private demo repo by @Naoray in #251
  • feat(pipeline): tier 4 — skip-gating + prefix cache (#370) by @Naoray in #252
  • fix(v0.9.1): follow-up wave (5 HIGH findings) by @Naoray in #253
  • docs(readme): qualify proxy scope — API-key path only by @Naoray in #254
  • feat(kiji): in-process ort backend (#366) by @Naoray in #250
  • feat(kiji): int8 dynamic quantization (#368) by @Naoray in #256
  • feat(cli): gaze daemon mode (#367) by @Naoray in #255
  • feat(bench): tiny-model leaderboard (#371) by @Naoray in #258
  • feat(bench): runtime comparison — ort vs tract vs candle (#369) by @Naoray in #257
  • release: v0.9.0-rc.1 by @Naoray in #259

Full Changelog: v0.8.1...v0.9.0-rc.1