Skip to content

v0.1.19

Choose a tag to compare

@memtomem memtomem released this 26 Apr 11:40
a24f908

Highlights

  • Phase 1 of the surfacing observability + UX RFC ships (#256). stm_surfacing_stats now reports per-tool skip reasons, outcomes, and cache hit ratio. Three new sections (Skip reasons, Outcomes, Cache) appear after the existing DB-backed stats output, aggregated per tool plus a __total__ row. Counters live in a new SurfacingObservability class wired into SurfacingEngine and RelevanceGate via a keyword-only observability= parameter that defaults to None. State is in-memory only — counters reset on process restart. The new sections are suppressed entirely when no surfacing call has been recorded, so the existing output stays byte-for-byte for zero-traffic deployments. Phases 2–5 of the RFC remain wait-for-signal with explicit reopen triggers.

Internal

  • Phase 1 observability test coverage closed (#257) — TestSurfacingEngineObservability now pins no_query, no_results_dedup, and no_results_invalidated integration tests, so the 13 SkipReason + 4 Outcome + cache hit/miss matrix from the RFC §Resolution order is exhaustively covered.

Behavior change

  • stm_surfacing_stats output gains three new sections after the existing fields. New sections suppressed when no surfacing call has been recorded — zero-traffic deployments and scripted callers parsing the legacy fields are unaffected.
  • No SQLite migration. No env-var change. No new MCP tool.
  • Embedding callers using SurfacingEngine or RelevanceGate without the new observability= argument keep working.

Full changelog: https://github.com/memtomem/memtomem-stm/blob/main/CHANGELOG.md