v0.9.4 — make the documented path work for a new user
Released straight from 0.9.2. 0.9.3 is deliberately skipped and will never exist.
Most of this release came from walking the documented quickstart on a clean machine as a new
user would, which found five defects on the path every new user takes.
Added
recall setupoffers bge-base (768 dims) and bge-large (1024 dims) beside bge-small, each
gated on having room for its own weights rather than on the shared download floor.recall setuprefuses an embedder whose vector width does not match the table it will write
to, naming the schema command that fixes it. Previously the mismatch surfaced on the first
write, after the model had downloaded and the corpus had been read.recall setuplists retrieval options this machine cannot run yet, marked(not installed yet), and prints what to install when one is chosen. They were previously hidden, which made
the feature look absent and left no way to ask for it.recall setupscaffolds aCLAUDE.mdand amemory/directory for the project, and indexes
that directory once it exists.- Added provider execution metadata for reasoning diagnostics and benchmark artifacts, including
provider id, model id, model revision when available, token counts, latency, and monetary cost
when providers expose it. - Added a reviewed inference proposal promotion workflow with separate promoted fact records.
- Added experimental reasoning release notes covering opt in use, provider neutrality, citation
constraints, CLI and MCP migration notes, serialized fields, limitations, and evaluation posture.
Changed
- PostgreSQL 18 compliance is now declared and tested: local Docker uses
pgvector/pgvector:pg18, CI runs schema migrations on PostgreSQL 16, 17, and 18, and the main
integration job runs on PostgreSQL 18. - Ported the MCP server to MCP Python SDK 2.x and raised the
mcpextra floor tomcp>=2,<3. - Raised the development Ruff range to
ruff>=0.16,<0.17while keeping the prior lint baseline
explicit inpyproject.toml. - The shipped calibration sample now holds twenty answerable and twenty unanswerable queries.
It previously held fourteen and five, below the certification floor, so following the
documented path produced an explicitly uncertified threshold. - The quickstart no longer assumes a clone. The compose file is inline, so
pip installalone is
enough to follow it, and the sample corpus that ships besiderecall/eval/queries.jsonis now
pointed at rather than left for the reader to discover.
Fixed
- The quickstart's schema command failed on every fresh database. It passed a custom
--table,
but global migrations must be applied through the default target first, so a new user following
the README exactly gotSchemaTooOldfrom inside the library. - The terminal video renderer writes its GIF before attempting the MP4, so a missing optional
dependency no longer discards an asset that never needed it, and reports which file it did not
write and why.