**`docker-compose.yml` and `.env` are now local files created from tracked
`.example` copies, so an update never overwrites them. Every cloud provider's
model list was audited against the live APIs and the dead entries removed.**

- **`docker-compose.yml` is no longer tracked.** The repository ships
  `docker-compose.yml.example`; `make` copies it to `docker-compose.yml` on
  first run, and `.gitignore` covers the copy. Pulling this release deletes the
  tracked file from your checkout. If you had local edits to it, save them
  first, then reapply them after any `make` target recreates the file. To change
  the shipped defaults for everyone, edit `docker-compose.yml.example` instead;
  edits to `docker-compose.yml` cannot be committed.
- **Model aliases removed.** Each of these returned a result before and no
  longer resolves. The ones marked as already failing answered with a fallback
  model behind an HTTP 200 rather than an error, so callers may not have
  noticed.
  - pibox-zai, all of which worked because z.ai auto-routed them:
    `pibox-zai-glm-5.2`, `pibox-zai-glm-5.1`, `pibox-zai-glm-5-turbo`,
    `pibox-zai-glm-5`, `pibox-zai-glm-4.7`, `pibox-zai-glm-4.6`,
    `pibox-zai-glm-4.5`, `pibox-zai-glm-4.5-air`. Replace with
    `pibox-zai-glm-5.3` (for 5.2, 5.1, 5) or `pibox-zai-glm-5.3-flash` (for 4.7
    and below).
  - OpenRouter, already failing: `or-hermes-3-405b`, `or-qwen3-coder`,
    `or-qwen3-80b`, `or-llama-3.3-70b`, `or-gpt-oss-120b`, `or-gpt-oss-20b`,
    `or-nemotron-ultra-550b`, `or-nemotron-nano-9b`, `or-nemotron-nano-30b`.
  - HuggingFace, already failing: `hf-qwq-32b`, replaced by `hf-qwen3-32b`, and
    `hf-qwen3-vl-8b`, replaced by `hf-gemma-3-27b`.
  - Cerebras, archived upstream: `cerebras-glm-4.7`.
- **`PIBOX_ZAI_AVAILABLE_MODELS` and `PIBOX_ZAI_DEFAULT_MODEL` defaults
  changed** to `glm-5.3,glm-5.3-flash` and `glm-5.3-flash`. An `.env` pinning
  the old values will fail. Drop the override or set the new ids.

- `make bootstrap` creates `.env` and `docker-compose.yml` from their `.example`
  files. Every other target seeds them first, so `make run` on a fresh clone
  works with no manual copy step. The copy runs while `make` parses the
  Makefile, before it reads `.env`, so profile flags in a freshly created `.env`
  take effect on that same invocation.
- OpenRouter: nine free models replacing the nine that no longer resolve.
  `or-nemotron-lightning` (1M context), `or-nemotron-120b`, `or-dots-3-note`
  (text and image), `or-nemotron-omni-30b` (omni, reasoning),
  `or-north-mini-code`, `or-lfm-2.5-2.6b`, `or-ling-3-sante`, `or-ling-3-fin`,
  and `or-nemotron-content-safety`. The last three answer by name but stay out
  of the general fallback chains, where a domain-tuned model or a classifier
  would answer off-target.
- Groq: `groq-qwen3.8-27b`, `groq-allam-2-7b` for Arabic, and the
  `groq-prompt-guard-22m` and `groq-prompt-guard-86m` prompt-injection
  classifiers, which return a probability score rather than chat text.
- Cohere: `cohere-command-a-plus`, `cohere-command-a-reasoning`,
  `cohere-command-a-vision`, `cohere-command-a-translate`,
  `cohere-north-mini-code`, `cohere-command-r7b-arabic`,
  `cohere-aya-vision-32b`, and `cohere-tiny-aya-global`, `-earth`, `-fire`,
  `-water`.
- HuggingFace: `hf-qwen3-235b` and `hf-gemma-3-27b`.
- Cerebras: `cerebras-qwen3.8-27b` and `cerebras-gemma-4-31b`.

- **`groq-compound` and `groq-compound-mini` reached the wrong vendor.** Groq
  namespaced both ids under `groq/` upstream, so the old pins stopped resolving
  and the fallback chain answered with a Cohere model behind an HTTP 200. The
  pins are now `groq/groq/compound` and `groq/groq/compound-mini`: the first
  `groq/` selects the provider, the second belongs to the model id.
- Fallback chains no longer point at models that do not exist. Every chain key
  and every fallback target resolves to a registered model. That includes
  `local-talkies-cuda-qwen3-tts-0.6b`, a long-standing typo for
  `local-talkies-cuda-qwen3-tts`.

- pibox-zai is documented as running on a [GLM Coding
  Plan](https://z.ai/subscribe) rather than generic z.ai credits, and the plan's
  two models are the only exposed aliases. The provider page carries the
  token-to-credit formula and the per-model rates, with a note that those rates
  are conversion factors and not multipliers against an older baseline.
- The routing tier previously called "flat-rate" is now "subscription". The
  claim that it costs the subscription with "no extra per-call charge" is
  replaced with the accurate statement that the allowance is metered.
- Cerebras is documented as requiring a paid plan. At the last audit every model
  returned `Payment required to access this resource` on a free account, so the
  free-tier claims in the README, the provider page, and `.env.example` were
  wrong.