v3.12.4 — bump pibox v0.8.0 → v0.9.0

Patch release. Tracks aicodebox v0.8.1 base. Three surface changes
propagated through /pibox-zai/:

  - /pibox-zai/openai/v1/chat/completions x-aicodebox-json-schema
    header actually validates now (v0.7.0 plumbed it but never read
    result.parsed). Success -> canonical JSON content; exhaustion
    -> 422; agent crash -> 500; stream+schema -> 400.
  - Per-attempt breakdown on /pibox-zai/run (.attempts) and OAI
    envelope (.aicodebox_attempts). Top-level .usage summed across
    attempts so per-token billing reflects every retry.
  - Breaking: /pibox-zai/openai/v1/models entries now carry
    owned_by="aicodebox" instead of owned_by="pi" (aicodebox v0.8.x
    renamed the field). Filter callers must migrate.

Base pinned via digest psyb0t/aicodebox:v0.8.1@sha256:3a234d49…
upstream.

aigate-side: image-tag bump + one test rewrite for the owned_by
rename. test_pibox.sh 7/7 green; aigate-pibox-zai-1 healthy on
v0.9.0.