Skip to content

v3.11.0 — recall reaches the right memories and checks its work

Choose a tag to compare

@acidkill acidkill released this 23 Sep 04:02
· 166 commits to main since this release
d31938b

Version 3.11.0 makes recall search the whole brain more reliably, repairs fiber snapshots, and gives operators a direct way to measure sampled self-recall. It also makes automatic capture and memory expiry defaults match their documented intent.

Highlights

  • Better recall candidates. Semantic anchors use indexed nearest-neighbor search instead of scoring only the first 1,000 neurons. Keyword anchors use BM25 relevance instead of record-id order. Newly written memories can rank by creation age and an explicitly requested priority. An optional fiber-level vector retriever can surface a relevant fiber even when none of its neurons won the anchor search.
  • More honest confidence. A keyword-only match receives a proportional confidence discount when neither a neuron embedding nor a fiber-vector anchor grounds it. Intersection boosting is capped; fiber-vector hits count as grounding.
  • Snapshots that retain fiber state. Export/import now round-trips every persisted fiber field, including summaries, tags, metadata, and the separately stored fiber_vec. Old seven-field snapshots remain importable. Public Fiber.id values round-trip in their dashed form.
  • Capture and retention controls. Explicit auto_capture_mode = "off" stops automatic writes. ungated is available for intentional capture without the quality gate. New auto-classified DECISION, ERROR, TOOL, and PREDICTION memories no longer receive an implicit expiry.
  • A retrieval diagnostic. smem brain recall-check --sample-size N probes sampled stored summaries through normal recall and reports how often their fibers are found. The existing health score remains a freshness and hygiene report.
  • Storage query plans. Neuron-state reads switch between direct record reads and a set query at the measured batch threshold, while the neuron-to-fiber lookup has regression coverage for its index plan.

Compatibility and rollout

  • The fiber-vector retriever is disabled by default. To use it for an existing brain, backfill its vectors with python scripts/backfill_fiber_vectors.py --brain <name> --apply, then enable fiber_vector_enabled. Enabling it without a backfill leaves that retrieval source empty. Back up the brain before a restore or migration.
  • embedding_anchor_mode defaults to auto, with explicit knn and scan modes. keyword_anchor_min_content_len defaults to 25 and can be set to 0. Retrieval order and confidence values may change for existing queries.
  • The new expiry defaults apply to new writes and type edits; existing expiry timestamps are not rewritten. Explicit expiry remains effective. An inherited write-gate mode = "off" keeps its prior ungated behavior; use explicit auto_capture_mode = "off" to stop automatic capture.
  • smem brain recall-check samples at most 100 of up to 1,000 scanned fibers. Its result is a diagnostic, not a guarantee of answer quality.
  • Publishing this draft should follow approval and merge of the release PR. Production deployment is a separate operation.

Verification

  • Full local non-stress suite: 7,440 passed, 154 skipped, 1 expected failure.
  • scripts/pre_ship.py passed all release checks: 16 synchronized version fields, changelog entry, Ruff, formatting, mypy, import and classifier smoke tests, cognitive integration, plugin checks, and documentation freshness.
  • Strict MkDocs build passed. Python sdist and wheel for 3.11.0 built successfully. Dashboard tests passed (21/21), and its production build passed.
  • All nine GitHub CI jobs passed for release PR #254 at 1e2865a7, including Python 3.11/3.12, SurrealDB integration, documentation, and package build. Recheck if the PR head changes. Publishing the draft triggers the package release workflow; package publication and production deployment are not claimed here.

Changes

  • Retrieval and ranking: #242, #244, #249. Indexed neuron anchors (#243) and the optional fiber-vector retriever (#245) entered main through #248.
  • Storage, snapshots, and query plans: #247, #248, #250. The Fiber.id correction (#246) also entered through #248.
  • Capture, retention, and diagnostics: #251, #252, #253.