Skip to content

v0.1.9

Choose a tag to compare

@memtomem memtomem released this 19 Apr 13:28
da6d222

Added

  • Background auto-indexing (F4) — auto_index.background (default false). When set true, Stage 4 INDEX runs via asyncio.create_task off the request path; the agent receives a [Indexing…] · scheduled placeholder footer immediately while indexing proceeds in the background. Trade-off: read-your-own-writes consistency is no longer guaranteed until the task completes — opt in only if agents tolerate the gap. Metrics row records index_ok IS NULL / index_error IS NULL / chunks_indexed = 0 (tri-state matching background extraction); dashboards filter background rows with WHERE index_ok IS NULL. Default false preserves the synchronous contract for every existing deployment.
  • PROGRESSIVE_FOOTER_TOKEN — canonical split token for progressive chunks (issue #160). Exported from memtomem_stm.proxy.progressive as the exact prefix ("\n---\n[progressive: chars=") that agents stitching sequential stm_proxy_read_more responses should split on, instead of the weaker "\n---\n". The [progressive: chars= suffix is a sentinel that does not appear in natural prose; splitting on the three-char delimiter alone silently drops bytes when content contains markdown horizontal rules, YAML frontmatter fences, or other --- sequences. Non-breaking: the footer wire format is unchanged. Regression tests cover markdown HR, YAML frontmatter, \n---\n[ lookalike brackets, and content that ends in \n---\n immediately before the footer; an additional test pins the exact legacy failure mode so a future refactor cannot silently regress to split("\n---\n")[0]. Agent-side contract documented in docs/pipeline.md § Stage 3.
  • CLI: mms version + mms status --json (#152) — dedicated version subcommand and scriptable JSON status output for tooling / CI.
  • CLI: mms health (#155) — per-upstream MCP connectivity checks with actionable diagnostics.
  • CLI: mms init + mms add --validate (#157) — first-time setup workflow (scaffold config, validate upstream on add).
  • CLI: colorized output with NO_COLOR honored (#158).
  • INDEX / EXTRACT pipeline outcome metrics (#159) — per-call success/failure surfaced alongside existing CLEAN/COMPRESS/SURFACE columns.
  • Optional deterministic trace_id on call_tool (#173) — opt-in kwarg for reproducible traces (bench harnesses, golden tests).
  • Parent LTM hints forwarded to operator observability (#191) — upstream hint payload exposed on surfacing spans for diagnostics (operator-only; downstream prepend text unchanged).

Changed

  • Progressive delivery surfaces memories for users who opt in via injection_mode (F6). The default injection_mode stays prepend, which continues to bypass surfacing on progressive (upgrading is a no-op for default deployments). Operators who set injection_mode to append or section now get Stage 3 (SURFACE) on progressive responses; prepend would shift stm_proxy_read_more offsets and stays skipped with a one-time WARNING. See docs/pipeline.md § Stage 3 and tests/test_progressive.py::TestProgressiveContentIntegrity::test_concat_invariant_under_surfacing for the empirical safety proof.
  • CallMetrics.surfacing_on_progressive_ok / surface_error (schema-provisioned by v0.1.8) now populate on the progressive path: True/False when surfacing ran, None when skipped (non-progressive call, no engine, or prepend mode).

Fixed

  • metrics_store read-path defensive lock (#166) — three read methods wrap the write-path lock so a future move to run_in_executor cannot silently introduce torn reads.
  • CLI: reject non-dict JSON configs with a clean error (#156); duplicate prefix warning now clearly states the operation proceeds (#154).
  • Notebook 05 — correct mms add invocation (#184), echo fixture refs, notebook 00 count (#181); notebook builder reconciled with post-commit direct edits from #150 (#182).
  • README CI pytest filter aligned with workflow (#185); pipeline / custom-integration line references refreshed (#179); bench trace prefix link in operations.md (#183).

Testing

  • 1465 tests (up from 1364).
  • bench_qa LLM-behavior harness (#168-#178) — 10 scenarios (S1-S10) covering happy paths, fallback ladder (S1/S6/S8), progressive round-trip, selective TOC demotion (S7), surfacing recall@k smoke (S10), 40-turn chat skeleton (S5); deterministic trace_id two-run gate; LLM-as-judge advisory scoring (opt-in, gpt-4.1-nano default); self-test probes; CI advisory job with frozen JSON/Markdown reports. See tests/bench/bench_qa/README.md and docs/bench_qa.md.
  • Contract test for empty-structured JSON from upstream (#190) — alpha-upstream loose pin; stable invariants asserted, new fields read via data.get().

Docs

  • README rewrite — user-benefits framing + improved CLI help text (#153).
  • Alpha banner above tagline (#188).
  • Docs restructure — WIP/internal guides moved to private memtomem-docs repo to minimize beginner barrier (#186).
  • Notebooks slimmed to 01_quickstart only — 00 + 02-05 moved to private repo (#187).
  • bench_qa reference + scenario-adding guide (#180).

Internal

  • Remove unused SelectiveCompressor import (#163).
  • Ignore local .env + .mcp.json (#192).