Skip to content

titen-memory 0.4.0

Latest

Choose a tag to compare

@RamaAditya49 RamaAditya49 released this 31 Jul 13:10
729ec07

Fixed

  • Global CLI installs now run directly on Bun and report titen --version
    instead of requiring a Node shim.
  • Successful SDK responses now reject array, null, and primitive JSON
    envelopes with an INVALID_RESPONSE TitenError while preserving the HTTP
    status, request ID, and safe response metadata.
  • Bun HTTP, Cloudflare Workers AI, and injected embedding-provider results now
    require exact output cardinality, ordered provider indices when present,
    dense configured dimensions, and finite numeric coordinates before vector
    query or indexing.
  • Semantic readiness now distinguishes intentional FTS-only operation from
    partial configuration, unavailable vector initialization, legacy untracked
    vectors, missing requeue work, unsafe storage aliasing, empty restored
    projections, incompatible fingerprints, and locally observed indexing
    dependency failures; configured failures return a fixed local diagnostic
    without probing providers.
  • Semantic retrieval now discards sub-threshold cosine hits before canonical
    hydration, so relative ranking cannot turn a best bad neighbor into useful
    context. Bun and Cloudflare share the same validated unit-vector boundary.
  • Manual and background semantic-index drains now fence each outbox row before
    provider I/O, so an expired losing attempt cannot add stale failure evidence
    after another attempt completes the row. Lease eligibility and expiry now use
    the database clock at each conditional claim, so caller clock skew and earlier
    work cannot create an expired or stranded owner.
  • Semantic-index upserts and removals now persist canonical reconciliation
    before external mutation and recreate it after stale or apply-then-throw
    outcomes, so a losing owner cannot resurrect a purged vector, erase a newer
    projection, or report unowned work as complete.

Changed

  • Capability contract version 1 reports embedding, extraction, and background
    enrichment separately while retaining model as a deprecated 0.3.x
    embedding alias. Migration 13 persists the claim-index provider, model,
    revision, dimensions, metric, preprocessing, and schema fingerprint and
    requires an explicit reindex after incompatibility. Migration 14 retains only
    safe embedder/vector-store failure timestamps in semantic metadata until a
    later complete embed/upsert proves recovery.
  • sqlite-vec@0.1.9 is a pinned optional peer: default installs remain
    dependency-light while the documented vector install is machine-verifiable.
  • Context compilation now treats a missing project_id as unscoped-only;
    explicit cross-project recall requires cross_project: true plus the separate
    context:compile:all capability and reports its effective scope and grant
    reason across REST, SDK, and MCP.
  • Breaking: Semantic configuration now requires an immutable model revision, a named
    role-aware preprocessing profile, and an operator-calibrated cosine floor in
    the existing index fingerprint. EmbeddingGemma uses its official asymmetric
    query/document prompts; Titen ships no universal threshold.
  • Migration 16 adds nullable owner and expiry fields to the rebuildable semantic
    index outbox; canonical observations and claims are unchanged.