Skip to content

v1.14.0 — temporal query-resolution v1 (inert)

Choose a tag to compare

@goldenwo goldenwo released this 02 Aug 04:07
· 154 commits to main since this release

Temporal query resolution for recall: a deterministic parser turns a date expression inside a search query ("last week", "in June", "yesterday", "since 2026-05-01") into a date window, and results are re-ranked toward that window instead of by relevance alone. No model call is added to the read path.

Ships inert. The re-ranking path is gated on UM_TEMPORAL_QUERY=true, which is off by default — with the flag unset, search behaves exactly as it did in 1.13.2. What does run by default is a prevalence counter (recall.temporal_query) recording how often queries contain a resolvable date expression at all. That prevalence is the evidence base for deciding whether the feature is worth enabling.

  • 12 expression kinds (on_date, since_date, in_month, last_n, yesterday, today, last_week, this_week, last_month, this_month, last_year, this_year), deterministic parse only — no per-search model call, no added latency on the default path.
  • The ranking date is metadata.valid_from and nothing else. createdAt is deliberately not a fallback: it records bulk-arrival time, so ranking on it would order results by which import batch they happened to land in.
  • Honest reach today is 47.3% of stored points — the ones carrying valid_from. The write-side stamp that lifts it is the next change; it heals the corpus forward, with no backfill or migration.
  • Query input is bounded at 512 chars with ReDoS timing gates; quoted spans are excluded from date matching (apostrophes preserved).
  • The mem0-compat facade emits the same prevalence counter but is not re-ranked — a recorded v1 limitation, not an oversight: that path's fetch/limit semantics deserve their own decision.
  • Also in this release: .env.example / install.sh / OpenAPI surface for the new flag, and the regenerated Custom GPT actions spec.

Deployment note: upgrading needs no configuration change — leave UM_TEMPORAL_QUERY unset to keep current behavior.

Release image: ghcr.io/goldenwo/universal-memory-server (semver tags). See the repository README for setup and upgrade instructions.