claude_memory 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/memory.sqlite3 +0 -0
  3. data/.claude/rules/claude_memory.generated.md +42 -64
  4. data/.claude/skills/release/SKILL.md +44 -6
  5. data/.claude/skills/study-repo/SKILL.md +15 -0
  6. data/.claude-plugin/commands/audit-memory.md +68 -0
  7. data/.claude-plugin/marketplace.json +1 -1
  8. data/.claude-plugin/plugin.json +1 -1
  9. data/CHANGELOG.md +26 -0
  10. data/CLAUDE.md +9 -2
  11. data/README.md +29 -1
  12. data/db/migrations/018_add_otel_telemetry.rb +81 -0
  13. data/docs/1_0_punchlist.md +318 -66
  14. data/docs/api_stability.md +341 -0
  15. data/docs/audit_runbook.md +209 -0
  16. data/docs/claude_monitoring.md +956 -0
  17. data/docs/improvements.md +148 -9
  18. data/docs/influence/ai-memory-systems-2026.md +403 -0
  19. data/docs/memory_audit_2026-05-21.md +303 -0
  20. data/docs/plugin.md +1 -1
  21. data/lib/claude_memory/audit/checks.rb +239 -0
  22. data/lib/claude_memory/audit/finding.rb +33 -0
  23. data/lib/claude_memory/audit/runner.rb +73 -0
  24. data/lib/claude_memory/commands/audit_command.rb +117 -0
  25. data/lib/claude_memory/commands/dashboard_command.rb +2 -1
  26. data/lib/claude_memory/commands/import_auto_memory_command.rb +180 -0
  27. data/lib/claude_memory/commands/otel_command.rb +240 -0
  28. data/lib/claude_memory/commands/registry.rb +4 -1
  29. data/lib/claude_memory/configuration.rb +60 -0
  30. data/lib/claude_memory/core/fact_query_builder.rb +1 -0
  31. data/lib/claude_memory/dashboard/api.rb +8 -0
  32. data/lib/claude_memory/dashboard/index.html +140 -1
  33. data/lib/claude_memory/dashboard/prompt_journey.rb +48 -0
  34. data/lib/claude_memory/dashboard/server.rb +86 -0
  35. data/lib/claude_memory/dashboard/telemetry.rb +156 -0
  36. data/lib/claude_memory/deprecations.rb +106 -0
  37. data/lib/claude_memory/distill/reference_material_detector.rb +37 -4
  38. data/lib/claude_memory/hook/auto_memory_mirror.rb +7 -3
  39. data/lib/claude_memory/hook/context_injector.rb +11 -2
  40. data/lib/claude_memory/mcp/tool_definitions.rb +3 -3
  41. data/lib/claude_memory/otel/attributes.rb +118 -0
  42. data/lib/claude_memory/otel/constants.rb +32 -0
  43. data/lib/claude_memory/otel/ingestor.rb +54 -0
  44. data/lib/claude_memory/otel/otlp_json_envelope.rb +254 -0
  45. data/lib/claude_memory/otel/prompt_scope.rb +108 -0
  46. data/lib/claude_memory/otel/settings_writer.rb +122 -0
  47. data/lib/claude_memory/otel/status.rb +58 -0
  48. data/lib/claude_memory/recall/staleness_annotator.rb +73 -0
  49. data/lib/claude_memory/resolve/predicate_policy.rb +17 -1
  50. data/lib/claude_memory/resolve/resolver.rb +30 -3
  51. data/lib/claude_memory/shortcuts.rb +61 -18
  52. data/lib/claude_memory/store/prompt_journey_query.rb +87 -0
  53. data/lib/claude_memory/store/schema_manager.rb +1 -1
  54. data/lib/claude_memory/store/sqlite_store.rb +136 -0
  55. data/lib/claude_memory/sweep/maintenance.rb +31 -1
  56. data/lib/claude_memory/sweep/sweeper.rb +6 -0
  57. data/lib/claude_memory/version.rb +1 -1
  58. data/lib/claude_memory.rb +18 -0
  59. metadata +26 -1
@@ -17,7 +17,10 @@ module ClaudeMemory
17
17
  proposed_fact_ttl_days: 14,
18
18
  disputed_fact_ttl_days: 30,
19
19
  content_retention_days: 30,
20
- mcp_tool_call_retention_days: 90
20
+ mcp_tool_call_retention_days: 90,
21
+ otel_metric_retention_days: 30,
22
+ otel_event_retention_days: 14,
23
+ otel_trace_retention_days: 7
21
24
  }.freeze
22
25
 
23
26
  attr_reader :store
@@ -249,6 +252,33 @@ module ClaudeMemory
249
252
  @store.mcp_tool_calls.where { called_at < cutoff }.delete
250
253
  end
251
254
 
255
+ # Delete OTel metric data points older than retention window.
256
+ # Returns: Integer count of deleted rows (0 if table missing).
257
+ def prune_old_otel_metrics
258
+ return 0 unless @store.db.table_exists?(:otel_metrics)
259
+
260
+ cutoff = cutoff_time(@config[:otel_metric_retention_days])
261
+ @store.otel_metrics.where { recorded_at < cutoff }.delete
262
+ end
263
+
264
+ # Delete OTel log-style events older than retention window.
265
+ # Returns: Integer count of deleted rows (0 if table missing).
266
+ def prune_old_otel_events
267
+ return 0 unless @store.db.table_exists?(:otel_events)
268
+
269
+ cutoff = cutoff_time(@config[:otel_event_retention_days])
270
+ @store.otel_events.where { occurred_at < cutoff }.delete
271
+ end
272
+
273
+ # Delete OTel trace spans older than retention window.
274
+ # Returns: Integer count of deleted rows (0 if table missing).
275
+ def prune_old_otel_traces
276
+ return 0 unless @store.db.table_exists?(:otel_traces)
277
+
278
+ cutoff = cutoff_time(@config[:otel_trace_retention_days])
279
+ @store.otel_traces.where { recorded_at < cutoff }.delete
280
+ end
281
+
252
282
  # Checkpoint the SQLite WAL file for compaction.
253
283
  # Returns: true
254
284
  def checkpoint_wal
@@ -8,6 +8,9 @@ module ClaudeMemory
8
8
  disputed_fact_ttl_days: 30,
9
9
  content_retention_days: 30,
10
10
  mcp_tool_call_retention_days: 90,
11
+ otel_metric_retention_days: 30,
12
+ otel_event_retention_days: 14,
13
+ otel_trace_retention_days: 7,
11
14
  default_budget_seconds: 5
12
15
  }.freeze
13
16
 
@@ -43,6 +46,9 @@ module ClaudeMemory
43
46
  run_if_within_budget { @stats[:orphaned_provenance_deleted] = maintenance.prune_orphaned_provenance }
44
47
  run_if_within_budget { @stats[:old_content_pruned] = maintenance.prune_old_content }
45
48
  run_if_within_budget { @stats[:mcp_tool_calls_pruned] = maintenance.prune_old_mcp_tool_calls }
49
+ run_if_within_budget { @stats[:otel_metrics_pruned] = maintenance.prune_old_otel_metrics }
50
+ run_if_within_budget { @stats[:otel_events_pruned] = maintenance.prune_old_otel_events }
51
+ run_if_within_budget { @stats[:otel_traces_pruned] = maintenance.prune_old_otel_traces }
46
52
  run_if_within_budget { @stats[:vec_backfilled] = maintenance.backfill_vec_index }
47
53
  run_if_within_budget { @stats[:vec_cleaned] = maintenance.cleanup_vec_expired }
48
54
  run_if_within_budget { @stats[:wal_checkpointed] = maintenance.checkpoint_wal }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClaudeMemory
4
- VERSION = "0.11.0"
4
+ VERSION = "0.12.0"
5
5
  end
data/lib/claude_memory.rb CHANGED
@@ -77,6 +77,14 @@ require_relative "claude_memory/commands/dedupe_conflicts_command"
77
77
  require_relative "claude_memory/commands/reclassify_references_command"
78
78
  require_relative "claude_memory/commands/census_command"
79
79
  require_relative "claude_memory/commands/dashboard_command"
80
+ require_relative "claude_memory/otel/constants"
81
+ require_relative "claude_memory/otel/attributes"
82
+ require_relative "claude_memory/otel/otlp_json_envelope"
83
+ require_relative "claude_memory/otel/ingestor"
84
+ require_relative "claude_memory/otel/settings_writer"
85
+ require_relative "claude_memory/otel/status"
86
+ require_relative "claude_memory/otel/prompt_scope"
87
+ require_relative "claude_memory/store/prompt_journey_query"
80
88
  require_relative "claude_memory/dashboard/fact_presenter"
81
89
  require_relative "claude_memory/dashboard/scoped_fact_resolver"
82
90
  require_relative "claude_memory/dashboard/conflicts"
@@ -87,13 +95,22 @@ require_relative "claude_memory/dashboard/knowledge"
87
95
  require_relative "claude_memory/dashboard/reuse"
88
96
  require_relative "claude_memory/dashboard/timeline"
89
97
  require_relative "claude_memory/dashboard/health"
98
+ require_relative "claude_memory/dashboard/telemetry"
99
+ require_relative "claude_memory/dashboard/prompt_journey"
90
100
  require_relative "claude_memory/dashboard/api"
91
101
  require_relative "claude_memory/dashboard/server"
92
102
  require_relative "claude_memory/commands/digest_command"
93
103
  require_relative "claude_memory/commands/show_command"
104
+ require_relative "claude_memory/commands/otel_command"
105
+ require_relative "claude_memory/commands/import_auto_memory_command"
106
+ require_relative "claude_memory/audit/finding"
107
+ require_relative "claude_memory/audit/checks"
108
+ require_relative "claude_memory/audit/runner"
109
+ require_relative "claude_memory/commands/audit_command"
94
110
  require_relative "claude_memory/commands/registry"
95
111
  require_relative "claude_memory/cli"
96
112
  require_relative "claude_memory/configuration"
113
+ require_relative "claude_memory/deprecations"
97
114
  require_relative "claude_memory/distill/distiller"
98
115
  require_relative "claude_memory/distill/extraction"
99
116
  require_relative "claude_memory/distill/null_distiller"
@@ -149,6 +166,7 @@ require_relative "claude_memory/recall/query_core"
149
166
  require_relative "claude_memory/recall/legacy_engine"
150
167
  require_relative "claude_memory/recall/dual_engine"
151
168
  require_relative "claude_memory/recall/stale_detector"
169
+ require_relative "claude_memory/recall/staleness_annotator"
152
170
  require_relative "claude_memory/recall"
153
171
  require_relative "claude_memory/shortcuts"
154
172
  require_relative "claude_memory/resolve/predicate_policy"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude_memory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentino Stoll
@@ -82,6 +82,7 @@ executables:
82
82
  extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
+ - ".claude-plugin/commands/audit-memory.md"
85
86
  - ".claude-plugin/commands/distill-transcripts.md"
86
87
  - ".claude-plugin/commands/memory-recall.md"
87
88
  - ".claude-plugin/marketplace.json"
@@ -144,16 +145,20 @@ files:
144
145
  - db/migrations/015_add_activity_events.rb
145
146
  - db/migrations/016_add_moment_feedback.rb
146
147
  - db/migrations/017_add_last_recalled_at.rb
148
+ - db/migrations/018_add_otel_telemetry.rb
147
149
  - docs/1_0_punchlist.md
148
150
  - docs/EXAMPLES.md
149
151
  - docs/GETTING_STARTED.md
150
152
  - docs/RELEASE_NOTES_v0.2.0.md
151
153
  - docs/RUBY_COMMUNITY_POST_v0.2.0.md
152
154
  - docs/SOCIAL_MEDIA_v0.2.0.md
155
+ - docs/api_stability.md
153
156
  - docs/architecture.md
154
157
  - docs/audit-queries.md
158
+ - docs/audit_runbook.md
155
159
  - docs/auto_init_design.md
156
160
  - docs/ci_integration.md
161
+ - docs/claude_monitoring.md
157
162
  - docs/dashboard.md
158
163
  - docs/demo.md
159
164
  - docs/eval_week1_summary.md
@@ -162,6 +167,7 @@ files:
162
167
  - docs/expert_review.md
163
168
  - docs/improvements.md
164
169
  - docs/influence/.gitkeep
170
+ - docs/influence/ai-memory-systems-2026.md
165
171
  - docs/influence/claude-mem.md
166
172
  - docs/influence/claude-supermemory.md
167
173
  - docs/influence/cq.md
@@ -170,6 +176,7 @@ files:
170
176
  - docs/influence/kbs.md
171
177
  - docs/influence/lossless-claw.md
172
178
  - docs/influence/qmd.md
179
+ - docs/memory_audit_2026-05-21.md
173
180
  - docs/organizational_memory_playbook.md
174
181
  - docs/plans/feature_adoption_plan.md
175
182
  - docs/plans/feature_adoption_plan_revised.md
@@ -184,7 +191,11 @@ files:
184
191
  - lefthook.yml
185
192
  - lib/claude_memory.rb
186
193
  - lib/claude_memory/activity_log.rb
194
+ - lib/claude_memory/audit/checks.rb
195
+ - lib/claude_memory/audit/finding.rb
196
+ - lib/claude_memory/audit/runner.rb
187
197
  - lib/claude_memory/cli.rb
198
+ - lib/claude_memory/commands/audit_command.rb
188
199
  - lib/claude_memory/commands/base_command.rb
189
200
  - lib/claude_memory/commands/census_command.rb
190
201
  - lib/claude_memory/commands/changes_command.rb
@@ -209,6 +220,7 @@ files:
209
220
  - lib/claude_memory/commands/git_lfs_command.rb
210
221
  - lib/claude_memory/commands/help_command.rb
211
222
  - lib/claude_memory/commands/hook_command.rb
223
+ - lib/claude_memory/commands/import_auto_memory_command.rb
212
224
  - lib/claude_memory/commands/index_command.rb
213
225
  - lib/claude_memory/commands/ingest_command.rb
214
226
  - lib/claude_memory/commands/init_command.rb
@@ -219,6 +231,7 @@ files:
219
231
  - lib/claude_memory/commands/initializers/memory_instructions_writer.rb
220
232
  - lib/claude_memory/commands/initializers/project_initializer.rb
221
233
  - lib/claude_memory/commands/install_skill_command.rb
234
+ - lib/claude_memory/commands/otel_command.rb
222
235
  - lib/claude_memory/commands/promote_command.rb
223
236
  - lib/claude_memory/commands/publish_command.rb
224
237
  - lib/claude_memory/commands/recall_command.rb
@@ -266,11 +279,14 @@ files:
266
279
  - lib/claude_memory/dashboard/index.html
267
280
  - lib/claude_memory/dashboard/knowledge.rb
268
281
  - lib/claude_memory/dashboard/moments.rb
282
+ - lib/claude_memory/dashboard/prompt_journey.rb
269
283
  - lib/claude_memory/dashboard/reuse.rb
270
284
  - lib/claude_memory/dashboard/scoped_fact_resolver.rb
271
285
  - lib/claude_memory/dashboard/server.rb
286
+ - lib/claude_memory/dashboard/telemetry.rb
272
287
  - lib/claude_memory/dashboard/timeline.rb
273
288
  - lib/claude_memory/dashboard/trust.rb
289
+ - lib/claude_memory/deprecations.rb
274
290
  - lib/claude_memory/distill/bare_conclusion_detector.rb
275
291
  - lib/claude_memory/distill/distiller.rb
276
292
  - lib/claude_memory/distill/extraction.rb
@@ -330,6 +346,13 @@ files:
330
346
  - lib/claude_memory/mcp/tool_definitions.rb
331
347
  - lib/claude_memory/mcp/tool_helpers.rb
332
348
  - lib/claude_memory/mcp/tools.rb
349
+ - lib/claude_memory/otel/attributes.rb
350
+ - lib/claude_memory/otel/constants.rb
351
+ - lib/claude_memory/otel/ingestor.rb
352
+ - lib/claude_memory/otel/otlp_json_envelope.rb
353
+ - lib/claude_memory/otel/prompt_scope.rb
354
+ - lib/claude_memory/otel/settings_writer.rb
355
+ - lib/claude_memory/otel/status.rb
333
356
  - lib/claude_memory/publish.rb
334
357
  - lib/claude_memory/recall.rb
335
358
  - lib/claude_memory/recall/dual_engine.rb
@@ -338,11 +361,13 @@ files:
338
361
  - lib/claude_memory/recall/legacy_engine.rb
339
362
  - lib/claude_memory/recall/query_core.rb
340
363
  - lib/claude_memory/recall/stale_detector.rb
364
+ - lib/claude_memory/recall/staleness_annotator.rb
341
365
  - lib/claude_memory/resolve/predicate_policy.rb
342
366
  - lib/claude_memory/resolve/resolver.rb
343
367
  - lib/claude_memory/shortcuts.rb
344
368
  - lib/claude_memory/store/llm_cache.rb
345
369
  - lib/claude_memory/store/metrics_aggregator.rb
370
+ - lib/claude_memory/store/prompt_journey_query.rb
346
371
  - lib/claude_memory/store/retry_handler.rb
347
372
  - lib/claude_memory/store/schema_manager.rb
348
373
  - lib/claude_memory/store/sqlite_store.rb