memorymaster 3.26.1__tar.gz → 4.0.0__tar.gz

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 (890) hide show
  1. memorymaster-4.0.0/PKG-INFO +307 -0
  2. memorymaster-4.0.0/README.md +261 -0
  3. memorymaster-4.0.0/memorymaster/__init__.py +5 -0
  4. memorymaster-4.0.0/memorymaster/__main__.py +3 -0
  5. memorymaster-4.0.0/memorymaster/_storage_lifecycle.py +11 -0
  6. memorymaster-4.0.0/memorymaster/_storage_read.py +11 -0
  7. memorymaster-4.0.0/memorymaster/_storage_schema.py +11 -0
  8. memorymaster-4.0.0/memorymaster/_storage_shared.py +11 -0
  9. memorymaster-4.0.0/memorymaster/_storage_sources.py +11 -0
  10. memorymaster-4.0.0/memorymaster/_storage_write_claims.py +11 -0
  11. memorymaster-4.0.0/memorymaster/access_control.py +11 -0
  12. memorymaster-4.0.0/memorymaster/action_exporters.py +11 -0
  13. memorymaster-4.0.0/memorymaster/action_extractor.py +11 -0
  14. memorymaster-4.0.0/memorymaster/atlas_claim_extractor.py +11 -0
  15. memorymaster-4.0.0/memorymaster/atlas_contract.py +11 -0
  16. memorymaster-4.0.0/memorymaster/auto_extractor.py +11 -0
  17. memorymaster-4.0.0/memorymaster/auto_resolver.py +11 -0
  18. memorymaster-4.0.0/memorymaster/bridges/__init__.py +6 -0
  19. memorymaster-4.0.0/memorymaster/bridges/action_extractor.py +212 -0
  20. memorymaster-4.0.0/memorymaster/bridges/atlas_claim_extractor.py +162 -0
  21. memorymaster-4.0.0/memorymaster/bridges/db_merge.py +425 -0
  22. memorymaster-4.0.0/memorymaster/bridges/delta_sync.py +175 -0
  23. memorymaster-4.0.0/memorymaster/bridges/dream_bridge.py +806 -0
  24. memorymaster-4.0.0/memorymaster/bridges/federated_graphify.py +160 -0
  25. memorymaster-4.0.0/memorymaster/bridges/media_processing.py +199 -0
  26. memorymaster-4.0.0/memorymaster/bridges/media_providers.py +256 -0
  27. memorymaster-4.0.0/memorymaster/bridges/qmd_bridge.py +136 -0
  28. memorymaster-4.0.0/memorymaster/candidate_dedupe.py +11 -0
  29. memorymaster-4.0.0/memorymaster/claim_edges.py +11 -0
  30. memorymaster-4.0.0/memorymaster/claim_verifier.py +11 -0
  31. memorymaster-4.0.0/memorymaster/cli.py +14 -0
  32. memorymaster-4.0.0/memorymaster/cli_handlers_basic.py +11 -0
  33. memorymaster-4.0.0/memorymaster/cli_handlers_curation.py +11 -0
  34. memorymaster-4.0.0/memorymaster/cli_handlers_integrity.py +11 -0
  35. memorymaster-4.0.0/memorymaster/cli_helpers.py +11 -0
  36. memorymaster-4.0.0/memorymaster/closets.py +11 -0
  37. memorymaster-4.0.0/memorymaster/config.py +11 -0
  38. memorymaster-4.0.0/memorymaster/config_templates/codex-agents-md-append.md +56 -0
  39. memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +332 -0
  40. memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +40 -0
  41. memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-recall.py +40 -0
  42. memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +75 -0
  43. memorymaster-4.0.0/memorymaster/conflict_resolver.py +11 -0
  44. memorymaster-4.0.0/memorymaster/connectors/__init__.py +13 -0
  45. memorymaster-4.0.0/memorymaster/context_hook.py +11 -0
  46. memorymaster-4.0.0/memorymaster/context_optimizer.py +11 -0
  47. memorymaster-4.0.0/memorymaster/contradiction_probe.py +11 -0
  48. memorymaster-4.0.0/memorymaster/core/__init__.py +7 -0
  49. memorymaster-4.0.0/memorymaster/core/access_control.py +126 -0
  50. memorymaster-4.0.0/memorymaster/core/config.py +451 -0
  51. memorymaster-4.0.0/memorymaster/core/hook_log.py +65 -0
  52. memorymaster-4.0.0/memorymaster/core/intake_policy.py +351 -0
  53. memorymaster-4.0.0/memorymaster/core/key_rotator.py +270 -0
  54. memorymaster-4.0.0/memorymaster/core/lifecycle.py +83 -0
  55. memorymaster-4.0.0/memorymaster/core/llm_budget.py +190 -0
  56. memorymaster-4.0.0/memorymaster/core/llm_provider.py +698 -0
  57. memorymaster-4.0.0/memorymaster/core/observability.py +197 -0
  58. memorymaster-4.0.0/memorymaster/core/plugins.py +127 -0
  59. memorymaster-4.0.0/memorymaster/core/policy.py +133 -0
  60. memorymaster-4.0.0/memorymaster/core/security.py +558 -0
  61. memorymaster-4.0.0/memorymaster/core/service.py +2040 -0
  62. memorymaster-4.0.0/memorymaster/core/spool.py +201 -0
  63. memorymaster-4.0.0/memorymaster/core/webhook.py +172 -0
  64. memorymaster-4.0.0/memorymaster/daily_notes.py +11 -0
  65. memorymaster-4.0.0/memorymaster/dashboard.py +14 -0
  66. memorymaster-4.0.0/memorymaster/dashboard_auth.py +11 -0
  67. memorymaster-4.0.0/memorymaster/dashboard_integrity.py +11 -0
  68. memorymaster-4.0.0/memorymaster/db_merge.py +11 -0
  69. memorymaster-4.0.0/memorymaster/delta_sync.py +11 -0
  70. memorymaster-4.0.0/memorymaster/dream_bridge.py +11 -0
  71. memorymaster-4.0.0/memorymaster/embeddings.py +11 -0
  72. memorymaster-4.0.0/memorymaster/entity_extractor.py +11 -0
  73. memorymaster-4.0.0/memorymaster/entity_graph.py +11 -0
  74. memorymaster-4.0.0/memorymaster/entity_registry.py +11 -0
  75. memorymaster-4.0.0/memorymaster/federated_graphify.py +11 -0
  76. memorymaster-4.0.0/memorymaster/feedback.py +11 -0
  77. memorymaster-4.0.0/memorymaster/govern/__init__.py +7 -0
  78. memorymaster-4.0.0/memorymaster/govern/auto_resolver.py +253 -0
  79. memorymaster-4.0.0/memorymaster/govern/candidate_dedupe.py +301 -0
  80. memorymaster-4.0.0/memorymaster/govern/claim_verifier.py +169 -0
  81. memorymaster-4.0.0/memorymaster/govern/conflict_resolver.py +420 -0
  82. memorymaster-4.0.0/memorymaster/govern/contradiction_probe.py +536 -0
  83. memorymaster-4.0.0/memorymaster/govern/feedback.py +246 -0
  84. memorymaster-4.0.0/memorymaster/govern/jobs/compact_summaries.py +444 -0
  85. memorymaster-4.0.0/memorymaster/govern/jobs/compactor.py +295 -0
  86. memorymaster-4.0.0/memorymaster/govern/jobs/daydream_ingest.py +375 -0
  87. memorymaster-4.0.0/memorymaster/govern/jobs/decay.py +131 -0
  88. memorymaster-4.0.0/memorymaster/govern/jobs/dedup.py +398 -0
  89. memorymaster-4.0.0/memorymaster/govern/jobs/deterministic.py +404 -0
  90. memorymaster-4.0.0/memorymaster/govern/jobs/entity_graph_export.py +210 -0
  91. memorymaster-4.0.0/memorymaster/govern/jobs/fk_repair.py +331 -0
  92. memorymaster-4.0.0/memorymaster/govern/jobs/integrity.py +346 -0
  93. memorymaster-4.0.0/memorymaster/govern/jobs/qdrant_reconcile.py +166 -0
  94. memorymaster-4.0.0/memorymaster/govern/jobs/spool_drain.py +237 -0
  95. memorymaster-4.0.0/memorymaster/govern/jobs/staleness.py +227 -0
  96. memorymaster-4.0.0/memorymaster/govern/jobs/validator.py +252 -0
  97. memorymaster-4.0.0/memorymaster/govern/llm_budget.py +15 -0
  98. memorymaster-4.0.0/memorymaster/govern/llm_steward.py +1028 -0
  99. memorymaster-4.0.0/memorymaster/govern/review.py +121 -0
  100. memorymaster-4.0.0/memorymaster/govern/rl_trainer.py +131 -0
  101. memorymaster-4.0.0/memorymaster/govern/scheduler.py +107 -0
  102. memorymaster-4.0.0/memorymaster/govern/steward.py +1740 -0
  103. memorymaster-4.0.0/memorymaster/govern/steward_classifier.py +152 -0
  104. memorymaster-4.0.0/memorymaster/govern/steward_features.py +344 -0
  105. memorymaster-4.0.0/memorymaster/govern/verbatim_cleanup.py +206 -0
  106. memorymaster-4.0.0/memorymaster/graph_store.py +11 -0
  107. memorymaster-4.0.0/memorymaster/hook_log.py +11 -0
  108. memorymaster-4.0.0/memorymaster/jobs/__init__.py +33 -0
  109. memorymaster-4.0.0/memorymaster/key_rotator.py +11 -0
  110. memorymaster-4.0.0/memorymaster/knowledge/__init__.py +6 -0
  111. memorymaster-4.0.0/memorymaster/knowledge/closets.py +260 -0
  112. memorymaster-4.0.0/memorymaster/knowledge/daily_notes.py +191 -0
  113. memorymaster-4.0.0/memorymaster/knowledge/entity_extractor.py +767 -0
  114. memorymaster-4.0.0/memorymaster/knowledge/entity_graph.py +350 -0
  115. memorymaster-4.0.0/memorymaster/knowledge/entity_registry.py +474 -0
  116. memorymaster-4.0.0/memorymaster/knowledge/rule_export.py +161 -0
  117. memorymaster-4.0.0/memorymaster/knowledge/rule_miner.py +611 -0
  118. memorymaster-4.0.0/memorymaster/knowledge/transcript_miner.py +160 -0
  119. memorymaster-4.0.0/memorymaster/knowledge/vault_curator.py +295 -0
  120. memorymaster-4.0.0/memorymaster/knowledge/vault_exporter.py +223 -0
  121. memorymaster-4.0.0/memorymaster/knowledge/vault_linter.py +451 -0
  122. memorymaster-4.0.0/memorymaster/knowledge/vault_query_capture.py +113 -0
  123. memorymaster-4.0.0/memorymaster/knowledge/wiki_engine.py +985 -0
  124. memorymaster-4.0.0/memorymaster/knowledge/wiki_similarity.py +621 -0
  125. memorymaster-4.0.0/memorymaster/knowledge/wiki_suggest.py +276 -0
  126. memorymaster-4.0.0/memorymaster/knowledge/wiki_validate.py +304 -0
  127. memorymaster-4.0.0/memorymaster/lifecycle.py +11 -0
  128. memorymaster-4.0.0/memorymaster/llm_budget.py +11 -0
  129. memorymaster-4.0.0/memorymaster/llm_provider.py +11 -0
  130. memorymaster-4.0.0/memorymaster/llm_rerank.py +11 -0
  131. memorymaster-4.0.0/memorymaster/llm_steward.py +11 -0
  132. memorymaster-4.0.0/memorymaster/mcp_path_policy.py +11 -0
  133. memorymaster-4.0.0/memorymaster/mcp_server.py +14 -0
  134. memorymaster-4.0.0/memorymaster/mcp_usage.py +11 -0
  135. memorymaster-4.0.0/memorymaster/media_processing.py +11 -0
  136. memorymaster-4.0.0/memorymaster/media_providers.py +11 -0
  137. memorymaster-4.0.0/memorymaster/metrics_exporter.py +11 -0
  138. memorymaster-4.0.0/memorymaster/migrations/__init__.py +17 -0
  139. memorymaster-4.0.0/memorymaster/models.py +11 -0
  140. memorymaster-4.0.0/memorymaster/observability.py +11 -0
  141. memorymaster-4.0.0/memorymaster/operator.py +11 -0
  142. memorymaster-4.0.0/memorymaster/operator_queue.py +11 -0
  143. memorymaster-4.0.0/memorymaster/plugins.py +11 -0
  144. memorymaster-4.0.0/memorymaster/policy.py +11 -0
  145. memorymaster-4.0.0/memorymaster/postgres_store.py +11 -0
  146. memorymaster-4.0.0/memorymaster/qdrant_backend.py +11 -0
  147. memorymaster-4.0.0/memorymaster/qdrant_recall_fallback.py +11 -0
  148. memorymaster-4.0.0/memorymaster/qmd_bridge.py +11 -0
  149. memorymaster-4.0.0/memorymaster/query_cache.py +11 -0
  150. memorymaster-4.0.0/memorymaster/query_classifier.py +11 -0
  151. memorymaster-4.0.0/memorymaster/query_expansion.py +11 -0
  152. memorymaster-4.0.0/memorymaster/recall/__init__.py +7 -0
  153. memorymaster-4.0.0/memorymaster/recall/claim_edges.py +285 -0
  154. memorymaster-4.0.0/memorymaster/recall/context_hook.py +2185 -0
  155. memorymaster-4.0.0/memorymaster/recall/context_optimizer.py +395 -0
  156. memorymaster-4.0.0/memorymaster/recall/embeddings.py +217 -0
  157. memorymaster-4.0.0/memorymaster/recall/llm_rerank.py +201 -0
  158. memorymaster-4.0.0/memorymaster/recall/qdrant_backend.py +379 -0
  159. memorymaster-4.0.0/memorymaster/recall/qdrant_recall_fallback.py +305 -0
  160. memorymaster-4.0.0/memorymaster/recall/query_cache.py +182 -0
  161. memorymaster-4.0.0/memorymaster/recall/query_classifier.py +73 -0
  162. memorymaster-4.0.0/memorymaster/recall/query_expansion.py +184 -0
  163. memorymaster-4.0.0/memorymaster/recall/recall_fusion.py +79 -0
  164. memorymaster-4.0.0/memorymaster/recall/recall_tokenizer.py +329 -0
  165. memorymaster-4.0.0/memorymaster/recall/retrieval.py +528 -0
  166. memorymaster-4.0.0/memorymaster/recall/verbatim_recall.py +296 -0
  167. memorymaster-4.0.0/memorymaster/recall/verbatim_store.py +563 -0
  168. memorymaster-4.0.0/memorymaster/recall_fusion.py +11 -0
  169. memorymaster-4.0.0/memorymaster/recall_tokenizer.py +11 -0
  170. memorymaster-4.0.0/memorymaster/retrieval.py +11 -0
  171. memorymaster-4.0.0/memorymaster/retry.py +11 -0
  172. memorymaster-4.0.0/memorymaster/review.py +11 -0
  173. memorymaster-4.0.0/memorymaster/rl_trainer.py +11 -0
  174. memorymaster-4.0.0/memorymaster/rule_export.py +11 -0
  175. memorymaster-4.0.0/memorymaster/rule_miner.py +11 -0
  176. memorymaster-4.0.0/memorymaster/rules.py +11 -0
  177. memorymaster-4.0.0/memorymaster/scheduler.py +11 -0
  178. memorymaster-4.0.0/memorymaster/schema.py +11 -0
  179. memorymaster-4.0.0/memorymaster/schema_postgres.sql +335 -0
  180. memorymaster-4.0.0/memorymaster/scope_utils.py +11 -0
  181. memorymaster-4.0.0/memorymaster/security.py +11 -0
  182. memorymaster-4.0.0/memorymaster/service.py +11 -0
  183. memorymaster-4.0.0/memorymaster/session_tracker.py +11 -0
  184. memorymaster-4.0.0/memorymaster/setup_hooks.py +14 -0
  185. memorymaster-4.0.0/memorymaster/snapshot.py +11 -0
  186. memorymaster-4.0.0/memorymaster/spool.py +11 -0
  187. memorymaster-4.0.0/memorymaster/steward.py +11 -0
  188. memorymaster-4.0.0/memorymaster/steward_classifier.py +11 -0
  189. memorymaster-4.0.0/memorymaster/steward_features.py +11 -0
  190. memorymaster-4.0.0/memorymaster/storage.py +11 -0
  191. memorymaster-4.0.0/memorymaster/store_factory.py +11 -0
  192. memorymaster-4.0.0/memorymaster/stores/__init__.py +8 -0
  193. memorymaster-4.0.0/memorymaster/stores/_storage_lifecycle.py +643 -0
  194. memorymaster-4.0.0/memorymaster/stores/_storage_read.py +701 -0
  195. memorymaster-4.0.0/memorymaster/stores/_storage_schema.py +879 -0
  196. memorymaster-4.0.0/memorymaster/stores/_storage_shared.py +140 -0
  197. memorymaster-4.0.0/memorymaster/stores/_storage_sources.py +1006 -0
  198. memorymaster-4.0.0/memorymaster/stores/_storage_write_claims.py +374 -0
  199. memorymaster-4.0.0/memorymaster/stores/migrations/0002_miner_state.py +38 -0
  200. memorymaster-4.0.0/memorymaster/stores/migrations/0003_contradiction_verdicts.py +42 -0
  201. memorymaster-4.0.0/memorymaster/stores/migrations/0006_verbatim_session_content_index.py +59 -0
  202. memorymaster-4.0.0/memorymaster/stores/migrations/0007_rule_stats.py +54 -0
  203. memorymaster-4.0.0/memorymaster/stores/migrations/__init__.py +48 -0
  204. memorymaster-4.0.0/memorymaster/stores/migrations/runner.py +268 -0
  205. memorymaster-4.0.0/memorymaster/stores/postgres_store.py +2613 -0
  206. memorymaster-4.0.0/memorymaster/stores/snapshot.py +487 -0
  207. memorymaster-4.0.0/memorymaster/stores/storage.py +181 -0
  208. memorymaster-4.0.0/memorymaster/stores/store_factory.py +27 -0
  209. memorymaster-4.0.0/memorymaster/surfaces/__init__.py +6 -0
  210. memorymaster-4.0.0/memorymaster/surfaces/cli.py +671 -0
  211. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_basic.py +1567 -0
  212. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_curation.py +1062 -0
  213. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_integrity.py +159 -0
  214. memorymaster-4.0.0/memorymaster/surfaces/cli_helpers.py +151 -0
  215. memorymaster-4.0.0/memorymaster/surfaces/dashboard.py +1670 -0
  216. memorymaster-4.0.0/memorymaster/surfaces/dashboard_integrity.py +85 -0
  217. memorymaster-4.0.0/memorymaster/surfaces/mcp_server.py +1588 -0
  218. memorymaster-4.0.0/memorymaster/surfaces/mcp_usage.py +42 -0
  219. memorymaster-4.0.0/memorymaster/surfaces/operator.py +1453 -0
  220. memorymaster-4.0.0/memorymaster/surfaces/operator_queue.py +330 -0
  221. memorymaster-4.0.0/memorymaster/surfaces/session_tracker.py +129 -0
  222. memorymaster-4.0.0/memorymaster/surfaces/setup_hooks.py +432 -0
  223. memorymaster-4.0.0/memorymaster/transcript_miner.py +11 -0
  224. memorymaster-4.0.0/memorymaster/turn_schema.py +11 -0
  225. memorymaster-4.0.0/memorymaster/vault_bases.py +11 -0
  226. memorymaster-4.0.0/memorymaster/vault_curator.py +11 -0
  227. memorymaster-4.0.0/memorymaster/vault_exporter.py +11 -0
  228. memorymaster-4.0.0/memorymaster/vault_linter.py +11 -0
  229. memorymaster-4.0.0/memorymaster/vault_log.py +11 -0
  230. memorymaster-4.0.0/memorymaster/vault_query_capture.py +11 -0
  231. memorymaster-4.0.0/memorymaster/vault_synthesis.py +11 -0
  232. memorymaster-4.0.0/memorymaster/verbatim_cleanup.py +11 -0
  233. memorymaster-4.0.0/memorymaster/verbatim_recall.py +11 -0
  234. memorymaster-4.0.0/memorymaster/verbatim_store.py +11 -0
  235. memorymaster-4.0.0/memorymaster/webhook.py +11 -0
  236. memorymaster-4.0.0/memorymaster/wiki_engine.py +11 -0
  237. memorymaster-4.0.0/memorymaster/wiki_freshness.py +11 -0
  238. memorymaster-4.0.0/memorymaster/wiki_similarity.py +11 -0
  239. memorymaster-4.0.0/memorymaster/wiki_suggest.py +11 -0
  240. memorymaster-4.0.0/memorymaster/wiki_validate.py +11 -0
  241. memorymaster-4.0.0/memorymaster.egg-info/PKG-INFO +307 -0
  242. memorymaster-4.0.0/memorymaster.egg-info/SOURCES.txt +518 -0
  243. memorymaster-4.0.0/memorymaster.egg-info/entry_points.txt +6 -0
  244. memorymaster-4.0.0/memorymaster.egg-info/top_level.txt +1 -0
  245. memorymaster-4.0.0/pyproject.toml +86 -0
  246. memorymaster-4.0.0/tests/test_access_control.py +331 -0
  247. memorymaster-4.0.0/tests/test_action_exporters.py +68 -0
  248. memorymaster-4.0.0/tests/test_action_extractor.py +77 -0
  249. memorymaster-4.0.0/tests/test_agent_contract_roundtrip.py +267 -0
  250. memorymaster-4.0.0/tests/test_ambient_spool.py +483 -0
  251. memorymaster-4.0.0/tests/test_atlas_claim_extractor.py +61 -0
  252. memorymaster-4.0.0/tests/test_atlas_contract.py +1010 -0
  253. memorymaster-4.0.0/tests/test_atlas_source_schema.py +181 -0
  254. memorymaster-4.0.0/tests/test_auto_extractor.py +309 -0
  255. memorymaster-4.0.0/tests/test_auto_ingest_hook_citations.py +102 -0
  256. memorymaster-4.0.0/tests/test_auto_resolver.py +134 -0
  257. memorymaster-4.0.0/tests/test_auto_validate.py +197 -0
  258. memorymaster-4.0.0/tests/test_backend_parity.py +167 -0
  259. memorymaster-4.0.0/tests/test_bench_answer_prompt.py +81 -0
  260. memorymaster-4.0.0/tests/test_bm25_per_field.py +222 -0
  261. memorymaster-4.0.0/tests/test_calibration.py +134 -0
  262. memorymaster-4.0.0/tests/test_calibration_priors_applied.py +25 -0
  263. memorymaster-4.0.0/tests/test_candidate_dedupe.py +296 -0
  264. memorymaster-4.0.0/tests/test_claim_edges.py +167 -0
  265. memorymaster-4.0.0/tests/test_claim_links.py +288 -0
  266. memorymaster-4.0.0/tests/test_claim_paths.py +306 -0
  267. memorymaster-4.0.0/tests/test_claim_type_ranking.py +84 -0
  268. memorymaster-4.0.0/tests/test_cli_dry_run.py +142 -0
  269. memorymaster-4.0.0/tests/test_cli_handlers_extra.py +308 -0
  270. memorymaster-4.0.0/tests/test_cli_json_flag.py +150 -0
  271. memorymaster-4.0.0/tests/test_cli_ready.py +103 -0
  272. memorymaster-4.0.0/tests/test_cli_review_queue.py +77 -0
  273. memorymaster-4.0.0/tests/test_cli_subcommands.py +189 -0
  274. memorymaster-4.0.0/tests/test_closets.py +143 -0
  275. memorymaster-4.0.0/tests/test_closets_recall_integration.py +50 -0
  276. memorymaster-4.0.0/tests/test_compact_summaries.py +284 -0
  277. memorymaster-4.0.0/tests/test_compact_summaries_sensitivity.py +69 -0
  278. memorymaster-4.0.0/tests/test_compaction_trace.py +141 -0
  279. memorymaster-4.0.0/tests/test_compactor_artifact_order.py +40 -0
  280. memorymaster-4.0.0/tests/test_config.py +184 -0
  281. memorymaster-4.0.0/tests/test_conflict_resolver.py +457 -0
  282. memorymaster-4.0.0/tests/test_conflict_resolver_extra.py +415 -0
  283. memorymaster-4.0.0/tests/test_connection_retry.py +127 -0
  284. memorymaster-4.0.0/tests/test_context_hook.py +260 -0
  285. memorymaster-4.0.0/tests/test_context_hook_extra.py +643 -0
  286. memorymaster-4.0.0/tests/test_context_optimizer.py +200 -0
  287. memorymaster-4.0.0/tests/test_context_optimizer_provider.py +145 -0
  288. memorymaster-4.0.0/tests/test_contradiction_probe.py +388 -0
  289. memorymaster-4.0.0/tests/test_dashboard.py +344 -0
  290. memorymaster-4.0.0/tests/test_dashboard_auth.py +290 -0
  291. memorymaster-4.0.0/tests/test_dashboard_coverage.py +389 -0
  292. memorymaster-4.0.0/tests/test_dashboard_latency.py +111 -0
  293. memorymaster-4.0.0/tests/test_dashboard_lineage.py +70 -0
  294. memorymaster-4.0.0/tests/test_dashboard_review_queue.py +143 -0
  295. memorymaster-4.0.0/tests/test_daydream_ingest.py +123 -0
  296. memorymaster-4.0.0/tests/test_db_merge_audit_fixes.py +184 -0
  297. memorymaster-4.0.0/tests/test_db_merge_confidence_conflict.py +71 -0
  298. memorymaster-4.0.0/tests/test_db_merge_coverage_v2.py +260 -0
  299. memorymaster-4.0.0/tests/test_db_merge_extra.py +237 -0
  300. memorymaster-4.0.0/tests/test_decay_coverage.py +212 -0
  301. memorymaster-4.0.0/tests/test_decay_respects_pinned.py +120 -0
  302. memorymaster-4.0.0/tests/test_dedup.py +321 -0
  303. memorymaster-4.0.0/tests/test_dedup_cli.py +120 -0
  304. memorymaster-4.0.0/tests/test_dedup_conflict_disambiguation.py +52 -0
  305. memorymaster-4.0.0/tests/test_delta_sync.py +261 -0
  306. memorymaster-4.0.0/tests/test_delta_sync_extra.py +392 -0
  307. memorymaster-4.0.0/tests/test_deterministic_predicates.py +72 -0
  308. memorymaster-4.0.0/tests/test_dream_bridge_coverage_v2.py +186 -0
  309. memorymaster-4.0.0/tests/test_dream_bridge_extra.py +229 -0
  310. memorymaster-4.0.0/tests/test_dream_bridge_sensitivity.py +76 -0
  311. memorymaster-4.0.0/tests/test_dream_bridge_subject_sensitivity.py +83 -0
  312. memorymaster-4.0.0/tests/test_embeddings_coverage.py +127 -0
  313. memorymaster-4.0.0/tests/test_embeddings_degraded_signal.py +53 -0
  314. memorymaster-4.0.0/tests/test_entity_extractor.py +150 -0
  315. memorymaster-4.0.0/tests/test_entity_extractor_llm.py +296 -0
  316. memorymaster-4.0.0/tests/test_entity_graph.py +309 -0
  317. memorymaster-4.0.0/tests/test_entity_graph_export.py +147 -0
  318. memorymaster-4.0.0/tests/test_entity_new_kinds.py +241 -0
  319. memorymaster-4.0.0/tests/test_entity_regex_v3.py +71 -0
  320. memorymaster-4.0.0/tests/test_entity_registry.py +406 -0
  321. memorymaster-4.0.0/tests/test_entity_registry_extra.py +271 -0
  322. memorymaster-4.0.0/tests/test_entity_registry_merge_atomicity.py +94 -0
  323. memorymaster-4.0.0/tests/test_eval_harness.py +291 -0
  324. memorymaster-4.0.0/tests/test_events_schema.py +243 -0
  325. memorymaster-4.0.0/tests/test_extract_llm_ollama.py +140 -0
  326. memorymaster-4.0.0/tests/test_federated_graphify_mcp.py +136 -0
  327. memorymaster-4.0.0/tests/test_federated_query_safety.py +91 -0
  328. memorymaster-4.0.0/tests/test_feedback.py +278 -0
  329. memorymaster-4.0.0/tests/test_filter_bypass_hardening.py +267 -0
  330. memorymaster-4.0.0/tests/test_fk_repair.py +236 -0
  331. memorymaster-4.0.0/tests/test_floor_gate.py +90 -0
  332. memorymaster-4.0.0/tests/test_fts5_search.py +169 -0
  333. memorymaster-4.0.0/tests/test_graph_distance.py +233 -0
  334. memorymaster-4.0.0/tests/test_graph_harvest.py +348 -0
  335. memorymaster-4.0.0/tests/test_graph_store.py +322 -0
  336. memorymaster-4.0.0/tests/test_handler_regressions.py +158 -0
  337. memorymaster-4.0.0/tests/test_human_id.py +282 -0
  338. memorymaster-4.0.0/tests/test_initdb_fastpath.py +215 -0
  339. memorymaster-4.0.0/tests/test_intake_policy.py +467 -0
  340. memorymaster-4.0.0/tests/test_integration_workflows.py +534 -0
  341. memorymaster-4.0.0/tests/test_integrity_job.py +346 -0
  342. memorymaster-4.0.0/tests/test_integrity_metrics.py +298 -0
  343. memorymaster-4.0.0/tests/test_key_rotator.py +165 -0
  344. memorymaster-4.0.0/tests/test_lifecycle.py +75 -0
  345. memorymaster-4.0.0/tests/test_lifecycle_extra.py +314 -0
  346. memorymaster-4.0.0/tests/test_lifecycle_supersede_invariant.py +87 -0
  347. memorymaster-4.0.0/tests/test_llm_budget.py +233 -0
  348. memorymaster-4.0.0/tests/test_llm_concurrency_fixes.py +255 -0
  349. memorymaster-4.0.0/tests/test_llm_fallback.py +234 -0
  350. memorymaster-4.0.0/tests/test_llm_provider_claude_cli.py +186 -0
  351. memorymaster-4.0.0/tests/test_llm_provider_extra.py +716 -0
  352. memorymaster-4.0.0/tests/test_llm_provider_key_rotation.py +80 -0
  353. memorymaster-4.0.0/tests/test_llm_steward_coverage.py +113 -0
  354. memorymaster-4.0.0/tests/test_llm_steward_key_rotation.py +266 -0
  355. memorymaster-4.0.0/tests/test_llm_steward_scope.py +191 -0
  356. memorymaster-4.0.0/tests/test_mcp_filter_bypass.py +91 -0
  357. memorymaster-4.0.0/tests/test_mcp_helpers.py +412 -0
  358. memorymaster-4.0.0/tests/test_mcp_path_policy.py +206 -0
  359. memorymaster-4.0.0/tests/test_mcp_rate_limit.py +101 -0
  360. memorymaster-4.0.0/tests/test_mcp_server_security_cluster.py +187 -0
  361. memorymaster-4.0.0/tests/test_mcp_server_validation.py +49 -0
  362. memorymaster-4.0.0/tests/test_mcp_usage.py +95 -0
  363. memorymaster-4.0.0/tests/test_media_processing.py +86 -0
  364. memorymaster-4.0.0/tests/test_meta_decisions.py +125 -0
  365. memorymaster-4.0.0/tests/test_metrics_exporter.py +112 -0
  366. memorymaster-4.0.0/tests/test_migrations.py +292 -0
  367. memorymaster-4.0.0/tests/test_misc_correctness_cluster.py +92 -0
  368. memorymaster-4.0.0/tests/test_observability.py +47 -0
  369. memorymaster-4.0.0/tests/test_observability_extra.py +335 -0
  370. memorymaster-4.0.0/tests/test_obsidian_mind_patterns.py +386 -0
  371. memorymaster-4.0.0/tests/test_open_conn.py +289 -0
  372. memorymaster-4.0.0/tests/test_operator.py +379 -0
  373. memorymaster-4.0.0/tests/test_operator_queue.py +498 -0
  374. memorymaster-4.0.0/tests/test_p2_cycle_cuts.py +256 -0
  375. memorymaster-4.0.0/tests/test_plugins.py +284 -0
  376. memorymaster-4.0.0/tests/test_policy_coverage.py +56 -0
  377. memorymaster-4.0.0/tests/test_policy_mode_env.py +91 -0
  378. memorymaster-4.0.0/tests/test_postgres_parity.py +735 -0
  379. memorymaster-4.0.0/tests/test_qdrant_backend.py +320 -0
  380. memorymaster-4.0.0/tests/test_qdrant_reconcile.py +266 -0
  381. memorymaster-4.0.0/tests/test_qmd_bridge.py +188 -0
  382. memorymaster-4.0.0/tests/test_qrels_regression.py +88 -0
  383. memorymaster-4.0.0/tests/test_query_cache.py +192 -0
  384. memorymaster-4.0.0/tests/test_query_classifier.py +284 -0
  385. memorymaster-4.0.0/tests/test_query_expansion.py +264 -0
  386. memorymaster-4.0.0/tests/test_read_visibility_filter.py +156 -0
  387. memorymaster-4.0.0/tests/test_recall_analysis.py +306 -0
  388. memorymaster-4.0.0/tests/test_recall_entity_fanout.py +459 -0
  389. memorymaster-4.0.0/tests/test_recall_fusion.py +94 -0
  390. memorymaster-4.0.0/tests/test_recall_latency.py +275 -0
  391. memorymaster-4.0.0/tests/test_recall_precision_at_5.py +261 -0
  392. memorymaster-4.0.0/tests/test_recall_tokenizer.py +302 -0
  393. memorymaster-4.0.0/tests/test_recall_vector_fallback.py +306 -0
  394. memorymaster-4.0.0/tests/test_reliability_hardening.py +120 -0
  395. memorymaster-4.0.0/tests/test_resolvers_concurrent_supersede.py +148 -0
  396. memorymaster-4.0.0/tests/test_retrieval_extra.py +320 -0
  397. memorymaster-4.0.0/tests/test_retrieval_profile.py +140 -0
  398. memorymaster-4.0.0/tests/test_retrieval_profiles.py +142 -0
  399. memorymaster-4.0.0/tests/test_retrieval_rrf_tiebreaker.py +84 -0
  400. memorymaster-4.0.0/tests/test_retrieval_weights.py +69 -0
  401. memorymaster-4.0.0/tests/test_review.py +113 -0
  402. memorymaster-4.0.0/tests/test_rl_trainer.py +232 -0
  403. memorymaster-4.0.0/tests/test_ro_recall.py +258 -0
  404. memorymaster-4.0.0/tests/test_rrf_auto_gate.py +362 -0
  405. memorymaster-4.0.0/tests/test_rule_claims.py +181 -0
  406. memorymaster-4.0.0/tests/test_rule_confidence_bootstrap.py +211 -0
  407. memorymaster-4.0.0/tests/test_rule_miner.py +366 -0
  408. memorymaster-4.0.0/tests/test_rules_export.py +152 -0
  409. memorymaster-4.0.0/tests/test_scheduler.py +160 -0
  410. memorymaster-4.0.0/tests/test_schema.py +14 -0
  411. memorymaster-4.0.0/tests/test_scope_boost.py +298 -0
  412. memorymaster-4.0.0/tests/test_scope_utils.py +112 -0
  413. memorymaster-4.0.0/tests/test_security_access.py +219 -0
  414. memorymaster-4.0.0/tests/test_security_patterns.py +249 -0
  415. memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial.py +93 -0
  416. memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial_v2.py +153 -0
  417. memorymaster-4.0.0/tests/test_sensitivity_filter_t07.py +104 -0
  418. memorymaster-4.0.0/tests/test_service_coverage.py +263 -0
  419. memorymaster-4.0.0/tests/test_service_embedding_toctou.py +109 -0
  420. memorymaster-4.0.0/tests/test_session_tracker.py +337 -0
  421. memorymaster-4.0.0/tests/test_snapshot.py +302 -0
  422. memorymaster-4.0.0/tests/test_snapshot_roundtrip.py +168 -0
  423. memorymaster-4.0.0/tests/test_spool.py +302 -0
  424. memorymaster-4.0.0/tests/test_sqlite_core.py +264 -0
  425. memorymaster-4.0.0/tests/test_staleness.py +335 -0
  426. memorymaster-4.0.0/tests/test_stealth_mode.py +135 -0
  427. memorymaster-4.0.0/tests/test_steward.py +348 -0
  428. memorymaster-4.0.0/tests/test_steward_classifier.py +262 -0
  429. memorymaster-4.0.0/tests/test_steward_contradiction_phase.py +277 -0
  430. memorymaster-4.0.0/tests/test_steward_daydream_hook.py +116 -0
  431. memorymaster-4.0.0/tests/test_steward_features.py +174 -0
  432. memorymaster-4.0.0/tests/test_steward_features_v3.py +255 -0
  433. memorymaster-4.0.0/tests/test_steward_resolution_parity.py +219 -0
  434. memorymaster-4.0.0/tests/test_steward_resolvers_audit_fixes.py +242 -0
  435. memorymaster-4.0.0/tests/test_steward_rule_mining.py +202 -0
  436. memorymaster-4.0.0/tests/test_storage_concurrency.py +112 -0
  437. memorymaster-4.0.0/tests/test_storage_extra.py +154 -0
  438. memorymaster-4.0.0/tests/test_storage_internals_audit.py +124 -0
  439. memorymaster-4.0.0/tests/test_storage_parity.py +287 -0
  440. memorymaster-4.0.0/tests/test_store_factory.py +35 -0
  441. memorymaster-4.0.0/tests/test_tenant_isolation.py +167 -0
  442. memorymaster-4.0.0/tests/test_transcript_miner_sensitivity.py +56 -0
  443. memorymaster-4.0.0/tests/test_turn_schema.py +92 -0
  444. memorymaster-4.0.0/tests/test_two_pass_recall.py +86 -0
  445. memorymaster-4.0.0/tests/test_v311_fixes.py +172 -0
  446. memorymaster-4.0.0/tests/test_v313_e2e.py +265 -0
  447. memorymaster-4.0.0/tests/test_v313_run_cycle_dedupe.py +176 -0
  448. memorymaster-4.0.0/tests/test_v390_e2e.py +151 -0
  449. memorymaster-4.0.0/tests/test_v391_strict_warnings.py +73 -0
  450. memorymaster-4.0.0/tests/test_vault_exporter.py +381 -0
  451. memorymaster-4.0.0/tests/test_vault_linter_extra.py +298 -0
  452. memorymaster-4.0.0/tests/test_vault_linter_orphan.py +91 -0
  453. memorymaster-4.0.0/tests/test_vault_linter_weak_link.py +43 -0
  454. memorymaster-4.0.0/tests/test_vault_query_capture_scope.py +38 -0
  455. memorymaster-4.0.0/tests/test_vector_search.py +367 -0
  456. memorymaster-4.0.0/tests/test_verbatim_cleanup.py +232 -0
  457. memorymaster-4.0.0/tests/test_verbatim_dedup.py +228 -0
  458. memorymaster-4.0.0/tests/test_verbatim_perf_index.py +234 -0
  459. memorymaster-4.0.0/tests/test_verbatim_recall.py +321 -0
  460. memorymaster-4.0.0/tests/test_verbatim_store.py +67 -0
  461. memorymaster-4.0.0/tests/test_verbatim_store_pragmas.py +83 -0
  462. memorymaster-4.0.0/tests/test_verbatim_store_qdrant.py +148 -0
  463. memorymaster-4.0.0/tests/test_webhook.py +167 -0
  464. memorymaster-4.0.0/tests/test_webhook_hmac.py +216 -0
  465. memorymaster-4.0.0/tests/test_whatsapp_importer.py +106 -0
  466. memorymaster-4.0.0/tests/test_wiki_autopromote.py +101 -0
  467. memorymaster-4.0.0/tests/test_wiki_backfill_bindings_backend.py +94 -0
  468. memorymaster-4.0.0/tests/test_wiki_binding.py +182 -0
  469. memorymaster-4.0.0/tests/test_wiki_engine_absorb_fixes.py +187 -0
  470. memorymaster-4.0.0/tests/test_wiki_engine_extra.py +410 -0
  471. memorymaster-4.0.0/tests/test_wiki_engine_idempotency.py +170 -0
  472. memorymaster-4.0.0/tests/test_wiki_explored_and_contradictions.py +229 -0
  473. memorymaster-4.0.0/tests/test_wiki_freshness.py +284 -0
  474. memorymaster-4.0.0/tests/test_wiki_similarity_multiscope.py +272 -0
  475. memorymaster-4.0.0/tests/test_wiki_suggest.py +124 -0
  476. memorymaster-4.0.0/tests/test_wiki_validate_cli.py +193 -0
  477. memorymaster-4.0.0/tests/test_wiki_validate_desc_bound.py +30 -0
  478. memorymaster-3.26.1/PKG-INFO +0 -250
  479. memorymaster-3.26.1/README.md +0 -204
  480. memorymaster-3.26.1/artifacts/bm25-per-field-eval-harness.py +0 -309
  481. memorymaster-3.26.1/benchmarks/longmemeval_runner.py +0 -290
  482. memorymaster-3.26.1/benchmarks/longmemeval_vector_runner.py +0 -254
  483. memorymaster-3.26.1/benchmarks/perf_smoke.py +0 -338
  484. memorymaster-3.26.1/memorymaster/__init__.py +0 -5
  485. memorymaster-3.26.1/memorymaster/__main__.py +0 -3
  486. memorymaster-3.26.1/memorymaster/_storage_lifecycle.py +0 -624
  487. memorymaster-3.26.1/memorymaster/_storage_read.py +0 -659
  488. memorymaster-3.26.1/memorymaster/_storage_schema.py +0 -798
  489. memorymaster-3.26.1/memorymaster/_storage_shared.py +0 -41
  490. memorymaster-3.26.1/memorymaster/_storage_sources.py +0 -995
  491. memorymaster-3.26.1/memorymaster/_storage_write_claims.py +0 -374
  492. memorymaster-3.26.1/memorymaster/access_control.py +0 -126
  493. memorymaster-3.26.1/memorymaster/action_extractor.py +0 -212
  494. memorymaster-3.26.1/memorymaster/atlas_claim_extractor.py +0 -162
  495. memorymaster-3.26.1/memorymaster/auto_resolver.py +0 -226
  496. memorymaster-3.26.1/memorymaster/candidate_dedupe.py +0 -288
  497. memorymaster-3.26.1/memorymaster/claim_edges.py +0 -278
  498. memorymaster-3.26.1/memorymaster/claim_verifier.py +0 -169
  499. memorymaster-3.26.1/memorymaster/cli.py +0 -621
  500. memorymaster-3.26.1/memorymaster/cli_handlers_basic.py +0 -1473
  501. memorymaster-3.26.1/memorymaster/cli_handlers_curation.py +0 -1018
  502. memorymaster-3.26.1/memorymaster/cli_helpers.py +0 -151
  503. memorymaster-3.26.1/memorymaster/closets.py +0 -253
  504. memorymaster-3.26.1/memorymaster/config.py +0 -473
  505. memorymaster-3.26.1/memorymaster/config_templates/codex-agents-md-append.md +0 -35
  506. memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -259
  507. memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +0 -28
  508. memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -34
  509. memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -68
  510. memorymaster-3.26.1/memorymaster/conflict_resolver.py +0 -413
  511. memorymaster-3.26.1/memorymaster/context_hook.py +0 -2004
  512. memorymaster-3.26.1/memorymaster/context_optimizer.py +0 -395
  513. memorymaster-3.26.1/memorymaster/contradiction_probe.py +0 -520
  514. memorymaster-3.26.1/memorymaster/daily_notes.py +0 -186
  515. memorymaster-3.26.1/memorymaster/dashboard.py +0 -1538
  516. memorymaster-3.26.1/memorymaster/db_merge.py +0 -278
  517. memorymaster-3.26.1/memorymaster/delta_sync.py +0 -172
  518. memorymaster-3.26.1/memorymaster/dream_bridge.py +0 -704
  519. memorymaster-3.26.1/memorymaster/embeddings.py +0 -199
  520. memorymaster-3.26.1/memorymaster/entity_extractor.py +0 -767
  521. memorymaster-3.26.1/memorymaster/entity_graph.py +0 -313
  522. memorymaster-3.26.1/memorymaster/entity_registry.py +0 -456
  523. memorymaster-3.26.1/memorymaster/federated_graphify.py +0 -154
  524. memorymaster-3.26.1/memorymaster/feedback.py +0 -247
  525. memorymaster-3.26.1/memorymaster/hook_log.py +0 -65
  526. memorymaster-3.26.1/memorymaster/jobs/compact_summaries.py +0 -442
  527. memorymaster-3.26.1/memorymaster/jobs/compactor.py +0 -295
  528. memorymaster-3.26.1/memorymaster/jobs/daydream_ingest.py +0 -375
  529. memorymaster-3.26.1/memorymaster/jobs/decay.py +0 -131
  530. memorymaster-3.26.1/memorymaster/jobs/dedup.py +0 -398
  531. memorymaster-3.26.1/memorymaster/jobs/deterministic.py +0 -376
  532. memorymaster-3.26.1/memorymaster/jobs/entity_graph_export.py +0 -210
  533. memorymaster-3.26.1/memorymaster/jobs/staleness.py +0 -227
  534. memorymaster-3.26.1/memorymaster/jobs/validator.py +0 -233
  535. memorymaster-3.26.1/memorymaster/key_rotator.py +0 -176
  536. memorymaster-3.26.1/memorymaster/lifecycle.py +0 -72
  537. memorymaster-3.26.1/memorymaster/llm_budget.py +0 -190
  538. memorymaster-3.26.1/memorymaster/llm_provider.py +0 -622
  539. memorymaster-3.26.1/memorymaster/llm_rerank.py +0 -216
  540. memorymaster-3.26.1/memorymaster/llm_steward.py +0 -942
  541. memorymaster-3.26.1/memorymaster/mcp_server.py +0 -1499
  542. memorymaster-3.26.1/memorymaster/mcp_usage.py +0 -43
  543. memorymaster-3.26.1/memorymaster/media_processing.py +0 -199
  544. memorymaster-3.26.1/memorymaster/media_providers.py +0 -256
  545. memorymaster-3.26.1/memorymaster/migrations/0002_miner_state.py +0 -38
  546. memorymaster-3.26.1/memorymaster/migrations/0003_contradiction_verdicts.py +0 -42
  547. memorymaster-3.26.1/memorymaster/migrations/__init__.py +0 -41
  548. memorymaster-3.26.1/memorymaster/migrations/runner.py +0 -268
  549. memorymaster-3.26.1/memorymaster/observability.py +0 -183
  550. memorymaster-3.26.1/memorymaster/operator.py +0 -1453
  551. memorymaster-3.26.1/memorymaster/operator_queue.py +0 -332
  552. memorymaster-3.26.1/memorymaster/plugins.py +0 -123
  553. memorymaster-3.26.1/memorymaster/policy.py +0 -133
  554. memorymaster-3.26.1/memorymaster/postgres_store.py +0 -2600
  555. memorymaster-3.26.1/memorymaster/qdrant_backend.py +0 -327
  556. memorymaster-3.26.1/memorymaster/qdrant_recall_fallback.py +0 -305
  557. memorymaster-3.26.1/memorymaster/qmd_bridge.py +0 -132
  558. memorymaster-3.26.1/memorymaster/query_cache.py +0 -184
  559. memorymaster-3.26.1/memorymaster/query_classifier.py +0 -69
  560. memorymaster-3.26.1/memorymaster/query_expansion.py +0 -184
  561. memorymaster-3.26.1/memorymaster/recall_fusion.py +0 -79
  562. memorymaster-3.26.1/memorymaster/recall_tokenizer.py +0 -305
  563. memorymaster-3.26.1/memorymaster/retrieval.py +0 -435
  564. memorymaster-3.26.1/memorymaster/review.py +0 -121
  565. memorymaster-3.26.1/memorymaster/rl_trainer.py +0 -132
  566. memorymaster-3.26.1/memorymaster/rule_miner.py +0 -483
  567. memorymaster-3.26.1/memorymaster/scheduler.py +0 -107
  568. memorymaster-3.26.1/memorymaster/schema.py +0 -11
  569. memorymaster-3.26.1/memorymaster/schema_postgres.sql +0 -314
  570. memorymaster-3.26.1/memorymaster/security.py +0 -389
  571. memorymaster-3.26.1/memorymaster/service.py +0 -1491
  572. memorymaster-3.26.1/memorymaster/session_tracker.py +0 -129
  573. memorymaster-3.26.1/memorymaster/setup_hooks.py +0 -404
  574. memorymaster-3.26.1/memorymaster/skill_evolver.py +0 -161
  575. memorymaster-3.26.1/memorymaster/snapshot.py +0 -403
  576. memorymaster-3.26.1/memorymaster/steward.py +0 -1726
  577. memorymaster-3.26.1/memorymaster/steward_classifier.py +0 -152
  578. memorymaster-3.26.1/memorymaster/steward_features.py +0 -344
  579. memorymaster-3.26.1/memorymaster/storage.py +0 -97
  580. memorymaster-3.26.1/memorymaster/store_factory.py +0 -19
  581. memorymaster-3.26.1/memorymaster/transcript_miner.py +0 -156
  582. memorymaster-3.26.1/memorymaster/vault_curator.py +0 -295
  583. memorymaster-3.26.1/memorymaster/vault_exporter.py +0 -223
  584. memorymaster-3.26.1/memorymaster/vault_linter.py +0 -453
  585. memorymaster-3.26.1/memorymaster/vault_query_capture.py +0 -107
  586. memorymaster-3.26.1/memorymaster/verbatim_cleanup.py +0 -184
  587. memorymaster-3.26.1/memorymaster/verbatim_recall.py +0 -296
  588. memorymaster-3.26.1/memorymaster/verbatim_store.py +0 -454
  589. memorymaster-3.26.1/memorymaster/webhook.py +0 -161
  590. memorymaster-3.26.1/memorymaster/wiki_engine.py +0 -901
  591. memorymaster-3.26.1/memorymaster/wiki_similarity.py +0 -621
  592. memorymaster-3.26.1/memorymaster/wiki_suggest.py +0 -270
  593. memorymaster-3.26.1/memorymaster/wiki_validate.py +0 -299
  594. memorymaster-3.26.1/memorymaster.egg-info/PKG-INFO +0 -250
  595. memorymaster-3.26.1/memorymaster.egg-info/SOURCES.txt +0 -411
  596. memorymaster-3.26.1/memorymaster.egg-info/entry_points.txt +0 -6
  597. memorymaster-3.26.1/memorymaster.egg-info/top_level.txt +0 -10
  598. memorymaster-3.26.1/pyproject.toml +0 -80
  599. memorymaster-3.26.1/scripts/agg_recall_latency.py +0 -184
  600. memorymaster-3.26.1/scripts/alert_operator_metrics.py +0 -477
  601. memorymaster-3.26.1/scripts/audit_dedupe_precision.py +0 -121
  602. memorymaster-3.26.1/scripts/autoresearch_daemon.py +0 -248
  603. memorymaster-3.26.1/scripts/backfill_entity_extraction.py +0 -327
  604. memorymaster-3.26.1/scripts/backfill_graph_store.py +0 -264
  605. memorymaster-3.26.1/scripts/backfill_stop_hook_citations.py +0 -137
  606. memorymaster-3.26.1/scripts/backtest_steward_classifier.py +0 -757
  607. memorymaster-3.26.1/scripts/build_steward_training_set.py +0 -119
  608. memorymaster-3.26.1/scripts/check_hook_template_drift.py +0 -143
  609. memorymaster-3.26.1/scripts/claude_to_turns.py +0 -416
  610. memorymaster-3.26.1/scripts/codex_live_to_turns.py +0 -460
  611. memorymaster-3.26.1/scripts/compaction_edge_cases.py +0 -294
  612. memorymaster-3.26.1/scripts/compaction_trace_report.py +0 -167
  613. memorymaster-3.26.1/scripts/compaction_trace_validate.py +0 -511
  614. memorymaster-3.26.1/scripts/confusion_matrix_eval.py +0 -177
  615. memorymaster-3.26.1/scripts/conversation_importer.py +0 -194
  616. memorymaster-3.26.1/scripts/conversation_to_turns.py +0 -532
  617. memorymaster-3.26.1/scripts/e2e_operator.py +0 -372
  618. memorymaster-3.26.1/scripts/email_live_to_turns.py +0 -376
  619. memorymaster-3.26.1/scripts/eval_bm25_sweep.py +0 -432
  620. memorymaster-3.26.1/scripts/eval_classify_f1.py +0 -226
  621. memorymaster-3.26.1/scripts/eval_memorymaster.py +0 -416
  622. memorymaster-3.26.1/scripts/eval_recall_precision_at_5.py +0 -468
  623. memorymaster-3.26.1/scripts/eval_recall_quality.py +0 -132
  624. memorymaster-3.26.1/scripts/eval_steward_pareto.py +0 -273
  625. memorymaster-3.26.1/scripts/eval_verbatim_recall.py +0 -216
  626. memorymaster-3.26.1/scripts/expand_recall_eval.py +0 -404
  627. memorymaster-3.26.1/scripts/generate_drill_signoff.py +0 -279
  628. memorymaster-3.26.1/scripts/git_to_turns.py +0 -407
  629. memorymaster-3.26.1/scripts/github_live_to_turns.py +0 -605
  630. memorymaster-3.26.1/scripts/gitnexus_to_claims.py +0 -180
  631. memorymaster-3.26.1/scripts/grid_recall_weights.py +0 -191
  632. memorymaster-3.26.1/scripts/index_claims_to_qdrant.py +0 -315
  633. memorymaster-3.26.1/scripts/ingest_planning_docs.py +0 -170
  634. memorymaster-3.26.1/scripts/jira_live_to_turns.py +0 -482
  635. memorymaster-3.26.1/scripts/label_prompts_with_judge.py +0 -211
  636. memorymaster-3.26.1/scripts/llm_benchmark.py +0 -264
  637. memorymaster-3.26.1/scripts/measure_dedupe_thresholds.py +0 -114
  638. memorymaster-3.26.1/scripts/merge_scope_variants.py +0 -216
  639. memorymaster-3.26.1/scripts/messages_to_turns.py +0 -445
  640. memorymaster-3.26.1/scripts/operator_metrics.py +0 -248
  641. memorymaster-3.26.1/scripts/precompute_candidates.py +0 -94
  642. memorymaster-3.26.1/scripts/recurring_incident_drill.py +0 -306
  643. memorymaster-3.26.1/scripts/release_readiness.py +0 -424
  644. memorymaster-3.26.1/scripts/run_codex_autologger.py +0 -94
  645. memorymaster-3.26.1/scripts/run_incident_drill.py +0 -657
  646. memorymaster-3.26.1/scripts/scheduled_ingest.py +0 -595
  647. memorymaster-3.26.1/scripts/setup-hooks.py +0 -10
  648. memorymaster-3.26.1/scripts/slack_live_to_turns.py +0 -475
  649. memorymaster-3.26.1/scripts/sync_hook_templates.py +0 -117
  650. memorymaster-3.26.1/scripts/tickets_to_turns.py +0 -373
  651. memorymaster-3.26.1/scripts/train_steward_classifier.py +0 -457
  652. memorymaster-3.26.1/scripts/webhook_to_turns.py +0 -452
  653. memorymaster-3.26.1/tests/bench_longmemeval.py +0 -1022
  654. memorymaster-3.26.1/tests/conftest.py +0 -103
  655. memorymaster-3.26.1/tests/integration/test_extract_llm_ollama_live.py +0 -49
  656. memorymaster-3.26.1/tests/test_access_control.py +0 -331
  657. memorymaster-3.26.1/tests/test_action_exporters.py +0 -68
  658. memorymaster-3.26.1/tests/test_action_extractor.py +0 -77
  659. memorymaster-3.26.1/tests/test_atlas_claim_extractor.py +0 -61
  660. memorymaster-3.26.1/tests/test_atlas_contract.py +0 -1010
  661. memorymaster-3.26.1/tests/test_atlas_source_schema.py +0 -181
  662. memorymaster-3.26.1/tests/test_auto_extractor.py +0 -309
  663. memorymaster-3.26.1/tests/test_auto_ingest_hook_citations.py +0 -102
  664. memorymaster-3.26.1/tests/test_auto_resolver.py +0 -134
  665. memorymaster-3.26.1/tests/test_auto_validate.py +0 -197
  666. memorymaster-3.26.1/tests/test_backend_parity.py +0 -167
  667. memorymaster-3.26.1/tests/test_bench_answer_prompt.py +0 -75
  668. memorymaster-3.26.1/tests/test_bm25_per_field.py +0 -222
  669. memorymaster-3.26.1/tests/test_calibration.py +0 -134
  670. memorymaster-3.26.1/tests/test_calibration_priors_applied.py +0 -20
  671. memorymaster-3.26.1/tests/test_candidate_dedupe.py +0 -296
  672. memorymaster-3.26.1/tests/test_claim_edges.py +0 -167
  673. memorymaster-3.26.1/tests/test_claim_links.py +0 -288
  674. memorymaster-3.26.1/tests/test_claim_type_ranking.py +0 -84
  675. memorymaster-3.26.1/tests/test_cli_dry_run.py +0 -142
  676. memorymaster-3.26.1/tests/test_cli_handlers_extra.py +0 -308
  677. memorymaster-3.26.1/tests/test_cli_json_flag.py +0 -150
  678. memorymaster-3.26.1/tests/test_cli_ready.py +0 -103
  679. memorymaster-3.26.1/tests/test_cli_review_queue.py +0 -77
  680. memorymaster-3.26.1/tests/test_cli_subcommands.py +0 -189
  681. memorymaster-3.26.1/tests/test_closets.py +0 -143
  682. memorymaster-3.26.1/tests/test_closets_recall_integration.py +0 -50
  683. memorymaster-3.26.1/tests/test_compact_summaries.py +0 -284
  684. memorymaster-3.26.1/tests/test_compact_summaries_sensitivity.py +0 -69
  685. memorymaster-3.26.1/tests/test_compaction_trace.py +0 -141
  686. memorymaster-3.26.1/tests/test_compactor_artifact_order.py +0 -40
  687. memorymaster-3.26.1/tests/test_config.py +0 -184
  688. memorymaster-3.26.1/tests/test_conflict_resolver.py +0 -457
  689. memorymaster-3.26.1/tests/test_conflict_resolver_extra.py +0 -415
  690. memorymaster-3.26.1/tests/test_connection_retry.py +0 -127
  691. memorymaster-3.26.1/tests/test_context_hook.py +0 -260
  692. memorymaster-3.26.1/tests/test_context_hook_extra.py +0 -643
  693. memorymaster-3.26.1/tests/test_context_optimizer.py +0 -200
  694. memorymaster-3.26.1/tests/test_context_optimizer_provider.py +0 -145
  695. memorymaster-3.26.1/tests/test_contradiction_probe.py +0 -313
  696. memorymaster-3.26.1/tests/test_dashboard.py +0 -344
  697. memorymaster-3.26.1/tests/test_dashboard_auth.py +0 -290
  698. memorymaster-3.26.1/tests/test_dashboard_coverage.py +0 -321
  699. memorymaster-3.26.1/tests/test_dashboard_latency.py +0 -111
  700. memorymaster-3.26.1/tests/test_dashboard_lineage.py +0 -70
  701. memorymaster-3.26.1/tests/test_dashboard_review_queue.py +0 -143
  702. memorymaster-3.26.1/tests/test_daydream_ingest.py +0 -123
  703. memorymaster-3.26.1/tests/test_db_merge_confidence_conflict.py +0 -71
  704. memorymaster-3.26.1/tests/test_db_merge_coverage_v2.py +0 -260
  705. memorymaster-3.26.1/tests/test_db_merge_extra.py +0 -237
  706. memorymaster-3.26.1/tests/test_decay_coverage.py +0 -212
  707. memorymaster-3.26.1/tests/test_decay_respects_pinned.py +0 -120
  708. memorymaster-3.26.1/tests/test_dedup.py +0 -321
  709. memorymaster-3.26.1/tests/test_dedup_cli.py +0 -120
  710. memorymaster-3.26.1/tests/test_dedup_conflict_disambiguation.py +0 -52
  711. memorymaster-3.26.1/tests/test_delta_sync.py +0 -261
  712. memorymaster-3.26.1/tests/test_delta_sync_extra.py +0 -392
  713. memorymaster-3.26.1/tests/test_deterministic_predicates.py +0 -72
  714. memorymaster-3.26.1/tests/test_dream_bridge_coverage_v2.py +0 -186
  715. memorymaster-3.26.1/tests/test_dream_bridge_extra.py +0 -229
  716. memorymaster-3.26.1/tests/test_dream_bridge_sensitivity.py +0 -76
  717. memorymaster-3.26.1/tests/test_embeddings_coverage.py +0 -127
  718. memorymaster-3.26.1/tests/test_entity_extractor.py +0 -150
  719. memorymaster-3.26.1/tests/test_entity_extractor_llm.py +0 -296
  720. memorymaster-3.26.1/tests/test_entity_graph.py +0 -209
  721. memorymaster-3.26.1/tests/test_entity_graph_export.py +0 -147
  722. memorymaster-3.26.1/tests/test_entity_new_kinds.py +0 -241
  723. memorymaster-3.26.1/tests/test_entity_regex_v3.py +0 -71
  724. memorymaster-3.26.1/tests/test_entity_registry.py +0 -406
  725. memorymaster-3.26.1/tests/test_entity_registry_extra.py +0 -271
  726. memorymaster-3.26.1/tests/test_eval_harness.py +0 -291
  727. memorymaster-3.26.1/tests/test_events_schema.py +0 -243
  728. memorymaster-3.26.1/tests/test_extract_llm_ollama.py +0 -140
  729. memorymaster-3.26.1/tests/test_federated_graphify_mcp.py +0 -136
  730. memorymaster-3.26.1/tests/test_federated_query_safety.py +0 -91
  731. memorymaster-3.26.1/tests/test_feedback.py +0 -278
  732. memorymaster-3.26.1/tests/test_floor_gate.py +0 -90
  733. memorymaster-3.26.1/tests/test_fts5_search.py +0 -169
  734. memorymaster-3.26.1/tests/test_graph_distance.py +0 -233
  735. memorymaster-3.26.1/tests/test_graph_store.py +0 -322
  736. memorymaster-3.26.1/tests/test_handler_regressions.py +0 -158
  737. memorymaster-3.26.1/tests/test_human_id.py +0 -282
  738. memorymaster-3.26.1/tests/test_integration_workflows.py +0 -534
  739. memorymaster-3.26.1/tests/test_key_rotator.py +0 -159
  740. memorymaster-3.26.1/tests/test_lifecycle.py +0 -75
  741. memorymaster-3.26.1/tests/test_lifecycle_extra.py +0 -314
  742. memorymaster-3.26.1/tests/test_lifecycle_supersede_invariant.py +0 -87
  743. memorymaster-3.26.1/tests/test_llm_budget.py +0 -232
  744. memorymaster-3.26.1/tests/test_llm_fallback.py +0 -219
  745. memorymaster-3.26.1/tests/test_llm_provider_claude_cli.py +0 -186
  746. memorymaster-3.26.1/tests/test_llm_provider_extra.py +0 -673
  747. memorymaster-3.26.1/tests/test_llm_provider_key_rotation.py +0 -80
  748. memorymaster-3.26.1/tests/test_llm_steward_coverage.py +0 -112
  749. memorymaster-3.26.1/tests/test_llm_steward_key_rotation.py +0 -266
  750. memorymaster-3.26.1/tests/test_mcp_filter_bypass.py +0 -91
  751. memorymaster-3.26.1/tests/test_mcp_helpers.py +0 -412
  752. memorymaster-3.26.1/tests/test_mcp_path_policy.py +0 -206
  753. memorymaster-3.26.1/tests/test_mcp_rate_limit.py +0 -101
  754. memorymaster-3.26.1/tests/test_mcp_server_validation.py +0 -49
  755. memorymaster-3.26.1/tests/test_mcp_usage.py +0 -95
  756. memorymaster-3.26.1/tests/test_media_processing.py +0 -86
  757. memorymaster-3.26.1/tests/test_meta_decisions.py +0 -125
  758. memorymaster-3.26.1/tests/test_metrics_exporter.py +0 -112
  759. memorymaster-3.26.1/tests/test_migrations.py +0 -292
  760. memorymaster-3.26.1/tests/test_observability.py +0 -47
  761. memorymaster-3.26.1/tests/test_observability_extra.py +0 -335
  762. memorymaster-3.26.1/tests/test_obsidian_mind_patterns.py +0 -386
  763. memorymaster-3.26.1/tests/test_operator.py +0 -379
  764. memorymaster-3.26.1/tests/test_operator_queue.py +0 -498
  765. memorymaster-3.26.1/tests/test_plugins.py +0 -284
  766. memorymaster-3.26.1/tests/test_policy_coverage.py +0 -56
  767. memorymaster-3.26.1/tests/test_policy_mode_env.py +0 -91
  768. memorymaster-3.26.1/tests/test_postgres_parity.py +0 -625
  769. memorymaster-3.26.1/tests/test_qdrant_backend.py +0 -320
  770. memorymaster-3.26.1/tests/test_qmd_bridge.py +0 -188
  771. memorymaster-3.26.1/tests/test_qrels_regression.py +0 -88
  772. memorymaster-3.26.1/tests/test_query_cache.py +0 -192
  773. memorymaster-3.26.1/tests/test_query_classifier.py +0 -284
  774. memorymaster-3.26.1/tests/test_query_expansion.py +0 -264
  775. memorymaster-3.26.1/tests/test_recall_entity_fanout.py +0 -459
  776. memorymaster-3.26.1/tests/test_recall_fusion.py +0 -94
  777. memorymaster-3.26.1/tests/test_recall_latency.py +0 -275
  778. memorymaster-3.26.1/tests/test_recall_precision_at_5.py +0 -261
  779. memorymaster-3.26.1/tests/test_recall_tokenizer.py +0 -234
  780. memorymaster-3.26.1/tests/test_recall_vector_fallback.py +0 -306
  781. memorymaster-3.26.1/tests/test_reliability_hardening.py +0 -120
  782. memorymaster-3.26.1/tests/test_resolvers_concurrent_supersede.py +0 -148
  783. memorymaster-3.26.1/tests/test_retrieval_extra.py +0 -320
  784. memorymaster-3.26.1/tests/test_retrieval_profile.py +0 -120
  785. memorymaster-3.26.1/tests/test_retrieval_profiles.py +0 -142
  786. memorymaster-3.26.1/tests/test_retrieval_rrf_tiebreaker.py +0 -84
  787. memorymaster-3.26.1/tests/test_retrieval_weights.py +0 -69
  788. memorymaster-3.26.1/tests/test_review.py +0 -113
  789. memorymaster-3.26.1/tests/test_rl_trainer.py +0 -232
  790. memorymaster-3.26.1/tests/test_rrf_auto_gate.py +0 -223
  791. memorymaster-3.26.1/tests/test_rule_claims.py +0 -181
  792. memorymaster-3.26.1/tests/test_rule_miner.py +0 -365
  793. memorymaster-3.26.1/tests/test_scheduler.py +0 -160
  794. memorymaster-3.26.1/tests/test_schema.py +0 -14
  795. memorymaster-3.26.1/tests/test_scope_boost.py +0 -298
  796. memorymaster-3.26.1/tests/test_scope_utils.py +0 -112
  797. memorymaster-3.26.1/tests/test_security_access.py +0 -219
  798. memorymaster-3.26.1/tests/test_security_patterns.py +0 -249
  799. memorymaster-3.26.1/tests/test_sensitivity_filter_adversarial.py +0 -93
  800. memorymaster-3.26.1/tests/test_sensitivity_filter_adversarial_v2.py +0 -153
  801. memorymaster-3.26.1/tests/test_sensitivity_filter_t07.py +0 -104
  802. memorymaster-3.26.1/tests/test_service_coverage.py +0 -263
  803. memorymaster-3.26.1/tests/test_session_tracker.py +0 -337
  804. memorymaster-3.26.1/tests/test_snapshot.py +0 -302
  805. memorymaster-3.26.1/tests/test_snapshot_roundtrip.py +0 -168
  806. memorymaster-3.26.1/tests/test_sqlite_core.py +0 -264
  807. memorymaster-3.26.1/tests/test_staleness.py +0 -335
  808. memorymaster-3.26.1/tests/test_stealth_mode.py +0 -135
  809. memorymaster-3.26.1/tests/test_steward.py +0 -348
  810. memorymaster-3.26.1/tests/test_steward_classifier.py +0 -262
  811. memorymaster-3.26.1/tests/test_steward_contradiction_phase.py +0 -251
  812. memorymaster-3.26.1/tests/test_steward_daydream_hook.py +0 -116
  813. memorymaster-3.26.1/tests/test_steward_features.py +0 -174
  814. memorymaster-3.26.1/tests/test_steward_features_v3.py +0 -255
  815. memorymaster-3.26.1/tests/test_steward_resolution_parity.py +0 -219
  816. memorymaster-3.26.1/tests/test_storage_extra.py +0 -154
  817. memorymaster-3.26.1/tests/test_storage_parity.py +0 -287
  818. memorymaster-3.26.1/tests/test_store_factory.py +0 -35
  819. memorymaster-3.26.1/tests/test_tenant_isolation.py +0 -167
  820. memorymaster-3.26.1/tests/test_turn_schema.py +0 -92
  821. memorymaster-3.26.1/tests/test_two_pass_recall.py +0 -86
  822. memorymaster-3.26.1/tests/test_v311_fixes.py +0 -172
  823. memorymaster-3.26.1/tests/test_v313_e2e.py +0 -265
  824. memorymaster-3.26.1/tests/test_v313_run_cycle_dedupe.py +0 -176
  825. memorymaster-3.26.1/tests/test_v390_e2e.py +0 -151
  826. memorymaster-3.26.1/tests/test_v391_strict_warnings.py +0 -73
  827. memorymaster-3.26.1/tests/test_vault_exporter.py +0 -381
  828. memorymaster-3.26.1/tests/test_vault_linter_extra.py +0 -290
  829. memorymaster-3.26.1/tests/test_vault_linter_orphan.py +0 -91
  830. memorymaster-3.26.1/tests/test_vector_search.py +0 -367
  831. memorymaster-3.26.1/tests/test_verbatim_cleanup.py +0 -232
  832. memorymaster-3.26.1/tests/test_verbatim_dedup.py +0 -228
  833. memorymaster-3.26.1/tests/test_verbatim_recall.py +0 -321
  834. memorymaster-3.26.1/tests/test_verbatim_store.py +0 -67
  835. memorymaster-3.26.1/tests/test_verbatim_store_qdrant.py +0 -148
  836. memorymaster-3.26.1/tests/test_webhook.py +0 -167
  837. memorymaster-3.26.1/tests/test_webhook_hmac.py +0 -216
  838. memorymaster-3.26.1/tests/test_whatsapp_importer.py +0 -106
  839. memorymaster-3.26.1/tests/test_wiki_autopromote.py +0 -101
  840. memorymaster-3.26.1/tests/test_wiki_binding.py +0 -182
  841. memorymaster-3.26.1/tests/test_wiki_engine_extra.py +0 -410
  842. memorymaster-3.26.1/tests/test_wiki_engine_idempotency.py +0 -170
  843. memorymaster-3.26.1/tests/test_wiki_explored_and_contradictions.py +0 -229
  844. memorymaster-3.26.1/tests/test_wiki_freshness.py +0 -284
  845. memorymaster-3.26.1/tests/test_wiki_similarity_multiscope.py +0 -272
  846. memorymaster-3.26.1/tests/test_wiki_suggest.py +0 -124
  847. memorymaster-3.26.1/tests/test_wiki_validate_cli.py +0 -193
  848. {memorymaster-3.26.1 → memorymaster-4.0.0}/LICENSE +0 -0
  849. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/action_exporters.py +0 -0
  850. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/atlas_contract.py +0 -0
  851. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/__init__.py +0 -0
  852. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/whatsapp.py +0 -0
  853. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/claude-md-append.md +0 -0
  854. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
  855. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
  856. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
  857. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
  858. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/models.py +0 -0
  859. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/retry.py +0 -0
  860. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/scope_utils.py +0 -0
  861. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/__init__.py +0 -0
  862. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/calibration.py +0 -0
  863. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/extractor.py +0 -0
  864. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/auto_extractor.py +0 -0
  865. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/rules.py +0 -0
  866. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_bases.py +0 -0
  867. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_log.py +0 -0
  868. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_synthesis.py +0 -0
  869. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/wiki_freshness.py +0 -0
  870. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/recall}/graph_store.py +0 -0
  871. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/schema.sql +0 -0
  872. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0001_initial.py +0 -0
  873. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0004_query_cache.py +0 -0
  874. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/dashboard_auth.py +0 -0
  875. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/mcp_path_policy.py +0 -0
  876. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/metrics_exporter.py +0 -0
  877. {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/turn_schema.py +0 -0
  878. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster.egg-info/dependency_links.txt +0 -0
  879. {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster.egg-info/requires.txt +0 -0
  880. {memorymaster-3.26.1 → memorymaster-4.0.0}/setup.cfg +0 -0
  881. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_auto_ingest_hook_schema.py +0 -0
  882. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_classify_hook_f1.py +0 -0
  883. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_classify_hook_latency.py +0 -0
  884. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_claude_to_turns.py +0 -0
  885. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_confusion_matrix_eval.py +0 -0
  886. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_connectors.py +0 -0
  887. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_conversation_to_turns.py +0 -0
  888. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_hook_env_isolation.py +0 -0
  889. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_incident_drill_runner.py +0 -0
  890. {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_perf_smoke_config.py +0 -0
@@ -0,0 +1,307 @@
1
+ Metadata-Version: 2.4
2
+ Name: memorymaster
3
+ Version: 4.0.0
4
+ Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
5
+ Author: wolverin0
6
+ License: MIT
7
+ Keywords: memory,ai-agents,claims,lifecycle,mcp,sqlite,postgres,coding-agents
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Software Development :: Libraries
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: requests>=2.31
21
+ Requires-Dist: tenacity>=8.2
22
+ Provides-Extra: postgres
23
+ Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
24
+ Provides-Extra: security
25
+ Requires-Dist: cryptography>=42; extra == "security"
26
+ Provides-Extra: embeddings
27
+ Requires-Dist: sentence-transformers>=3.0; extra == "embeddings"
28
+ Provides-Extra: gemini
29
+ Requires-Dist: google-genai>=1.0; extra == "gemini"
30
+ Provides-Extra: qdrant
31
+ Requires-Dist: httpx>=0.27; extra == "qdrant"
32
+ Provides-Extra: vector
33
+ Requires-Dist: sentence-transformers>=3.0; extra == "vector"
34
+ Requires-Dist: qdrant-client>=1.9; extra == "vector"
35
+ Provides-Extra: graph
36
+ Requires-Dist: kuzu>=0.4; extra == "graph"
37
+ Provides-Extra: dev
38
+ Requires-Dist: pytest>=8.2; extra == "dev"
39
+ Requires-Dist: pytest-cov>=6.0; extra == "dev"
40
+ Provides-Extra: mcp
41
+ Requires-Dist: mcp>=1.2; extra == "mcp"
42
+ Provides-Extra: ml
43
+ Requires-Dist: scikit-learn>=1.3; extra == "ml"
44
+ Requires-Dist: joblib>=1.3; extra == "ml"
45
+ Dynamic: license-file
46
+
47
+ # MemoryMaster
48
+
49
+ **Production-grade memory reliability system for AI coding agents.**
50
+
51
+ Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
52
+
53
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
54
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
55
+ [![Tests](https://img.shields.io/badge/tests-2927-green.svg)]()
56
+ [![MCP Tools](https://img.shields.io/badge/MCP%20tools-30-purple.svg)]()
57
+ [![CLI Commands](https://img.shields.io/badge/CLI%20commands-104-orange.svg)]()
58
+ [![PyPI](https://img.shields.io/pypi/v/memorymaster.svg)](https://pypi.org/project/memorymaster/)
59
+
60
+ MemoryMaster prevents the #1 problem with agent memory: **drift, stale assumptions, and unsafe disclosure**. It gives Claude Code, Codex, and any MCP-compatible agent persistent, verifiable memory with a full claim lifecycle, citation tracking, conflict detection, and human-in-the-loop governance.
61
+
62
+ ### How it's different
63
+
64
+ Most agent-memory systems (mem0, Letta/MemGPT, Zep) optimize for **storing and recalling more** — embeddings, summaries, a fast vector store. MemoryMaster optimizes for **trusting what you recall**. The differentiator is **governance**: every memory is a lifecycle-managed *claim*, not an opaque embedding.
65
+
66
+ | | mem0 / Letta / Zep | **MemoryMaster** |
67
+ |---|---|---|
68
+ | Unit of memory | text chunk / summary | **claim** with status, tier, citations, bitemporal validity |
69
+ | Stale / wrong facts | linger until overwritten | **decay → `stale`**, **conflict detection**, **supersession** |
70
+ | Contradictions | silently coexist | surfaced as **`conflicted`**, auto-resolved (5-tier) or queued for review |
71
+ | Provenance | usually none | **citation per claim** + per-agent provenance |
72
+ | Secret leakage | your problem | **sensitivity filter at ingest** (JWT/AWS/Bearer/SSH redaction) |
73
+ | Operator control | API only | **steward governance** + a **dashboard** you can *see* |
74
+
75
+ If you want an agent that recalls more, any vector store works. If you want an agent that recalls *correctly* — and can prove where a fact came from and retire it when it goes stale — that's the gap MemoryMaster fills.
76
+
77
+ ---
78
+
79
+ ## Architecture
80
+
81
+ MemoryMaster is layered around MCP/CLI entry points, the `MemoryService` facade, SQLite/Postgres
82
+ storage, optional Qdrant vector search, scheduled jobs, and the Obsidian wiki/vault layer. The
83
+ canonical ingest path is:
84
+
85
+ ```text
86
+ MCP/CLI -> sensitivity filter -> MemoryService.ingest -> store write -> FTS5 index
87
+ ```
88
+
89
+ The query path is:
90
+
91
+ ```text
92
+ query_memory -> MemoryService.query -> storage reads + optional Qdrant candidates -> ranked context
93
+ ```
94
+
95
+ See [docs/architecture.md](docs/architecture.md) for the current module map, data-flow details,
96
+ recent PR status, and sensitivity-filter invariants.
97
+
98
+ ## Key features
99
+
100
+ - **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
101
+ - **Citation tracking** with provenance for every claim
102
+ - **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
103
+ - **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
104
+ - **Entity graph** with typed relationships and alias resolution
105
+ - **Rule-shaped claims** (new in v3.21.0): prescriptive `when <trigger>, do <action> because <rationale>` claims (`ingest_rule` / `query_rules`) — the shape an agent needs to actually change behaviour next time, not just recall a fact
106
+ - **Correction mining** (new in v3.21.0): `mine-rules` scans the verbatim transcript archive for user corrections and distills them into rule claims; the Stop hook also mines each session's latest correction automatically
107
+ - **Versioned schema migrations** (new in v3.20.0): `migrate` applies SQLite/Postgres migrations with sha256 drift detection; incremental `export-delta` ships small claim deltas for cheap cross-machine sync
108
+ - **Retrieval quality** (new in v3.22.0): floor-ratio boost gate (`MEMORYMASTER_BOOST_FLOOR_RATIO`) stops fresh-but-wrong claims outranking the true match; `query --explain` shows per-stage score attribution; an opt-in correctness-safe query cache (`MEMORYMASTER_QUERY_CACHE`) with a generation gate
109
+ - **Semantic contradiction probe** (new in v3.22.0, wired as a steward phase in v3.23.0): `detect-contradictions` finds claims that genuinely contradict each other (beyond the deterministic same-subject conflict check) via an LLM judge with a Wilson-CI rate and verdict cache; in v3.23 the same probe runs inside `run-steward` and emits paste-ready `conflicted` proposals
110
+ - **Verbatim archive cleanup** (new in v3.23.0): `verbatim-cleanup` dedups the raw-transcript table and optionally purges pre-#128 junk rows, with a dry-run default and FTS5 mirror sync
111
+ - **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
112
+ - **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
113
+ - **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
114
+ - **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter, `explored: true|false` operator-review marker, and inline `> [!contradiction]` Obsidian callouts
115
+ - **Atlas Inbox V1** (new in v3.13.0): WhatsApp ingestion → source/evidence/action proposal lifecycle → Super-Productivity export. Versioned API/CLI contract for downstream consumers (LifeAgent, etc.) — see [`docs/atlas-api-contract-v1.md`](docs/atlas-api-contract-v1.md). Real provider adapters (`OpenAIWhisperTranscriptionProvider`, `TesseractOcrProvider`) behind `Protocol`s; mock providers stay default.
116
+ - **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
117
+ - **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
118
+ - **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
119
+
120
+ Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
121
+
122
+ ## Benchmarks
123
+
124
+ **LongMemEval-S (N=500, retrieval-only)** — v3.15.0 now leads the publicly-reported numbers from [agentmemory](https://github.com/rohitg00/agentmemory) on R@5 and MRR, after wiring `sentence-transformers/all-MiniLM-L6-v2` into the bench harness (the v3.14 baseline was unintentionally BM25-only).
125
+
126
+ ![LongMemEval-S benchmark](docs/benchmark-longmemeval.svg)
127
+
128
+ | Metric | v3.14.0 | **v3.15.0** | agentmemory | Δ vs agentmemory |
129
+ |---|---|---|---|---|
130
+ | Recall@5 | 0.894 | **0.966** | 0.952 | **+0.014** ★ |
131
+ | Recall@10 | 0.942 | **0.984** | 0.986 | -0.002 |
132
+ | MRR | 0.799 | **0.902** | 0.882 | **+0.020** ★ |
133
+
134
+ Reproduce: `python tests/bench_longmemeval.py --retrieval-only`. Full methodology, experiment-by-experiment deltas (1 KEEP, 2 REVERT, 3 NULL), and the architectural findings that surfaced along the way live in [`docs/archive/longmemeval-results.md`](docs/archive/longmemeval-results.md) and [`docs/archive/v315-experiments/`](docs/archive/v315-experiments/). QA-accuracy pass (with judge) is deferred until provider quotas allow.
135
+
136
+ ## Prerequisites
137
+
138
+ **Required (the package won't function without these)**
139
+
140
+ - Python **3.10+** with `pip`
141
+ - Claude Code, Codex, or any MCP-compatible agent
142
+ - **An LLM provider** — pick one: Claude Code OAuth (free if you're a subscriber, set `MEMORYMASTER_LLM_PROVIDER=claude_cli`), a free Gemini API key from [aistudio.google.com](https://aistudio.google.com), OpenAI, Anthropic API, or local Ollama. The steward, auto-ingest, and wiki-absorb cycles all need an LLM — without one, claims pile up as `candidate` and never get validated, deduped, or compiled into the wiki.
143
+
144
+ **Strongly recommended (you'll lose ~80% of the value without these)**
145
+
146
+ - **Node.js 18+** for [graphify](https://github.com/wolverin0/graphify) and [GitNexus](https://github.com/wolverin0/gitnexus) — these are the cached intelligence layers that make MemoryMaster cheap to query. Without them, every "what does this codebase do?" question burns tokens cold-exploring files the graph already mapped. The `intelligence-first` workflow in `CLAUDE.md` assumes both are installed.
147
+ - **Obsidian 1.6+** with the [Bases](https://help.obsidian.md/Plugins/Bases) core plugin — the wiki engine writes plain Markdown so any editor works, but Obsidian's backlinks, graph view, and Bases dashboards are how you actually navigate `wiki-absorb` output. Without Obsidian, the wiki is just a folder of files.
148
+
149
+ **Optional (nice to have)**
150
+
151
+ - **Docker** for Qdrant — vector retrieval. SQLite FTS5 is the default and works out of the box; add Qdrant when you want semantic recall on top of keyword search.
152
+
153
+ ## 15-minute quickstart
154
+
155
+ From zero to a recalled claim and a live dashboard. No Qdrant, no Postgres, no LLM key required for these steps (SQLite + FTS5 is the default).
156
+
157
+ **1. Install (2 min)**
158
+
159
+ ```bash
160
+ pip install "memorymaster[mcp]"
161
+ memorymaster --db memorymaster.db init-db
162
+ ```
163
+
164
+ **2. Configure a provider (3 min, optional for this walkthrough)**
165
+
166
+ Recall and ingest below work with zero config. An LLM provider is only needed for the steward/wiki cycles — pick one when you're ready (see [Pick your LLM provider](#pick-your-llm-provider)). For a Claude Code subscriber, the cheapest path is:
167
+
168
+ ```bash
169
+ export MEMORYMASTER_LLM_PROVIDER=claude_cli # reuses your Claude Code OAuth, no API key
170
+ ```
171
+
172
+ **3. Ingest a claim via CLI (1 min)**
173
+
174
+ ```bash
175
+ memorymaster --db memorymaster.db ingest \
176
+ --text "Server uses PostgreSQL 16" \
177
+ --source "session://chat|turn-3|user confirmed"
178
+ ```
179
+
180
+ **4. Recall it (1 min)**
181
+
182
+ A freshly-ingested claim starts life as a `candidate` (unvalidated). The CLI `query`/`context` paths *exclude* candidates by default — that's the governance model: unvalidated facts don't silently leak into recall until the steward promotes them. To see your brand-new claim before a validation cycle, pass `--include-candidates`:
183
+
184
+ ```bash
185
+ # Hybrid retrieval (lexical + freshness + confidence)
186
+ memorymaster --db memorymaster.db query "database version" \
187
+ --retrieval-mode hybrid --include-candidates
188
+
189
+ # Token-budgeted context block — the killer feature for agents
190
+ memorymaster --db memorymaster.db context "database" \
191
+ --budget 4000 --format xml --include-candidates
192
+ ```
193
+
194
+ You should see the PostgreSQL 16 claim come back, ranked, with its citation. (Drop `--include-candidates` and you'll get zero results until step 7's `run-cycle` promotes it to `confirmed` — that's working as designed, not a bug.)
195
+
196
+ **5. Open the dashboard (2 min)**
197
+
198
+ ```bash
199
+ memorymaster --db memorymaster.db run-dashboard # serves on http://127.0.0.1:8765
200
+ ```
201
+
202
+ Open the URL: you'll see your claim in **Claims**, plus governance panels — **Conflicts**, **Review Queue**, **Recall Analysis** (why each claim ranked where it did), **Audit Log**, **Provenance by Agent**, and **Reliability**.
203
+
204
+ **6. Wire it into your agent (3 min)**
205
+
206
+ ```bash
207
+ memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
208
+ ```
209
+
210
+ That installs the MCP server and the auto-ingest Stop hook so your agent recalls and stores memory automatically. See [MCP server](#mcp-server) for the config block.
211
+
212
+ **7. Run a validation cycle (1 min, needs a provider)**
213
+
214
+ ```bash
215
+ memorymaster --db memorymaster.db run-cycle # extract, validate, decay, compact
216
+ ```
217
+
218
+ For the one-prompt agent install (paste into any agent with shell access), see [`docs/handbook.md#one-prompt-agent-install`](docs/handbook.md#one-prompt-agent-install).
219
+
220
+ ## Pick your LLM provider
221
+
222
+ | Provider | Env vars | Default model | Cost |
223
+ |----------|----------|---------------|------|
224
+ | **Claude Code OAuth** (recommended for subscribers) | `MEMORYMASTER_LLM_PROVIDER=claude_cli` (requires `claude` CLI on PATH) | `claude-haiku-4-5-20251001` | included in Claude Code plan |
225
+ | Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
226
+ | OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
227
+ | Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
228
+ | Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
229
+
230
+ The `claude_cli` provider shells out to your local `claude --print` binary, so it inherits the OAuth session you're already logged into in Claude Code — no API key, no rotator, no quota juggling. **Caveat**: cold-start adds 3-15s per call (subprocess spawn), so it's ideal for batched/cron paths (steward, wiki-absorb) and not for latency-sensitive recall. Override with `MEMORYMASTER_CLAUDE_CLI_BIN` and `MEMORYMASTER_CLAUDE_CLI_TIMEOUT`. On VM installs the OAuth token expires ~24h, so pair with `MEMORYMASTER_LLM_FALLBACK_PROVIDER=ollama`; desktop tokens don't expire.
231
+
232
+ For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
233
+
234
+ ## MCP server
235
+
236
+ ```json
237
+ {
238
+ "mcpServers": {
239
+ "memorymaster": {
240
+ "command": "memorymaster-mcp",
241
+ "env": {
242
+ "MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
243
+ "MEMORYMASTER_WORKSPACE": "/path/to/your/project"
244
+ }
245
+ }
246
+ }
247
+ }
248
+ ```
249
+
250
+ 30 MCP tools spanning setup/lifecycle, ingest, query/retrieval, listing, knowledge graph, and governance: `init_db`, `ingest_claim`, `ingest_rule`, `query_rules`, `rules_export`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `query_for_task`, `query_claim_paths`, `query_meta_decisions`, `federated_query`, `recall_analysis`, `read_active_tasks`, `list_claims`, `redact_claim_payload`, `pin_claim`, `compact_memory`, `list_events`, `search_verbatim`, `open_dashboard`, `list_steward_proposals`, `resolve_steward_proposal`, `extract_entities`, `entity_stats`, `find_related_claims`, `quality_scores`, `recompute_tiers`.
251
+
252
+ See [`docs/MCP-TOOLS.md`](docs/MCP-TOOLS.md) for the grouped reference (one line per tool), and [`.mcp.json.example`](.mcp.json.example) for the full config template.
253
+
254
+ ## Backends
255
+
256
+ | Backend | Install | Use case |
257
+ |---------|---------|----------|
258
+ | **SQLite** | Built-in | Local development, single-agent, zero-config |
259
+ | **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
260
+
261
+ ## Docker Compose
262
+
263
+ Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
264
+
265
+ ```bash
266
+ docker compose up -d
267
+ ```
268
+
269
+ See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
270
+
271
+ ## Development
272
+
273
+ ```bash
274
+ # Install with dev dependencies
275
+ pip install -e ".[dev,mcp,security,embeddings,qdrant]"
276
+
277
+ # Run tests
278
+ pytest tests/ -q
279
+
280
+ # Lint and format
281
+ ruff check memorymaster/ && ruff format memorymaster/
282
+
283
+ # Performance benchmarks
284
+ python benchmarks/perf_smoke.py
285
+ ```
286
+
287
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
288
+
289
+ ## Documentation
290
+
291
+ | Document | Description |
292
+ |----------|-------------|
293
+ | [docs/README.md](docs/README.md) | Documentation index — where to find each living doc |
294
+ | [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
295
+ | [docs/MCP-TOOLS.md](docs/MCP-TOOLS.md) | Reference for all 30 MCP tools, grouped by purpose |
296
+ | [docs/INTEGRATING.md](docs/INTEGRATING.md) | Integration guide for embedding MemoryMaster in your agent |
297
+ | [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
298
+ | [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
299
+ | [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
300
+ | [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
301
+ | [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
302
+ | [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
303
+ | [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
304
+
305
+ ## License
306
+
307
+ [MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
@@ -0,0 +1,261 @@
1
+ # MemoryMaster
2
+
3
+ **Production-grade memory reliability system for AI coding agents.**
4
+
5
+ Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
6
+
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
9
+ [![Tests](https://img.shields.io/badge/tests-2927-green.svg)]()
10
+ [![MCP Tools](https://img.shields.io/badge/MCP%20tools-30-purple.svg)]()
11
+ [![CLI Commands](https://img.shields.io/badge/CLI%20commands-104-orange.svg)]()
12
+ [![PyPI](https://img.shields.io/pypi/v/memorymaster.svg)](https://pypi.org/project/memorymaster/)
13
+
14
+ MemoryMaster prevents the #1 problem with agent memory: **drift, stale assumptions, and unsafe disclosure**. It gives Claude Code, Codex, and any MCP-compatible agent persistent, verifiable memory with a full claim lifecycle, citation tracking, conflict detection, and human-in-the-loop governance.
15
+
16
+ ### How it's different
17
+
18
+ Most agent-memory systems (mem0, Letta/MemGPT, Zep) optimize for **storing and recalling more** — embeddings, summaries, a fast vector store. MemoryMaster optimizes for **trusting what you recall**. The differentiator is **governance**: every memory is a lifecycle-managed *claim*, not an opaque embedding.
19
+
20
+ | | mem0 / Letta / Zep | **MemoryMaster** |
21
+ |---|---|---|
22
+ | Unit of memory | text chunk / summary | **claim** with status, tier, citations, bitemporal validity |
23
+ | Stale / wrong facts | linger until overwritten | **decay → `stale`**, **conflict detection**, **supersession** |
24
+ | Contradictions | silently coexist | surfaced as **`conflicted`**, auto-resolved (5-tier) or queued for review |
25
+ | Provenance | usually none | **citation per claim** + per-agent provenance |
26
+ | Secret leakage | your problem | **sensitivity filter at ingest** (JWT/AWS/Bearer/SSH redaction) |
27
+ | Operator control | API only | **steward governance** + a **dashboard** you can *see* |
28
+
29
+ If you want an agent that recalls more, any vector store works. If you want an agent that recalls *correctly* — and can prove where a fact came from and retire it when it goes stale — that's the gap MemoryMaster fills.
30
+
31
+ ---
32
+
33
+ ## Architecture
34
+
35
+ MemoryMaster is layered around MCP/CLI entry points, the `MemoryService` facade, SQLite/Postgres
36
+ storage, optional Qdrant vector search, scheduled jobs, and the Obsidian wiki/vault layer. The
37
+ canonical ingest path is:
38
+
39
+ ```text
40
+ MCP/CLI -> sensitivity filter -> MemoryService.ingest -> store write -> FTS5 index
41
+ ```
42
+
43
+ The query path is:
44
+
45
+ ```text
46
+ query_memory -> MemoryService.query -> storage reads + optional Qdrant candidates -> ranked context
47
+ ```
48
+
49
+ See [docs/architecture.md](docs/architecture.md) for the current module map, data-flow details,
50
+ recent PR status, and sensitivity-filter invariants.
51
+
52
+ ## Key features
53
+
54
+ - **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
55
+ - **Citation tracking** with provenance for every claim
56
+ - **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
57
+ - **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
58
+ - **Entity graph** with typed relationships and alias resolution
59
+ - **Rule-shaped claims** (new in v3.21.0): prescriptive `when <trigger>, do <action> because <rationale>` claims (`ingest_rule` / `query_rules`) — the shape an agent needs to actually change behaviour next time, not just recall a fact
60
+ - **Correction mining** (new in v3.21.0): `mine-rules` scans the verbatim transcript archive for user corrections and distills them into rule claims; the Stop hook also mines each session's latest correction automatically
61
+ - **Versioned schema migrations** (new in v3.20.0): `migrate` applies SQLite/Postgres migrations with sha256 drift detection; incremental `export-delta` ships small claim deltas for cheap cross-machine sync
62
+ - **Retrieval quality** (new in v3.22.0): floor-ratio boost gate (`MEMORYMASTER_BOOST_FLOOR_RATIO`) stops fresh-but-wrong claims outranking the true match; `query --explain` shows per-stage score attribution; an opt-in correctness-safe query cache (`MEMORYMASTER_QUERY_CACHE`) with a generation gate
63
+ - **Semantic contradiction probe** (new in v3.22.0, wired as a steward phase in v3.23.0): `detect-contradictions` finds claims that genuinely contradict each other (beyond the deterministic same-subject conflict check) via an LLM judge with a Wilson-CI rate and verdict cache; in v3.23 the same probe runs inside `run-steward` and emits paste-ready `conflicted` proposals
64
+ - **Verbatim archive cleanup** (new in v3.23.0): `verbatim-cleanup` dedups the raw-transcript table and optionally purges pre-#128 junk rows, with a dry-run default and FTS5 mirror sync
65
+ - **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
66
+ - **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
67
+ - **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
68
+ - **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter, `explored: true|false` operator-review marker, and inline `> [!contradiction]` Obsidian callouts
69
+ - **Atlas Inbox V1** (new in v3.13.0): WhatsApp ingestion → source/evidence/action proposal lifecycle → Super-Productivity export. Versioned API/CLI contract for downstream consumers (LifeAgent, etc.) — see [`docs/atlas-api-contract-v1.md`](docs/atlas-api-contract-v1.md). Real provider adapters (`OpenAIWhisperTranscriptionProvider`, `TesseractOcrProvider`) behind `Protocol`s; mock providers stay default.
70
+ - **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
71
+ - **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
72
+ - **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
73
+
74
+ Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
75
+
76
+ ## Benchmarks
77
+
78
+ **LongMemEval-S (N=500, retrieval-only)** — v3.15.0 now leads the publicly-reported numbers from [agentmemory](https://github.com/rohitg00/agentmemory) on R@5 and MRR, after wiring `sentence-transformers/all-MiniLM-L6-v2` into the bench harness (the v3.14 baseline was unintentionally BM25-only).
79
+
80
+ ![LongMemEval-S benchmark](docs/benchmark-longmemeval.svg)
81
+
82
+ | Metric | v3.14.0 | **v3.15.0** | agentmemory | Δ vs agentmemory |
83
+ |---|---|---|---|---|
84
+ | Recall@5 | 0.894 | **0.966** | 0.952 | **+0.014** ★ |
85
+ | Recall@10 | 0.942 | **0.984** | 0.986 | -0.002 |
86
+ | MRR | 0.799 | **0.902** | 0.882 | **+0.020** ★ |
87
+
88
+ Reproduce: `python tests/bench_longmemeval.py --retrieval-only`. Full methodology, experiment-by-experiment deltas (1 KEEP, 2 REVERT, 3 NULL), and the architectural findings that surfaced along the way live in [`docs/archive/longmemeval-results.md`](docs/archive/longmemeval-results.md) and [`docs/archive/v315-experiments/`](docs/archive/v315-experiments/). QA-accuracy pass (with judge) is deferred until provider quotas allow.
89
+
90
+ ## Prerequisites
91
+
92
+ **Required (the package won't function without these)**
93
+
94
+ - Python **3.10+** with `pip`
95
+ - Claude Code, Codex, or any MCP-compatible agent
96
+ - **An LLM provider** — pick one: Claude Code OAuth (free if you're a subscriber, set `MEMORYMASTER_LLM_PROVIDER=claude_cli`), a free Gemini API key from [aistudio.google.com](https://aistudio.google.com), OpenAI, Anthropic API, or local Ollama. The steward, auto-ingest, and wiki-absorb cycles all need an LLM — without one, claims pile up as `candidate` and never get validated, deduped, or compiled into the wiki.
97
+
98
+ **Strongly recommended (you'll lose ~80% of the value without these)**
99
+
100
+ - **Node.js 18+** for [graphify](https://github.com/wolverin0/graphify) and [GitNexus](https://github.com/wolverin0/gitnexus) — these are the cached intelligence layers that make MemoryMaster cheap to query. Without them, every "what does this codebase do?" question burns tokens cold-exploring files the graph already mapped. The `intelligence-first` workflow in `CLAUDE.md` assumes both are installed.
101
+ - **Obsidian 1.6+** with the [Bases](https://help.obsidian.md/Plugins/Bases) core plugin — the wiki engine writes plain Markdown so any editor works, but Obsidian's backlinks, graph view, and Bases dashboards are how you actually navigate `wiki-absorb` output. Without Obsidian, the wiki is just a folder of files.
102
+
103
+ **Optional (nice to have)**
104
+
105
+ - **Docker** for Qdrant — vector retrieval. SQLite FTS5 is the default and works out of the box; add Qdrant when you want semantic recall on top of keyword search.
106
+
107
+ ## 15-minute quickstart
108
+
109
+ From zero to a recalled claim and a live dashboard. No Qdrant, no Postgres, no LLM key required for these steps (SQLite + FTS5 is the default).
110
+
111
+ **1. Install (2 min)**
112
+
113
+ ```bash
114
+ pip install "memorymaster[mcp]"
115
+ memorymaster --db memorymaster.db init-db
116
+ ```
117
+
118
+ **2. Configure a provider (3 min, optional for this walkthrough)**
119
+
120
+ Recall and ingest below work with zero config. An LLM provider is only needed for the steward/wiki cycles — pick one when you're ready (see [Pick your LLM provider](#pick-your-llm-provider)). For a Claude Code subscriber, the cheapest path is:
121
+
122
+ ```bash
123
+ export MEMORYMASTER_LLM_PROVIDER=claude_cli # reuses your Claude Code OAuth, no API key
124
+ ```
125
+
126
+ **3. Ingest a claim via CLI (1 min)**
127
+
128
+ ```bash
129
+ memorymaster --db memorymaster.db ingest \
130
+ --text "Server uses PostgreSQL 16" \
131
+ --source "session://chat|turn-3|user confirmed"
132
+ ```
133
+
134
+ **4. Recall it (1 min)**
135
+
136
+ A freshly-ingested claim starts life as a `candidate` (unvalidated). The CLI `query`/`context` paths *exclude* candidates by default — that's the governance model: unvalidated facts don't silently leak into recall until the steward promotes them. To see your brand-new claim before a validation cycle, pass `--include-candidates`:
137
+
138
+ ```bash
139
+ # Hybrid retrieval (lexical + freshness + confidence)
140
+ memorymaster --db memorymaster.db query "database version" \
141
+ --retrieval-mode hybrid --include-candidates
142
+
143
+ # Token-budgeted context block — the killer feature for agents
144
+ memorymaster --db memorymaster.db context "database" \
145
+ --budget 4000 --format xml --include-candidates
146
+ ```
147
+
148
+ You should see the PostgreSQL 16 claim come back, ranked, with its citation. (Drop `--include-candidates` and you'll get zero results until step 7's `run-cycle` promotes it to `confirmed` — that's working as designed, not a bug.)
149
+
150
+ **5. Open the dashboard (2 min)**
151
+
152
+ ```bash
153
+ memorymaster --db memorymaster.db run-dashboard # serves on http://127.0.0.1:8765
154
+ ```
155
+
156
+ Open the URL: you'll see your claim in **Claims**, plus governance panels — **Conflicts**, **Review Queue**, **Recall Analysis** (why each claim ranked where it did), **Audit Log**, **Provenance by Agent**, and **Reliability**.
157
+
158
+ **6. Wire it into your agent (3 min)**
159
+
160
+ ```bash
161
+ memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
162
+ ```
163
+
164
+ That installs the MCP server and the auto-ingest Stop hook so your agent recalls and stores memory automatically. See [MCP server](#mcp-server) for the config block.
165
+
166
+ **7. Run a validation cycle (1 min, needs a provider)**
167
+
168
+ ```bash
169
+ memorymaster --db memorymaster.db run-cycle # extract, validate, decay, compact
170
+ ```
171
+
172
+ For the one-prompt agent install (paste into any agent with shell access), see [`docs/handbook.md#one-prompt-agent-install`](docs/handbook.md#one-prompt-agent-install).
173
+
174
+ ## Pick your LLM provider
175
+
176
+ | Provider | Env vars | Default model | Cost |
177
+ |----------|----------|---------------|------|
178
+ | **Claude Code OAuth** (recommended for subscribers) | `MEMORYMASTER_LLM_PROVIDER=claude_cli` (requires `claude` CLI on PATH) | `claude-haiku-4-5-20251001` | included in Claude Code plan |
179
+ | Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
180
+ | OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
181
+ | Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
182
+ | Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
183
+
184
+ The `claude_cli` provider shells out to your local `claude --print` binary, so it inherits the OAuth session you're already logged into in Claude Code — no API key, no rotator, no quota juggling. **Caveat**: cold-start adds 3-15s per call (subprocess spawn), so it's ideal for batched/cron paths (steward, wiki-absorb) and not for latency-sensitive recall. Override with `MEMORYMASTER_CLAUDE_CLI_BIN` and `MEMORYMASTER_CLAUDE_CLI_TIMEOUT`. On VM installs the OAuth token expires ~24h, so pair with `MEMORYMASTER_LLM_FALLBACK_PROVIDER=ollama`; desktop tokens don't expire.
185
+
186
+ For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
187
+
188
+ ## MCP server
189
+
190
+ ```json
191
+ {
192
+ "mcpServers": {
193
+ "memorymaster": {
194
+ "command": "memorymaster-mcp",
195
+ "env": {
196
+ "MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
197
+ "MEMORYMASTER_WORKSPACE": "/path/to/your/project"
198
+ }
199
+ }
200
+ }
201
+ }
202
+ ```
203
+
204
+ 30 MCP tools spanning setup/lifecycle, ingest, query/retrieval, listing, knowledge graph, and governance: `init_db`, `ingest_claim`, `ingest_rule`, `query_rules`, `rules_export`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `query_for_task`, `query_claim_paths`, `query_meta_decisions`, `federated_query`, `recall_analysis`, `read_active_tasks`, `list_claims`, `redact_claim_payload`, `pin_claim`, `compact_memory`, `list_events`, `search_verbatim`, `open_dashboard`, `list_steward_proposals`, `resolve_steward_proposal`, `extract_entities`, `entity_stats`, `find_related_claims`, `quality_scores`, `recompute_tiers`.
205
+
206
+ See [`docs/MCP-TOOLS.md`](docs/MCP-TOOLS.md) for the grouped reference (one line per tool), and [`.mcp.json.example`](.mcp.json.example) for the full config template.
207
+
208
+ ## Backends
209
+
210
+ | Backend | Install | Use case |
211
+ |---------|---------|----------|
212
+ | **SQLite** | Built-in | Local development, single-agent, zero-config |
213
+ | **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
214
+
215
+ ## Docker Compose
216
+
217
+ Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
218
+
219
+ ```bash
220
+ docker compose up -d
221
+ ```
222
+
223
+ See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
224
+
225
+ ## Development
226
+
227
+ ```bash
228
+ # Install with dev dependencies
229
+ pip install -e ".[dev,mcp,security,embeddings,qdrant]"
230
+
231
+ # Run tests
232
+ pytest tests/ -q
233
+
234
+ # Lint and format
235
+ ruff check memorymaster/ && ruff format memorymaster/
236
+
237
+ # Performance benchmarks
238
+ python benchmarks/perf_smoke.py
239
+ ```
240
+
241
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
242
+
243
+ ## Documentation
244
+
245
+ | Document | Description |
246
+ |----------|-------------|
247
+ | [docs/README.md](docs/README.md) | Documentation index — where to find each living doc |
248
+ | [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
249
+ | [docs/MCP-TOOLS.md](docs/MCP-TOOLS.md) | Reference for all 30 MCP tools, grouped by purpose |
250
+ | [docs/INTEGRATING.md](docs/INTEGRATING.md) | Integration guide for embedding MemoryMaster in your agent |
251
+ | [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
252
+ | [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
253
+ | [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
254
+ | [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
255
+ | [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
256
+ | [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
257
+ | [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
258
+
259
+ ## License
260
+
261
+ [MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
@@ -0,0 +1,5 @@
1
+ """Memory reliability MVP package."""
2
+
3
+ __all__ = ["__version__"]
4
+
5
+ __version__ = "4.0.0"
@@ -0,0 +1,3 @@
1
+ from memorymaster.surfaces.cli import main
2
+
3
+ raise SystemExit(main())
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_lifecycle``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_lifecycle``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_lifecycle as _new
10
+
11
+ _sys.modules[__name__] = _new
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_read``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_read``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_read as _new
10
+
11
+ _sys.modules[__name__] = _new
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_schema``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_schema``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_schema as _new
10
+
11
+ _sys.modules[__name__] = _new
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_shared``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_shared``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_shared as _new
10
+
11
+ _sys.modules[__name__] = _new
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_sources``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_sources``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_sources as _new
10
+
11
+ _sys.modules[__name__] = _new
@@ -0,0 +1,11 @@
1
+ """Deprecated compatibility shim — moved to ``memorymaster.stores._storage_write_claims``.
2
+
3
+ P2 restructure: this alias keeps the old import path (including submodule
4
+ attribute access) working for one minor version. Update imports to
5
+ ``memorymaster.stores._storage_write_claims``.
6
+ """
7
+ import sys as _sys
8
+
9
+ from memorymaster.stores import _storage_write_claims as _new
10
+
11
+ _sys.modules[__name__] = _new