v0.1.19
Highlights
- Phase 1 of the surfacing observability + UX RFC ships (#256).
stm_surfacing_statsnow 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 newSurfacingObservabilityclass wired intoSurfacingEngineandRelevanceGatevia a keyword-onlyobservability=parameter that defaults toNone. 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) —
TestSurfacingEngineObservabilitynow pinsno_query,no_results_dedup, andno_results_invalidatedintegration tests, so the 13 SkipReason + 4 Outcome + cache hit/miss matrix from the RFC §Resolution order is exhaustively covered.
Behavior change
stm_surfacing_statsoutput 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
SurfacingEngineorRelevanceGatewithout the newobservability=argument keep working.
Full changelog: https://github.com/memtomem/memtomem-stm/blob/main/CHANGELOG.md