Skip to content

v0.7.0

Choose a tag to compare

@VonderVuflya VonderVuflya released this 04 Jul 18:32

Performance, benchmark honesty, and the native-memory bridge.

Performance

  • Embeddings stored as packed float32 blobs (~3.9× smaller than JSON text) with an
    in-process cache of unit-normalized vectors — dense search/dedup no longer
    json.loads every scoped embedding per query; cosine is a dot of two cached unit
    vectors. Measured A/B vs the previous engine: dense search() 10–29× faster and
    the speedup grows with store size (at 6k memories, 8.1 s/query → 0.28 s). Still
    zero-dependency (stdlib array, no numpy).
  • Lexical search pushes ORDER BY bm25 LIMIT into SQLite instead of Python-scoring
    every term match.
  • Batched reindex via Ollama /api/embed (32/req, per-item fallback) and startup
    warmup/reindex moved off the bind path
    (no lazy-spawn port race).
  • MCP tool calls run in-process instead of a python ygg.py subprocess per call,
    with stdout/stderr separated so --json stays parseable.
  • Index on (user_id, namespace, created_at) for the session-start hook's get_all.

Changed

  • Embedding model is versioned per row. Switching YGG_EMBED_MODEL marks old vectors
    stale and reindexes them, instead of comparing vectors across models. ygg doctor
    counts model-mismatched rows.
  • Benchmark reporting is credibility-first. eval/ygg_eval.py --report leads with
    holdout recall@1 (weights tuned on dev only): 0.93 within a project, 0.80 full-corpus,
    recall@3 = 1.00 in both. Discloses candidate pool sizes (min 2 / median 6 / max 35) and
    95% bootstrap CIs. README badge → holdout 0.93; BENCHMARKS.md + all 6 translations
    rewritten to the honest two-view framing.

Added

  • ygg export-native --project P — the native-memory bridge: writes a curated,
    type-grouped digest of a project's memory into a managed block in AGENTS.md/MEMORY.md
    (idempotent; preserves hand-written content). Pairs with ygg seed (which imports from
    the native memory) so Yggdrasil is the layer above Claude Code's and Codex's own memory,
    feeding them both ways.
  • ygg review [--apply] — work the governance queue from the CLI: consolidate exact/
    near duplicates (keep the oldest, archive the rest) and surface stale/conflict markers.
    Interactive on a TTY; --apply --yes auto-consolidates duplicates and flags stale markers
    for manual review. Everything is archived (reversible), never hard-deleted.
  • Ranking parity — a pinned or frequently-recalled memory retrieved only by vector now
    gets its pin/usage boost, via the same channel lexical hits use.

Security

  • Engine-side secret guard — a raw POST /add bypassing the CLI now also refuses obvious
    credentials (AWS keys, JWTs, GitHub/GitLab PATs, private keys, connection-string passwords).
    High-confidence structured tokens only, so memories that merely mention "password"/"secret"
    are unaffected.

Fixed

  • Cross-platform hw() — Linux /proc/meminfo + /proc/cpuinfo (+ nvidia-smi), Windows
    PowerShell CIM; the model recommender no longer sizes off 0 GB off-macOS.
  • First-hour polish — actionable port-conflict hint instead of a traceback; non-interactive
    install announces the lexical-only fallback.