v0.2.0 — pre-built GHCR image + 4 bug fixes
The 0.x install-path arc closes here. API image is now built once per release in CI and pushed multi-arch (linux/amd64 + linux/arm64) to GHCR. `financebench upgrade` defaults to `docker compose pull` — ~90 seconds instead of the ~10-minute source build that every 0.1.x release paid.
What changes for users
pip install --upgrade financebench-rag-agent
financebench upgradeSame two commands as before. Underneath, the second one is now:
- `git pull` (still useful for docs / scripts / .env.example updates)
- `docker compose pull` — fetches `ghcr.io/rishabhmannu/financebench-rag-agent-api:0.2.0` from GHCR
- `docker compose up -d --force-recreate`
Total wall time on M1: ~90 seconds for first pull, ~10s thereafter. Previously: ~10 min per release (Apple Silicon torch + sentence-transformers + spaCy rebuilds).
Building from source
For dev work, pre-release verification, or if GHCR is unreachable:
financebench upgrade --build
# or
BUILD_FROM_SOURCE=1 financebench upgradeRestores the pre-0.2.0 behavior.
Image registry
- Path: `ghcr.io/rishabhmannu/financebench-rag-agent-api`
- Tags: `:0.2.0` (pinned) and `:0.2` (floating major.minor — useful for users who want to stay on the 0.2.x line via manual pulls)
- Architectures: `linux/amd64` (Intel/AMD servers, dev machines) + `linux/arm64` (Apple Silicon, Graviton)
- Built by: GitHub Actions on every `v*` tag — see `.github/workflows/release-image.yml`
Bug fixes folded in
-
GIT_SHA threading in `financebench upgrade` — the same fix the 0.1.5 release applied to `setup.py` was missed in `upgrade.py` for three releases. Banner reported `sha unknown` on every container started via upgrade. Now threaded the same way as setup. (cli/commands/upgrade.py)
-
Qdrant port-range detection in doctor — `docker ps` returns range notation (`6333-6334`) for services exposing adjacent ports. Pre-0.2.0 substring matcher `:6333->` silently missed it. Replaced with a proper parser that expands ranges and handles IPv4+IPv6 dual entries. Doctor now correctly identifies the qdrant container as "your running stack" instead of flagging Docker Desktop's backend PID for killing. (cli/doctor/checks.py)
Cosmetic noise reduction
-
`ORT_LOGGING_LEVEL=3` in Dockerfile — silences the "Unknown CPU vendor" onnxruntime warning that fires on every script invocation inside arm64 Linux containers on M1. Pure log noise; test6 A/B falsified the perf hypothesis.
-
`AnalyzerEngine(supported_languages=["en"])` in guardrails — restricts presidio to English recognizers. Pre-0.2.0 presidio emitted 11 warnings per container start about Spanish/Italian/Polish recognizers that the registry doesn't support.
Upgrade
pip install --upgrade financebench-rag-agent
financebench upgradeAfter upgrade, run `docker image prune -a -f --filter "until=24h"` to evict the stale local `repo-api` images built by 0.1.x (each ~2.5 GB). The new GHCR image takes their place.
Verification
- 27 doctor unit tests pass (was 23 — +4 for the port-range parser)
- `twine check` PASSED on wheel + sdist (211 KB / 1.0 MB)
- Fresh-venv smoke test PASSED (36 MB site-packages, no change)
- GitHub Actions workflow ran successfully on first push
- Multi-arch manifest list verified via `docker buildx imagetools inspect` — both `linux/amd64` and `linux/arm64` digests present
What's next
0.1.5 / 0.1.6 / 0.1.7 / 0.1.8 are candidates for yanking once 0.2.0 holds for a few days of real use. Pinned installs continue to work either way.