**Reverses the `docker-compose.yml` change from v4.0.0. The base compose file is
tracked again, and local changes belong in `docker-compose.override.yml`.**

v4.0.0 made `docker-compose.yml` a local untracked file so an update could not
overwrite it. That was the wrong mechanism for this file. It carries 46 service
definitions, 22 nginx routes, and 19 rate-limit zones that have to move together
with the provider configs, the Makefile profiles, and the LiteLLM config
builder. A frozen copy silently breaks: a later release adds a service, ships
its provider YAML and profile flag, and the local compose has no matching
service, so LiteLLM registers a model pointing at a host that does not resolve
and nginx has no route for it.

Compose already solves this with an override file, which is what this release
uses.

- **`docker-compose.yml` is tracked again and an update overwrites edits to it.**
  Put local changes in `docker-compose.override.yml`, which is gitignored and
  merged last, so it wins over the base and over any bundled overlay. Write only
  the keys being changed:

  ```yaml
  services:
    claudebox:
      mem_limit: 8g
  ```

  **Upgrading from v4.0.0 needs one manual step.** v4.0.0 left an untracked
  `docker-compose.yml` in the working tree and this release adds that same path
  as a tracked file, so Git refuses the checkout with `untracked working tree
  file would be overwritten`. Move the file aside first, then pull, then port
  any edits into `docker-compose.override.yml`:

  ```bash
  mv docker-compose.yml docker-compose.yml.mine
  git pull
  diff -u docker-compose.yml docker-compose.yml.mine   # port what you changed
  ```

  Upgrading from v3.24.0 or earlier needs nothing; the file is tracked in both.
- **`docker-compose.yml.example` is removed.** The base file is the shipped
  default again, so the copy served no purpose.

- `COMPOSE_FILE` is now assembled by the Makefile in merge order: the base file,
  then `docker-compose.tailscale.yml` when `TAILSCALE=1`, then
  `docker-compose.override.yml` when it exists. Compose only auto-loads an
  override file when `COMPOSE_FILE` is unset, and the tailnet overlay sets it, so
  the override is appended explicitly rather than relying on that default.
- `make bootstrap` creates `.env` from `.env.example` and prints the active
  compose file chain. It no longer creates `docker-compose.yml`.
- `.env` is unchanged: still created from `.env.example` on first run, still
  gitignored. That file is settings rather than wiring, so a local copy cannot
  drift out of step with the rest of the repository.