v1.2.0 — CI matrix hardening, security updates, REST API service
What's new
Theme: HNSW approximate nearest-neighbour embedding index + BM25-HNSW fused recall (ruflo-mod contract), CI matrix hardening, security updates, REST API systemd service, and generated CLI. Covers E-45.
HNSW Embedding Index (E-45)
HNSWStore—hnswlib-backed ANN index with lazyLocalEmbeddingBackend(384-dimall-MiniLM-L6-v2), label map + metadata sidecars, auto-save every 100 upserts, atomic writes via tmp +os.replace(); graceful degradation whenhnswlibabsentdepthfusion_hnsw_capabilityMCP tool — returnsHNSWCapabilityshape regardless of index state; always-on, no feature flag required; designed for agent-ops bridge startup probepublish_contextHNSW integration — every publish upserts into HNSW whenDEPTHFUSION_HNSW_ENABLED=true;indexed_in_hnsw: booladded to all responses (additive, back-compat)- BM25+HNSW fused recall —
final_score = 0.6 × bm25_score + 0.4 × hnsw_cosine;strategyfield ("bm25-only"/"bm25+hnsw-fused") andhnsw_available: booladded to allrecall_relevantresponse paths - Graceful SIGTERM/SIGINT shutdown — HNSW store saves to disk on graceful server shutdown
- New
hnswextras group inpyproject.toml; also added tovps-gpuandmac-mlxextras
REST API systemd service
infra/systemd/depthfusion-rest.service— user-level systemd unit for the FastAPI REST API (127.0.0.1:7300); reads~/.claude/depthfusion.envviaEnvironmentFile;Restart=on-failureinfra/systemd/README.md— install instructions
Generated CLI
- 30-command Go CLI (
depthfusion-pp-cli) generated frominfra/depthfusion/openapi-spec.yamlvia cli-printing-press v4.11.0; Scorecard: A (83%) - Compound commands:
discovery-audit,graph-inspect,batch-recall depthfusion-pp-mcp— stdio MCP server mirroring all 30 commands as agent toolsdocs/cli.md— full CLI reference
CI
- Windows CI matrix — all 9/9 jobs green (ubuntu/macos/windows × Python 3.10/3.11/3.12); Windows switched to subprocess-free test allowlist — 292 tests in ~2 min vs prior 40–60 min timeout; Ubuntu runs the full suite as authoritative reference
- Node.js 24 opt-in —
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: truein both workflows ahead of GitHub's 2026-06-02 forced migration
Fixed
core/file_locking.py—# type: ignore[attr-defined]onfcntlflock calls; mypy false-positive on Windows (runtime-guarded behindtry/except ImportError)api/rest.py—body: SetMemoryScoreBody = ...Ellipsis default annotated with# type: ignore[assignment]; FastAPI idiom not understood by mypy
Security
- 34 → 0 Dependabot alerts: urllib3
2.7.0, cryptography46.0.7, setuptools78.1.1, requests2.33.0, jinja23.1.6, certifi2024.7.4, idna3.15, configobj5.0.9, pyasn10.6.3, wheel0.46.2, pytest9.0.3 - chromadb
>=0.4→>=1.0— eliminates 0.x dep paths that brought in vulnerable Mako, PyJWT, and Markdown versions - Explicit lower bounds in all chromadb extras:
Mako>=1.3.12,PyJWT>=2.12.0,Pygments>=2.20.0,Markdown>=3.8.1
Housekeeping
.gitignoreextended:.claude/,.pm/,.rollback/,.codex,text.txt,.remember/
Test totals
- 2000 passed · 9 skipped · 0 failed (up from 1986 in v1.1.0)
- MCP tool count: 29 (28 in v1.1.0 +
depthfusion_hnsw_capability)