Skip to content

v0.9.0 — Predicate Design Overhaul, Reject/Restore, Telemetry

Choose a tag to compare

@codenamev codenamev released this 16 Apr 17:41
· 245 commits to main since this release
Immutable release. Only release title and notes can be modified.

Highlights

Predicate vocabulary overhaul — curated from 13 → 8 predicates based on a multi-project survey of real memory databases. uses_framework reclassified as multi-value (fixing silent data loss in production). PredicatePolicy is now the single source of truth for vocabulary, snapshot sections, synonym canonicalization, and LLM guidance.

New commands: reject and restore — first-class tools for managing distiller quality. Mark hallucinated facts as wrong, or recover facts that were superseded by an obsolete classification.

MCP tool-call telemetry — every tool invocation is timed and recorded. claude-memory stats --tools shows call counts, latency percentiles, and error rates.

Proactive memory recall — MCP instructions now direct Claude to check conventions before code generation, architecture before explanations, and decisions before refactoring. A/B testing showed this produces 76-line accurate architecture explanations vs honest refusals without memory.


Added

  • claude-memory reject <id_or_docid> command + memory.reject_fact MCP tool — explicitly mark distiller hallucinations as wrong, closing associated conflicts
  • claude-memory restore --predicate NAME command — recover facts superseded by obsolete single-value predicate classifications (Jaccard-based token overlap heuristic)
  • MCP tool-call telemetry: mcp_tool_calls table, claude-memory stats --tools [--since DAYS], 90-day retention via Sweep
  • CLAUDE_CONFIG_DIR env var support for non-standard Claude Code config locations
  • Predicate synonym canonicalization at insert time (has_convention → convention, primary_language → uses_language)
  • Novel predicate warnings at insert time
  • NullDistiller emits uses_language facts for detected language entities
  • Proactive memory recall guidance in MCP server instructions
  • YARD documentation across 13 core source files (+473 lines)

Changed

  • uses_framework reclassified as multi-value — real projects use multiple frameworks (Rails + Turbo + Tailwind). Prior single-value classification silently superseded valid facts. Run claude-memory restore --predicate uses_framework to recover
  • PredicatePolicy is single source of truth for vocabulary, snapshot sections, synonym canonicalization, and LLM guidance
  • Predicate vocabulary curated 13 → 8 based on multi-project usage data
  • Registry::COMMANDS stores {class:, description:} with direct class references
  • Plugin and gem descriptions rewritten to be outcome-focused

Fixed

  • StatsCommand broken in production — used Sequel.sqlite (requires unlisted sqlite3 gem). Now uses extralite adapter
  • Missing embeddings command in shell completion output

Upgrade Notes

Schema: v12 → v14 (automatic). Migration 013 adds mcp_tool_calls. Migration 014 canonicalizes stale predicate names in existing facts.

Action required for uses_framework recovery: If your project uses multiple frameworks, past sessions may have superseded valid facts:

claude-memory restore --predicate uses_framework --dry-run   # preview
claude-memory restore --predicate uses_framework              # restore

Pruned predicates still work: preference, workflow, dependency, testing_strategy, tool_usage, ci_platform fall through to default multi-value policy. Existing facts are unaffected.


Full Changelog: v0.8.0...v0.9.0