Skip to content

v0.36.0 -- ask_full() + bug fixes

Choose a tag to compare

@stffns stffns released this 30 Apr 07:09
· 84 commits to main since this release
73f7b75

v0.36.0

New public API

  • chat.ask_full() returning AskResult (#310, closes #303). Surfaces reasoning trace + token usage that ask() discards. Cerebras gpt-oss-120b populates message.reasoning; Ollama qwen3 thinking-mode uses message.thinking; OpenAI-compat servers (vLLM, DeepSeek, Together, xAI Grok, OpenAI o1/o3) read message.reasoning_content. ask() keeps its -> str contract via thin wrapper. Drives Merken Phase 2 distillation.
  • Memory.ask_full() SDK passthrough. Memory.ask is now a thin wrapper over ask_full(...).content so retrieval / LLM plumbing live in a single load-bearing path.
  • AskResult exported from top-level: from vstash import AskResult.

Bug fixes

  • #304 retrieval_mode="vec_only" now applies long-query distance-cutoff relaxation. ArguAna jumped from NDCG@10 = 0.0013 (1403/1406 zero) to 0.4250. Hybrid mode and all paper / model-card numbers untouched.
  • #296 Memory.add(collection=None) falls back to schema default "default" instead of crashing on the NOT NULL constraint.
  • #294 vstash retrain --synthesize-queries now works on Ollama and Cerebras (was crashing on missing config fields). Synthesis uses cfg.ollama.host, hardcoded Cerebras OpenAI-compat URL, and cfg.inference.model.
  • #295 Web uploads persist under ~/.vstash/uploads/<uuid12>-<safe-name> instead of pointing at deleted /var/folders/.../tmpXXX paths. Filename is basename-normalized to drop client path fragments and capped at 128 chars.

Internal

  • #297 Centralized VstashStore construction via vstash._store_open.open_store_for_config(cfg). Single entry point used by CLI, MCP, web, SDK, journal, federated search. Eliminates the per-surface IVFPQ tuning drift.
  • #305 v4 retrain validation evidence: post-v0.34 cosine fix paired bootstraps + multi-seed toolkit. v4 macro NDCG@10 = 0.4419 (vs v3 0.4476, within noise). v4 = honest current-code reference; v3 stays as the pre-v0.34 snapshot on HF.

Repo housekeeping (#311)

  • Deleted obsolete docs: paper/{ROADMAP,local-only-experiments,product-improvements}.md, docs/{frequency_decay_plan,future-improvements}.md, 5 benchmark/*.md legacy reports.
  • Refreshed CLAUDE.md key architecture decisions, README "What's New", paper/v2/vstash-paper-v2.md.

Compatibility

  • ask() retains -> str. Zero call-site change for existing code.
  • Cerebras / OpenAI / Ollama backends share permissive response handling so newer / older SDK shapes don't crash.
  • retrieval_mode enum default stays "hybrid" -- paper / README / v3 / v4 model numbers all measured against it.

Install

pip install vstash==0.36.0