Axon v0.2.1
What's Changed
π Bug Fixes
- Dead dirty flag β
_incoming_rel_dirtywas set but never read, so the O(NΓM) edge-count scan ran unconditionally on every call. It now short-circuits immediately when the index is clean. - Missing config field β
query_cache_ttlwas consumed viagetattr(..., 1800)silent fallback but never declared inAxonConfig. It is now a proper field (default1800s) settable inconfig.yaml. - Persist executor data race β
_persist_executorfell through to the shared 8-workerself._executorwhenAxonBrainwas active, allowing concurrent entity + relation graph saves to race on_gr_persist_hashes. It now always uses a private single-worker pool, serialising all persistence jobs. - Shallow-copy persist race β entity and relation graph snapshots were shallow-copied (
dict(...)) before being handed to the background write thread. Nested dict/list mutations on the main thread could corrupt the on-disk graph. Both now usecopy.deepcopyunder_graph_lock.
β‘ Performance
- O(1) entity matching via an inverted token index β replaces the O(n) full-graph Jaccard scan per query (10β100Γ speedup at 50 k+ entities).
- BFS traversal cache β LRU cache (512 entries, 15-min TTL) keyed on
(entities, max_hops, hop_decay); invalidated on graph mutation and project switch. - Async graph persistence β entity/relation saves offloaded to a single-worker background thread pool;
_flush_pending_saves()for safe shutdown. batch_search()on the vector store β replaces N separatesearch()round-trips for multi-query / HyDE variants with one batched call.- Pre-rerank filtering β candidate pool sliced to
top_k Γ 3before cross-encoder scoring; up to 66% fewer rerank calls. - Query cache TTL β cache entries now store
(timestamp, response); stale entries expire afterquery_cache_ttlseconds (default 30 min).
π Docs & Cleanup
README.mdis now the single source of truth for both GitHub and PyPI descriptions (PYPI_README.mdremoved).AxonCopilot.gifoptimised from 20.5 MB β 3.25 MB (below PyPI/Fastly 5 MB proxy limit).- Live CI + PyPI version badges added to README; Quick Start now shows
pip install axon-rag. bump_version.pynow auto-rebuilds VSIX + refreshesCargo.lockin one shot.audit_packaging.pychecks 6 version-bearing artefacts (added bundled VSIX filename check).- Removed 29 obsolete one-off bench/debug scripts from
scripts/. pyproject.tomlURLs updated (studio_brain_openβAxon); bundled VSIX updated toaxon-copilot-0.2.1.vsix.
Contributors
Full Changelog: v0.2.0...v0.2.1