memorymaster 3.28.0__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 (909) 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/hook_log.py +65 -0
  51. memorymaster-4.0.0/memorymaster/core/intake_policy.py +351 -0
  52. memorymaster-4.0.0/memorymaster/core/key_rotator.py +270 -0
  53. memorymaster-4.0.0/memorymaster/core/lifecycle.py +83 -0
  54. memorymaster-4.0.0/memorymaster/core/llm_budget.py +190 -0
  55. memorymaster-4.0.0/memorymaster/core/llm_provider.py +698 -0
  56. memorymaster-4.0.0/memorymaster/core/observability.py +197 -0
  57. memorymaster-4.0.0/memorymaster/core/plugins.py +127 -0
  58. memorymaster-4.0.0/memorymaster/core/policy.py +133 -0
  59. memorymaster-4.0.0/memorymaster/core/security.py +558 -0
  60. memorymaster-4.0.0/memorymaster/core/service.py +2040 -0
  61. memorymaster-4.0.0/memorymaster/core/spool.py +201 -0
  62. memorymaster-4.0.0/memorymaster/daily_notes.py +11 -0
  63. memorymaster-4.0.0/memorymaster/dashboard.py +14 -0
  64. memorymaster-4.0.0/memorymaster/dashboard_auth.py +11 -0
  65. memorymaster-4.0.0/memorymaster/dashboard_integrity.py +11 -0
  66. memorymaster-4.0.0/memorymaster/db_merge.py +11 -0
  67. memorymaster-4.0.0/memorymaster/delta_sync.py +11 -0
  68. memorymaster-4.0.0/memorymaster/dream_bridge.py +11 -0
  69. memorymaster-4.0.0/memorymaster/embeddings.py +11 -0
  70. memorymaster-4.0.0/memorymaster/entity_extractor.py +11 -0
  71. memorymaster-4.0.0/memorymaster/entity_graph.py +11 -0
  72. memorymaster-4.0.0/memorymaster/entity_registry.py +11 -0
  73. memorymaster-4.0.0/memorymaster/federated_graphify.py +11 -0
  74. memorymaster-4.0.0/memorymaster/feedback.py +11 -0
  75. memorymaster-4.0.0/memorymaster/govern/__init__.py +7 -0
  76. memorymaster-4.0.0/memorymaster/govern/auto_resolver.py +253 -0
  77. memorymaster-4.0.0/memorymaster/govern/claim_verifier.py +169 -0
  78. memorymaster-4.0.0/memorymaster/govern/conflict_resolver.py +420 -0
  79. memorymaster-4.0.0/memorymaster/govern/contradiction_probe.py +536 -0
  80. memorymaster-4.0.0/memorymaster/govern/feedback.py +246 -0
  81. memorymaster-4.0.0/memorymaster/govern/jobs/compact_summaries.py +444 -0
  82. memorymaster-4.0.0/memorymaster/govern/jobs/compactor.py +295 -0
  83. memorymaster-4.0.0/memorymaster/govern/jobs/daydream_ingest.py +375 -0
  84. memorymaster-4.0.0/memorymaster/govern/jobs/decay.py +131 -0
  85. memorymaster-4.0.0/memorymaster/govern/jobs/dedup.py +398 -0
  86. memorymaster-4.0.0/memorymaster/govern/jobs/deterministic.py +404 -0
  87. memorymaster-4.0.0/memorymaster/govern/jobs/entity_graph_export.py +210 -0
  88. memorymaster-4.0.0/memorymaster/govern/jobs/fk_repair.py +331 -0
  89. memorymaster-4.0.0/memorymaster/govern/jobs/integrity.py +346 -0
  90. memorymaster-4.0.0/memorymaster/govern/jobs/qdrant_reconcile.py +166 -0
  91. memorymaster-4.0.0/memorymaster/govern/jobs/spool_drain.py +237 -0
  92. memorymaster-4.0.0/memorymaster/govern/jobs/staleness.py +227 -0
  93. memorymaster-4.0.0/memorymaster/govern/jobs/validator.py +252 -0
  94. memorymaster-4.0.0/memorymaster/govern/llm_budget.py +15 -0
  95. memorymaster-4.0.0/memorymaster/govern/llm_steward.py +1028 -0
  96. memorymaster-4.0.0/memorymaster/govern/review.py +121 -0
  97. memorymaster-4.0.0/memorymaster/govern/rl_trainer.py +131 -0
  98. memorymaster-4.0.0/memorymaster/govern/scheduler.py +107 -0
  99. memorymaster-4.0.0/memorymaster/govern/steward.py +1740 -0
  100. memorymaster-4.0.0/memorymaster/govern/steward_classifier.py +152 -0
  101. memorymaster-4.0.0/memorymaster/govern/steward_features.py +344 -0
  102. memorymaster-4.0.0/memorymaster/govern/verbatim_cleanup.py +206 -0
  103. memorymaster-4.0.0/memorymaster/graph_store.py +11 -0
  104. memorymaster-4.0.0/memorymaster/hook_log.py +11 -0
  105. memorymaster-4.0.0/memorymaster/jobs/__init__.py +33 -0
  106. memorymaster-4.0.0/memorymaster/key_rotator.py +11 -0
  107. memorymaster-4.0.0/memorymaster/knowledge/__init__.py +6 -0
  108. memorymaster-4.0.0/memorymaster/knowledge/closets.py +260 -0
  109. memorymaster-4.0.0/memorymaster/knowledge/daily_notes.py +191 -0
  110. memorymaster-4.0.0/memorymaster/knowledge/entity_extractor.py +767 -0
  111. memorymaster-4.0.0/memorymaster/knowledge/entity_graph.py +350 -0
  112. memorymaster-4.0.0/memorymaster/knowledge/rule_export.py +161 -0
  113. memorymaster-4.0.0/memorymaster/knowledge/rule_miner.py +611 -0
  114. memorymaster-4.0.0/memorymaster/knowledge/transcript_miner.py +160 -0
  115. memorymaster-4.0.0/memorymaster/knowledge/vault_curator.py +295 -0
  116. memorymaster-4.0.0/memorymaster/knowledge/vault_exporter.py +223 -0
  117. memorymaster-4.0.0/memorymaster/knowledge/vault_linter.py +451 -0
  118. memorymaster-4.0.0/memorymaster/knowledge/vault_query_capture.py +113 -0
  119. memorymaster-4.0.0/memorymaster/knowledge/wiki_engine.py +985 -0
  120. memorymaster-4.0.0/memorymaster/knowledge/wiki_similarity.py +621 -0
  121. memorymaster-4.0.0/memorymaster/knowledge/wiki_suggest.py +276 -0
  122. memorymaster-4.0.0/memorymaster/knowledge/wiki_validate.py +304 -0
  123. memorymaster-4.0.0/memorymaster/lifecycle.py +11 -0
  124. memorymaster-4.0.0/memorymaster/llm_budget.py +11 -0
  125. memorymaster-4.0.0/memorymaster/llm_provider.py +11 -0
  126. memorymaster-4.0.0/memorymaster/llm_rerank.py +11 -0
  127. memorymaster-4.0.0/memorymaster/llm_steward.py +11 -0
  128. memorymaster-4.0.0/memorymaster/mcp_path_policy.py +11 -0
  129. memorymaster-4.0.0/memorymaster/mcp_server.py +14 -0
  130. memorymaster-4.0.0/memorymaster/mcp_usage.py +11 -0
  131. memorymaster-4.0.0/memorymaster/media_processing.py +11 -0
  132. memorymaster-4.0.0/memorymaster/media_providers.py +11 -0
  133. memorymaster-4.0.0/memorymaster/metrics_exporter.py +11 -0
  134. memorymaster-4.0.0/memorymaster/migrations/__init__.py +17 -0
  135. memorymaster-4.0.0/memorymaster/models.py +11 -0
  136. memorymaster-4.0.0/memorymaster/observability.py +11 -0
  137. memorymaster-4.0.0/memorymaster/operator.py +11 -0
  138. memorymaster-4.0.0/memorymaster/operator_queue.py +11 -0
  139. memorymaster-4.0.0/memorymaster/plugins.py +11 -0
  140. memorymaster-4.0.0/memorymaster/policy.py +11 -0
  141. memorymaster-4.0.0/memorymaster/postgres_store.py +11 -0
  142. memorymaster-4.0.0/memorymaster/qdrant_backend.py +11 -0
  143. memorymaster-4.0.0/memorymaster/qdrant_recall_fallback.py +11 -0
  144. memorymaster-4.0.0/memorymaster/qmd_bridge.py +11 -0
  145. memorymaster-4.0.0/memorymaster/query_cache.py +11 -0
  146. memorymaster-4.0.0/memorymaster/query_classifier.py +11 -0
  147. memorymaster-4.0.0/memorymaster/query_expansion.py +11 -0
  148. memorymaster-4.0.0/memorymaster/recall/__init__.py +7 -0
  149. memorymaster-4.0.0/memorymaster/recall/claim_edges.py +285 -0
  150. memorymaster-4.0.0/memorymaster/recall/context_hook.py +2185 -0
  151. memorymaster-4.0.0/memorymaster/recall/context_optimizer.py +395 -0
  152. memorymaster-4.0.0/memorymaster/recall/llm_rerank.py +201 -0
  153. memorymaster-4.0.0/memorymaster/recall/qdrant_backend.py +379 -0
  154. memorymaster-4.0.0/memorymaster/recall/qdrant_recall_fallback.py +305 -0
  155. memorymaster-4.0.0/memorymaster/recall/query_cache.py +182 -0
  156. memorymaster-4.0.0/memorymaster/recall/query_expansion.py +184 -0
  157. memorymaster-4.0.0/memorymaster/recall/recall_fusion.py +79 -0
  158. memorymaster-4.0.0/memorymaster/recall/retrieval.py +528 -0
  159. memorymaster-4.0.0/memorymaster/recall/verbatim_recall.py +296 -0
  160. memorymaster-4.0.0/memorymaster/recall/verbatim_store.py +563 -0
  161. memorymaster-4.0.0/memorymaster/recall_fusion.py +11 -0
  162. memorymaster-4.0.0/memorymaster/recall_tokenizer.py +11 -0
  163. memorymaster-4.0.0/memorymaster/retrieval.py +11 -0
  164. memorymaster-4.0.0/memorymaster/retry.py +11 -0
  165. memorymaster-4.0.0/memorymaster/review.py +11 -0
  166. memorymaster-4.0.0/memorymaster/rl_trainer.py +11 -0
  167. memorymaster-4.0.0/memorymaster/rule_export.py +11 -0
  168. memorymaster-4.0.0/memorymaster/rule_miner.py +11 -0
  169. memorymaster-4.0.0/memorymaster/rules.py +11 -0
  170. memorymaster-4.0.0/memorymaster/scheduler.py +11 -0
  171. memorymaster-4.0.0/memorymaster/schema.py +11 -0
  172. memorymaster-4.0.0/memorymaster/scope_utils.py +11 -0
  173. memorymaster-4.0.0/memorymaster/security.py +11 -0
  174. memorymaster-4.0.0/memorymaster/service.py +11 -0
  175. memorymaster-4.0.0/memorymaster/session_tracker.py +11 -0
  176. memorymaster-4.0.0/memorymaster/setup_hooks.py +14 -0
  177. memorymaster-4.0.0/memorymaster/snapshot.py +11 -0
  178. memorymaster-4.0.0/memorymaster/spool.py +11 -0
  179. memorymaster-4.0.0/memorymaster/steward.py +11 -0
  180. memorymaster-4.0.0/memorymaster/steward_classifier.py +11 -0
  181. memorymaster-4.0.0/memorymaster/steward_features.py +11 -0
  182. memorymaster-4.0.0/memorymaster/storage.py +11 -0
  183. memorymaster-4.0.0/memorymaster/store_factory.py +11 -0
  184. memorymaster-4.0.0/memorymaster/stores/__init__.py +8 -0
  185. memorymaster-4.0.0/memorymaster/stores/_storage_lifecycle.py +643 -0
  186. memorymaster-4.0.0/memorymaster/stores/_storage_read.py +701 -0
  187. memorymaster-4.0.0/memorymaster/stores/_storage_schema.py +879 -0
  188. memorymaster-4.0.0/memorymaster/stores/_storage_shared.py +140 -0
  189. memorymaster-4.0.0/memorymaster/stores/_storage_sources.py +1006 -0
  190. memorymaster-4.0.0/memorymaster/stores/_storage_write_claims.py +374 -0
  191. memorymaster-4.0.0/memorymaster/stores/migrations/0002_miner_state.py +38 -0
  192. memorymaster-4.0.0/memorymaster/stores/migrations/0003_contradiction_verdicts.py +42 -0
  193. memorymaster-4.0.0/memorymaster/stores/migrations/0007_rule_stats.py +54 -0
  194. memorymaster-4.0.0/memorymaster/stores/migrations/__init__.py +48 -0
  195. memorymaster-4.0.0/memorymaster/stores/migrations/runner.py +268 -0
  196. memorymaster-4.0.0/memorymaster/stores/postgres_store.py +2613 -0
  197. memorymaster-4.0.0/memorymaster/stores/snapshot.py +487 -0
  198. memorymaster-4.0.0/memorymaster/stores/storage.py +181 -0
  199. memorymaster-4.0.0/memorymaster/stores/store_factory.py +27 -0
  200. memorymaster-4.0.0/memorymaster/surfaces/__init__.py +6 -0
  201. memorymaster-4.0.0/memorymaster/surfaces/cli.py +671 -0
  202. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_basic.py +1567 -0
  203. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_curation.py +1062 -0
  204. memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_integrity.py +159 -0
  205. memorymaster-4.0.0/memorymaster/surfaces/cli_helpers.py +151 -0
  206. memorymaster-4.0.0/memorymaster/surfaces/dashboard.py +1670 -0
  207. memorymaster-4.0.0/memorymaster/surfaces/dashboard_integrity.py +85 -0
  208. memorymaster-4.0.0/memorymaster/surfaces/mcp_server.py +1588 -0
  209. memorymaster-4.0.0/memorymaster/surfaces/mcp_usage.py +42 -0
  210. memorymaster-4.0.0/memorymaster/surfaces/operator.py +1453 -0
  211. memorymaster-4.0.0/memorymaster/surfaces/operator_queue.py +330 -0
  212. memorymaster-4.0.0/memorymaster/surfaces/session_tracker.py +129 -0
  213. memorymaster-4.0.0/memorymaster/surfaces/setup_hooks.py +432 -0
  214. memorymaster-4.0.0/memorymaster/transcript_miner.py +11 -0
  215. memorymaster-4.0.0/memorymaster/turn_schema.py +11 -0
  216. memorymaster-4.0.0/memorymaster/vault_bases.py +11 -0
  217. memorymaster-4.0.0/memorymaster/vault_curator.py +11 -0
  218. memorymaster-4.0.0/memorymaster/vault_exporter.py +11 -0
  219. memorymaster-4.0.0/memorymaster/vault_linter.py +11 -0
  220. memorymaster-4.0.0/memorymaster/vault_log.py +11 -0
  221. memorymaster-4.0.0/memorymaster/vault_query_capture.py +11 -0
  222. memorymaster-4.0.0/memorymaster/vault_synthesis.py +11 -0
  223. memorymaster-4.0.0/memorymaster/verbatim_cleanup.py +11 -0
  224. memorymaster-4.0.0/memorymaster/verbatim_recall.py +11 -0
  225. memorymaster-4.0.0/memorymaster/verbatim_store.py +11 -0
  226. memorymaster-4.0.0/memorymaster/webhook.py +11 -0
  227. memorymaster-4.0.0/memorymaster/wiki_engine.py +11 -0
  228. memorymaster-4.0.0/memorymaster/wiki_freshness.py +11 -0
  229. memorymaster-4.0.0/memorymaster/wiki_similarity.py +11 -0
  230. memorymaster-4.0.0/memorymaster/wiki_suggest.py +11 -0
  231. memorymaster-4.0.0/memorymaster/wiki_validate.py +11 -0
  232. memorymaster-4.0.0/memorymaster.egg-info/PKG-INFO +307 -0
  233. memorymaster-4.0.0/memorymaster.egg-info/SOURCES.txt +518 -0
  234. memorymaster-4.0.0/memorymaster.egg-info/entry_points.txt +6 -0
  235. memorymaster-4.0.0/memorymaster.egg-info/top_level.txt +1 -0
  236. memorymaster-4.0.0/pyproject.toml +86 -0
  237. memorymaster-4.0.0/tests/test_access_control.py +331 -0
  238. memorymaster-4.0.0/tests/test_action_exporters.py +68 -0
  239. memorymaster-4.0.0/tests/test_action_extractor.py +77 -0
  240. memorymaster-4.0.0/tests/test_agent_contract_roundtrip.py +267 -0
  241. memorymaster-4.0.0/tests/test_ambient_spool.py +483 -0
  242. memorymaster-4.0.0/tests/test_atlas_claim_extractor.py +61 -0
  243. memorymaster-4.0.0/tests/test_atlas_contract.py +1010 -0
  244. memorymaster-4.0.0/tests/test_atlas_source_schema.py +181 -0
  245. memorymaster-4.0.0/tests/test_auto_extractor.py +309 -0
  246. memorymaster-4.0.0/tests/test_auto_ingest_hook_citations.py +102 -0
  247. memorymaster-4.0.0/tests/test_auto_resolver.py +134 -0
  248. memorymaster-4.0.0/tests/test_auto_validate.py +197 -0
  249. memorymaster-4.0.0/tests/test_backend_parity.py +167 -0
  250. memorymaster-4.0.0/tests/test_bench_answer_prompt.py +81 -0
  251. memorymaster-4.0.0/tests/test_bm25_per_field.py +222 -0
  252. memorymaster-4.0.0/tests/test_calibration.py +134 -0
  253. memorymaster-4.0.0/tests/test_calibration_priors_applied.py +25 -0
  254. memorymaster-4.0.0/tests/test_candidate_dedupe.py +296 -0
  255. memorymaster-4.0.0/tests/test_claim_edges.py +167 -0
  256. memorymaster-4.0.0/tests/test_claim_links.py +288 -0
  257. memorymaster-4.0.0/tests/test_claim_paths.py +306 -0
  258. memorymaster-4.0.0/tests/test_claim_type_ranking.py +84 -0
  259. memorymaster-4.0.0/tests/test_cli_dry_run.py +142 -0
  260. memorymaster-4.0.0/tests/test_cli_handlers_extra.py +308 -0
  261. memorymaster-4.0.0/tests/test_cli_json_flag.py +150 -0
  262. memorymaster-4.0.0/tests/test_cli_ready.py +103 -0
  263. memorymaster-4.0.0/tests/test_cli_review_queue.py +77 -0
  264. memorymaster-4.0.0/tests/test_cli_subcommands.py +189 -0
  265. memorymaster-4.0.0/tests/test_closets.py +143 -0
  266. memorymaster-4.0.0/tests/test_closets_recall_integration.py +50 -0
  267. memorymaster-4.0.0/tests/test_compact_summaries.py +284 -0
  268. memorymaster-4.0.0/tests/test_compact_summaries_sensitivity.py +69 -0
  269. memorymaster-4.0.0/tests/test_compaction_trace.py +141 -0
  270. memorymaster-4.0.0/tests/test_compactor_artifact_order.py +40 -0
  271. memorymaster-4.0.0/tests/test_config.py +184 -0
  272. memorymaster-4.0.0/tests/test_conflict_resolver.py +457 -0
  273. memorymaster-4.0.0/tests/test_conflict_resolver_extra.py +415 -0
  274. memorymaster-4.0.0/tests/test_connection_retry.py +127 -0
  275. memorymaster-4.0.0/tests/test_context_hook.py +260 -0
  276. memorymaster-4.0.0/tests/test_context_hook_extra.py +643 -0
  277. memorymaster-4.0.0/tests/test_context_optimizer.py +200 -0
  278. memorymaster-4.0.0/tests/test_context_optimizer_provider.py +145 -0
  279. memorymaster-4.0.0/tests/test_contradiction_probe.py +388 -0
  280. memorymaster-4.0.0/tests/test_dashboard.py +344 -0
  281. memorymaster-4.0.0/tests/test_dashboard_auth.py +290 -0
  282. memorymaster-4.0.0/tests/test_dashboard_coverage.py +389 -0
  283. memorymaster-4.0.0/tests/test_dashboard_latency.py +111 -0
  284. memorymaster-4.0.0/tests/test_dashboard_lineage.py +70 -0
  285. memorymaster-4.0.0/tests/test_dashboard_review_queue.py +143 -0
  286. memorymaster-4.0.0/tests/test_daydream_ingest.py +123 -0
  287. memorymaster-4.0.0/tests/test_db_merge_audit_fixes.py +184 -0
  288. memorymaster-4.0.0/tests/test_db_merge_confidence_conflict.py +71 -0
  289. memorymaster-4.0.0/tests/test_db_merge_coverage_v2.py +260 -0
  290. memorymaster-4.0.0/tests/test_db_merge_extra.py +237 -0
  291. memorymaster-4.0.0/tests/test_decay_coverage.py +212 -0
  292. memorymaster-4.0.0/tests/test_decay_respects_pinned.py +120 -0
  293. memorymaster-4.0.0/tests/test_dedup.py +321 -0
  294. memorymaster-4.0.0/tests/test_dedup_cli.py +120 -0
  295. memorymaster-4.0.0/tests/test_dedup_conflict_disambiguation.py +52 -0
  296. memorymaster-4.0.0/tests/test_delta_sync.py +261 -0
  297. memorymaster-4.0.0/tests/test_delta_sync_extra.py +392 -0
  298. memorymaster-4.0.0/tests/test_deterministic_predicates.py +72 -0
  299. memorymaster-4.0.0/tests/test_dream_bridge_coverage_v2.py +186 -0
  300. memorymaster-4.0.0/tests/test_dream_bridge_extra.py +229 -0
  301. memorymaster-4.0.0/tests/test_dream_bridge_sensitivity.py +76 -0
  302. memorymaster-4.0.0/tests/test_dream_bridge_subject_sensitivity.py +83 -0
  303. memorymaster-4.0.0/tests/test_embeddings_coverage.py +127 -0
  304. memorymaster-4.0.0/tests/test_embeddings_degraded_signal.py +53 -0
  305. memorymaster-4.0.0/tests/test_entity_extractor.py +150 -0
  306. memorymaster-4.0.0/tests/test_entity_extractor_llm.py +296 -0
  307. memorymaster-4.0.0/tests/test_entity_graph.py +309 -0
  308. memorymaster-4.0.0/tests/test_entity_graph_export.py +147 -0
  309. memorymaster-4.0.0/tests/test_entity_new_kinds.py +241 -0
  310. memorymaster-4.0.0/tests/test_entity_regex_v3.py +71 -0
  311. memorymaster-4.0.0/tests/test_entity_registry.py +406 -0
  312. memorymaster-4.0.0/tests/test_entity_registry_extra.py +271 -0
  313. memorymaster-4.0.0/tests/test_entity_registry_merge_atomicity.py +94 -0
  314. memorymaster-4.0.0/tests/test_eval_harness.py +291 -0
  315. memorymaster-4.0.0/tests/test_events_schema.py +243 -0
  316. memorymaster-4.0.0/tests/test_extract_llm_ollama.py +140 -0
  317. memorymaster-4.0.0/tests/test_federated_graphify_mcp.py +136 -0
  318. memorymaster-4.0.0/tests/test_federated_query_safety.py +91 -0
  319. memorymaster-4.0.0/tests/test_feedback.py +278 -0
  320. memorymaster-4.0.0/tests/test_filter_bypass_hardening.py +267 -0
  321. memorymaster-4.0.0/tests/test_fk_repair.py +236 -0
  322. memorymaster-4.0.0/tests/test_floor_gate.py +90 -0
  323. memorymaster-4.0.0/tests/test_fts5_search.py +169 -0
  324. memorymaster-4.0.0/tests/test_graph_distance.py +233 -0
  325. memorymaster-4.0.0/tests/test_graph_harvest.py +348 -0
  326. memorymaster-4.0.0/tests/test_graph_store.py +322 -0
  327. memorymaster-4.0.0/tests/test_handler_regressions.py +158 -0
  328. memorymaster-4.0.0/tests/test_human_id.py +282 -0
  329. memorymaster-4.0.0/tests/test_initdb_fastpath.py +215 -0
  330. memorymaster-4.0.0/tests/test_intake_policy.py +467 -0
  331. memorymaster-4.0.0/tests/test_integration_workflows.py +534 -0
  332. memorymaster-4.0.0/tests/test_integrity_job.py +346 -0
  333. memorymaster-4.0.0/tests/test_integrity_metrics.py +298 -0
  334. memorymaster-4.0.0/tests/test_key_rotator.py +165 -0
  335. memorymaster-4.0.0/tests/test_lifecycle.py +75 -0
  336. memorymaster-4.0.0/tests/test_lifecycle_extra.py +314 -0
  337. memorymaster-4.0.0/tests/test_lifecycle_supersede_invariant.py +87 -0
  338. memorymaster-4.0.0/tests/test_llm_budget.py +233 -0
  339. memorymaster-4.0.0/tests/test_llm_concurrency_fixes.py +255 -0
  340. memorymaster-4.0.0/tests/test_llm_fallback.py +234 -0
  341. memorymaster-4.0.0/tests/test_llm_provider_claude_cli.py +186 -0
  342. memorymaster-4.0.0/tests/test_llm_provider_extra.py +716 -0
  343. memorymaster-4.0.0/tests/test_llm_provider_key_rotation.py +80 -0
  344. memorymaster-4.0.0/tests/test_llm_steward_coverage.py +113 -0
  345. memorymaster-4.0.0/tests/test_llm_steward_key_rotation.py +266 -0
  346. memorymaster-4.0.0/tests/test_llm_steward_scope.py +191 -0
  347. memorymaster-4.0.0/tests/test_mcp_filter_bypass.py +91 -0
  348. memorymaster-4.0.0/tests/test_mcp_helpers.py +412 -0
  349. memorymaster-4.0.0/tests/test_mcp_path_policy.py +206 -0
  350. memorymaster-4.0.0/tests/test_mcp_rate_limit.py +101 -0
  351. memorymaster-4.0.0/tests/test_mcp_server_security_cluster.py +187 -0
  352. memorymaster-4.0.0/tests/test_mcp_server_validation.py +49 -0
  353. memorymaster-4.0.0/tests/test_mcp_usage.py +95 -0
  354. memorymaster-4.0.0/tests/test_media_processing.py +86 -0
  355. memorymaster-4.0.0/tests/test_meta_decisions.py +125 -0
  356. memorymaster-4.0.0/tests/test_metrics_exporter.py +112 -0
  357. memorymaster-4.0.0/tests/test_migrations.py +292 -0
  358. memorymaster-4.0.0/tests/test_misc_correctness_cluster.py +92 -0
  359. memorymaster-4.0.0/tests/test_observability.py +47 -0
  360. memorymaster-4.0.0/tests/test_observability_extra.py +335 -0
  361. memorymaster-4.0.0/tests/test_obsidian_mind_patterns.py +386 -0
  362. memorymaster-4.0.0/tests/test_open_conn.py +289 -0
  363. memorymaster-4.0.0/tests/test_operator.py +379 -0
  364. memorymaster-4.0.0/tests/test_operator_queue.py +498 -0
  365. memorymaster-4.0.0/tests/test_p2_cycle_cuts.py +256 -0
  366. memorymaster-4.0.0/tests/test_plugins.py +284 -0
  367. memorymaster-4.0.0/tests/test_policy_coverage.py +56 -0
  368. memorymaster-4.0.0/tests/test_policy_mode_env.py +91 -0
  369. memorymaster-4.0.0/tests/test_postgres_parity.py +735 -0
  370. memorymaster-4.0.0/tests/test_qdrant_backend.py +320 -0
  371. memorymaster-4.0.0/tests/test_qdrant_reconcile.py +266 -0
  372. memorymaster-4.0.0/tests/test_qmd_bridge.py +188 -0
  373. memorymaster-4.0.0/tests/test_qrels_regression.py +88 -0
  374. memorymaster-4.0.0/tests/test_query_cache.py +192 -0
  375. memorymaster-4.0.0/tests/test_query_classifier.py +284 -0
  376. memorymaster-4.0.0/tests/test_query_expansion.py +264 -0
  377. memorymaster-4.0.0/tests/test_read_visibility_filter.py +156 -0
  378. memorymaster-4.0.0/tests/test_recall_analysis.py +306 -0
  379. memorymaster-4.0.0/tests/test_recall_entity_fanout.py +459 -0
  380. memorymaster-4.0.0/tests/test_recall_fusion.py +94 -0
  381. memorymaster-4.0.0/tests/test_recall_latency.py +275 -0
  382. memorymaster-4.0.0/tests/test_recall_precision_at_5.py +261 -0
  383. memorymaster-4.0.0/tests/test_recall_tokenizer.py +302 -0
  384. memorymaster-4.0.0/tests/test_recall_vector_fallback.py +306 -0
  385. memorymaster-4.0.0/tests/test_reliability_hardening.py +120 -0
  386. memorymaster-4.0.0/tests/test_resolvers_concurrent_supersede.py +148 -0
  387. memorymaster-4.0.0/tests/test_retrieval_extra.py +320 -0
  388. memorymaster-4.0.0/tests/test_retrieval_profile.py +140 -0
  389. memorymaster-4.0.0/tests/test_retrieval_profiles.py +142 -0
  390. memorymaster-4.0.0/tests/test_retrieval_rrf_tiebreaker.py +84 -0
  391. memorymaster-4.0.0/tests/test_retrieval_weights.py +69 -0
  392. memorymaster-4.0.0/tests/test_review.py +113 -0
  393. memorymaster-4.0.0/tests/test_rl_trainer.py +232 -0
  394. memorymaster-4.0.0/tests/test_ro_recall.py +258 -0
  395. memorymaster-4.0.0/tests/test_rrf_auto_gate.py +362 -0
  396. memorymaster-4.0.0/tests/test_rule_claims.py +181 -0
  397. memorymaster-4.0.0/tests/test_rule_confidence_bootstrap.py +211 -0
  398. memorymaster-4.0.0/tests/test_rule_miner.py +366 -0
  399. memorymaster-4.0.0/tests/test_rules_export.py +152 -0
  400. memorymaster-4.0.0/tests/test_scheduler.py +160 -0
  401. memorymaster-4.0.0/tests/test_schema.py +14 -0
  402. memorymaster-4.0.0/tests/test_scope_boost.py +298 -0
  403. memorymaster-4.0.0/tests/test_scope_utils.py +112 -0
  404. memorymaster-4.0.0/tests/test_security_access.py +219 -0
  405. memorymaster-4.0.0/tests/test_security_patterns.py +249 -0
  406. memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial.py +93 -0
  407. memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial_v2.py +153 -0
  408. memorymaster-4.0.0/tests/test_sensitivity_filter_t07.py +104 -0
  409. memorymaster-4.0.0/tests/test_service_coverage.py +263 -0
  410. memorymaster-4.0.0/tests/test_service_embedding_toctou.py +109 -0
  411. memorymaster-4.0.0/tests/test_session_tracker.py +337 -0
  412. memorymaster-4.0.0/tests/test_snapshot.py +302 -0
  413. memorymaster-4.0.0/tests/test_snapshot_roundtrip.py +168 -0
  414. memorymaster-4.0.0/tests/test_spool.py +302 -0
  415. memorymaster-4.0.0/tests/test_sqlite_core.py +264 -0
  416. memorymaster-4.0.0/tests/test_staleness.py +335 -0
  417. memorymaster-4.0.0/tests/test_stealth_mode.py +135 -0
  418. memorymaster-4.0.0/tests/test_steward.py +348 -0
  419. memorymaster-4.0.0/tests/test_steward_classifier.py +262 -0
  420. memorymaster-4.0.0/tests/test_steward_contradiction_phase.py +277 -0
  421. memorymaster-4.0.0/tests/test_steward_daydream_hook.py +116 -0
  422. memorymaster-4.0.0/tests/test_steward_features.py +174 -0
  423. memorymaster-4.0.0/tests/test_steward_features_v3.py +255 -0
  424. memorymaster-4.0.0/tests/test_steward_resolution_parity.py +219 -0
  425. memorymaster-4.0.0/tests/test_steward_resolvers_audit_fixes.py +242 -0
  426. memorymaster-4.0.0/tests/test_steward_rule_mining.py +202 -0
  427. memorymaster-4.0.0/tests/test_storage_concurrency.py +112 -0
  428. memorymaster-4.0.0/tests/test_storage_extra.py +154 -0
  429. memorymaster-4.0.0/tests/test_storage_internals_audit.py +124 -0
  430. memorymaster-4.0.0/tests/test_storage_parity.py +287 -0
  431. memorymaster-4.0.0/tests/test_store_factory.py +35 -0
  432. memorymaster-4.0.0/tests/test_tenant_isolation.py +167 -0
  433. memorymaster-4.0.0/tests/test_transcript_miner_sensitivity.py +56 -0
  434. memorymaster-4.0.0/tests/test_turn_schema.py +92 -0
  435. memorymaster-4.0.0/tests/test_two_pass_recall.py +86 -0
  436. memorymaster-4.0.0/tests/test_v311_fixes.py +172 -0
  437. memorymaster-4.0.0/tests/test_v313_e2e.py +265 -0
  438. memorymaster-4.0.0/tests/test_v313_run_cycle_dedupe.py +176 -0
  439. memorymaster-4.0.0/tests/test_v390_e2e.py +151 -0
  440. memorymaster-4.0.0/tests/test_v391_strict_warnings.py +73 -0
  441. memorymaster-4.0.0/tests/test_vault_exporter.py +381 -0
  442. memorymaster-4.0.0/tests/test_vault_linter_extra.py +298 -0
  443. memorymaster-4.0.0/tests/test_vault_linter_orphan.py +91 -0
  444. memorymaster-4.0.0/tests/test_vault_linter_weak_link.py +43 -0
  445. memorymaster-4.0.0/tests/test_vault_query_capture_scope.py +38 -0
  446. memorymaster-4.0.0/tests/test_vector_search.py +367 -0
  447. memorymaster-4.0.0/tests/test_verbatim_cleanup.py +232 -0
  448. memorymaster-4.0.0/tests/test_verbatim_dedup.py +228 -0
  449. memorymaster-4.0.0/tests/test_verbatim_perf_index.py +234 -0
  450. memorymaster-4.0.0/tests/test_verbatim_recall.py +321 -0
  451. memorymaster-4.0.0/tests/test_verbatim_store.py +67 -0
  452. memorymaster-4.0.0/tests/test_verbatim_store_pragmas.py +83 -0
  453. memorymaster-4.0.0/tests/test_verbatim_store_qdrant.py +148 -0
  454. memorymaster-4.0.0/tests/test_webhook.py +167 -0
  455. memorymaster-4.0.0/tests/test_webhook_hmac.py +216 -0
  456. memorymaster-4.0.0/tests/test_whatsapp_importer.py +106 -0
  457. memorymaster-4.0.0/tests/test_wiki_autopromote.py +101 -0
  458. memorymaster-4.0.0/tests/test_wiki_backfill_bindings_backend.py +94 -0
  459. memorymaster-4.0.0/tests/test_wiki_binding.py +182 -0
  460. memorymaster-4.0.0/tests/test_wiki_engine_absorb_fixes.py +187 -0
  461. memorymaster-4.0.0/tests/test_wiki_engine_extra.py +410 -0
  462. memorymaster-4.0.0/tests/test_wiki_engine_idempotency.py +170 -0
  463. memorymaster-4.0.0/tests/test_wiki_explored_and_contradictions.py +229 -0
  464. memorymaster-4.0.0/tests/test_wiki_freshness.py +284 -0
  465. memorymaster-4.0.0/tests/test_wiki_similarity_multiscope.py +272 -0
  466. memorymaster-4.0.0/tests/test_wiki_suggest.py +124 -0
  467. memorymaster-4.0.0/tests/test_wiki_validate_cli.py +193 -0
  468. memorymaster-4.0.0/tests/test_wiki_validate_desc_bound.py +30 -0
  469. memorymaster-3.28.0/PKG-INFO +0 -250
  470. memorymaster-3.28.0/README.md +0 -204
  471. memorymaster-3.28.0/artifacts/bm25-per-field-eval-harness.py +0 -309
  472. memorymaster-3.28.0/benchmarks/longmemeval_runner.py +0 -290
  473. memorymaster-3.28.0/benchmarks/longmemeval_vector_runner.py +0 -254
  474. memorymaster-3.28.0/benchmarks/perf_smoke.py +0 -338
  475. memorymaster-3.28.0/memorymaster/__init__.py +0 -5
  476. memorymaster-3.28.0/memorymaster/__main__.py +0 -3
  477. memorymaster-3.28.0/memorymaster/_storage_lifecycle.py +0 -624
  478. memorymaster-3.28.0/memorymaster/_storage_read.py +0 -701
  479. memorymaster-3.28.0/memorymaster/_storage_schema.py +0 -867
  480. memorymaster-3.28.0/memorymaster/_storage_shared.py +0 -41
  481. memorymaster-3.28.0/memorymaster/_storage_sources.py +0 -1006
  482. memorymaster-3.28.0/memorymaster/_storage_write_claims.py +0 -374
  483. memorymaster-3.28.0/memorymaster/access_control.py +0 -126
  484. memorymaster-3.28.0/memorymaster/action_extractor.py +0 -212
  485. memorymaster-3.28.0/memorymaster/atlas_claim_extractor.py +0 -162
  486. memorymaster-3.28.0/memorymaster/auto_resolver.py +0 -253
  487. memorymaster-3.28.0/memorymaster/claim_edges.py +0 -278
  488. memorymaster-3.28.0/memorymaster/claim_verifier.py +0 -169
  489. memorymaster-3.28.0/memorymaster/cli.py +0 -648
  490. memorymaster-3.28.0/memorymaster/cli_handlers_basic.py +0 -1566
  491. memorymaster-3.28.0/memorymaster/cli_handlers_curation.py +0 -1062
  492. memorymaster-3.28.0/memorymaster/cli_helpers.py +0 -151
  493. memorymaster-3.28.0/memorymaster/closets.py +0 -253
  494. memorymaster-3.28.0/memorymaster/config_templates/codex-agents-md-append.md +0 -35
  495. memorymaster-3.28.0/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -259
  496. memorymaster-3.28.0/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +0 -28
  497. memorymaster-3.28.0/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -34
  498. memorymaster-3.28.0/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -72
  499. memorymaster-3.28.0/memorymaster/conflict_resolver.py +0 -420
  500. memorymaster-3.28.0/memorymaster/context_hook.py +0 -2161
  501. memorymaster-3.28.0/memorymaster/context_optimizer.py +0 -395
  502. memorymaster-3.28.0/memorymaster/contradiction_probe.py +0 -536
  503. memorymaster-3.28.0/memorymaster/daily_notes.py +0 -186
  504. memorymaster-3.28.0/memorymaster/dashboard.py +0 -1568
  505. memorymaster-3.28.0/memorymaster/db_merge.py +0 -426
  506. memorymaster-3.28.0/memorymaster/delta_sync.py +0 -172
  507. memorymaster-3.28.0/memorymaster/dream_bridge.py +0 -715
  508. memorymaster-3.28.0/memorymaster/entity_extractor.py +0 -767
  509. memorymaster-3.28.0/memorymaster/entity_graph.py +0 -351
  510. memorymaster-3.28.0/memorymaster/federated_graphify.py +0 -154
  511. memorymaster-3.28.0/memorymaster/feedback.py +0 -247
  512. memorymaster-3.28.0/memorymaster/hook_log.py +0 -65
  513. memorymaster-3.28.0/memorymaster/jobs/compact_summaries.py +0 -442
  514. memorymaster-3.28.0/memorymaster/jobs/compactor.py +0 -295
  515. memorymaster-3.28.0/memorymaster/jobs/daydream_ingest.py +0 -375
  516. memorymaster-3.28.0/memorymaster/jobs/decay.py +0 -131
  517. memorymaster-3.28.0/memorymaster/jobs/dedup.py +0 -398
  518. memorymaster-3.28.0/memorymaster/jobs/deterministic.py +0 -376
  519. memorymaster-3.28.0/memorymaster/jobs/entity_graph_export.py +0 -210
  520. memorymaster-3.28.0/memorymaster/jobs/staleness.py +0 -227
  521. memorymaster-3.28.0/memorymaster/jobs/validator.py +0 -233
  522. memorymaster-3.28.0/memorymaster/key_rotator.py +0 -176
  523. memorymaster-3.28.0/memorymaster/lifecycle.py +0 -72
  524. memorymaster-3.28.0/memorymaster/llm_budget.py +0 -190
  525. memorymaster-3.28.0/memorymaster/llm_provider.py +0 -696
  526. memorymaster-3.28.0/memorymaster/llm_rerank.py +0 -201
  527. memorymaster-3.28.0/memorymaster/llm_steward.py +0 -1076
  528. memorymaster-3.28.0/memorymaster/mcp_server.py +0 -1586
  529. memorymaster-3.28.0/memorymaster/mcp_usage.py +0 -43
  530. memorymaster-3.28.0/memorymaster/media_processing.py +0 -199
  531. memorymaster-3.28.0/memorymaster/media_providers.py +0 -256
  532. memorymaster-3.28.0/memorymaster/migrations/0002_miner_state.py +0 -38
  533. memorymaster-3.28.0/memorymaster/migrations/0003_contradiction_verdicts.py +0 -42
  534. memorymaster-3.28.0/memorymaster/migrations/0007_rule_stats.py +0 -54
  535. memorymaster-3.28.0/memorymaster/migrations/__init__.py +0 -41
  536. memorymaster-3.28.0/memorymaster/migrations/runner.py +0 -268
  537. memorymaster-3.28.0/memorymaster/observability.py +0 -183
  538. memorymaster-3.28.0/memorymaster/operator.py +0 -1453
  539. memorymaster-3.28.0/memorymaster/operator_queue.py +0 -332
  540. memorymaster-3.28.0/memorymaster/plugins.py +0 -123
  541. memorymaster-3.28.0/memorymaster/policy.py +0 -133
  542. memorymaster-3.28.0/memorymaster/postgres_store.py +0 -2613
  543. memorymaster-3.28.0/memorymaster/qdrant_backend.py +0 -327
  544. memorymaster-3.28.0/memorymaster/qdrant_recall_fallback.py +0 -305
  545. memorymaster-3.28.0/memorymaster/qmd_bridge.py +0 -132
  546. memorymaster-3.28.0/memorymaster/query_cache.py +0 -184
  547. memorymaster-3.28.0/memorymaster/query_expansion.py +0 -184
  548. memorymaster-3.28.0/memorymaster/recall_fusion.py +0 -79
  549. memorymaster-3.28.0/memorymaster/retrieval.py +0 -528
  550. memorymaster-3.28.0/memorymaster/review.py +0 -121
  551. memorymaster-3.28.0/memorymaster/rl_trainer.py +0 -132
  552. memorymaster-3.28.0/memorymaster/rule_export.py +0 -157
  553. memorymaster-3.28.0/memorymaster/rule_miner.py +0 -612
  554. memorymaster-3.28.0/memorymaster/scheduler.py +0 -107
  555. memorymaster-3.28.0/memorymaster/schema.py +0 -11
  556. memorymaster-3.28.0/memorymaster/security.py +0 -558
  557. memorymaster-3.28.0/memorymaster/service.py +0 -1819
  558. memorymaster-3.28.0/memorymaster/session_tracker.py +0 -129
  559. memorymaster-3.28.0/memorymaster/setup_hooks.py +0 -404
  560. memorymaster-3.28.0/memorymaster/skill_evolver.py +0 -161
  561. memorymaster-3.28.0/memorymaster/snapshot.py +0 -403
  562. memorymaster-3.28.0/memorymaster/steward.py +0 -1739
  563. memorymaster-3.28.0/memorymaster/steward_classifier.py +0 -152
  564. memorymaster-3.28.0/memorymaster/steward_features.py +0 -344
  565. memorymaster-3.28.0/memorymaster/storage.py +0 -103
  566. memorymaster-3.28.0/memorymaster/store_factory.py +0 -19
  567. memorymaster-3.28.0/memorymaster/transcript_miner.py +0 -156
  568. memorymaster-3.28.0/memorymaster/vault_curator.py +0 -295
  569. memorymaster-3.28.0/memorymaster/vault_exporter.py +0 -223
  570. memorymaster-3.28.0/memorymaster/vault_linter.py +0 -451
  571. memorymaster-3.28.0/memorymaster/vault_query_capture.py +0 -108
  572. memorymaster-3.28.0/memorymaster/verbatim_cleanup.py +0 -207
  573. memorymaster-3.28.0/memorymaster/verbatim_recall.py +0 -296
  574. memorymaster-3.28.0/memorymaster/verbatim_store.py +0 -461
  575. memorymaster-3.28.0/memorymaster/wiki_engine.py +0 -962
  576. memorymaster-3.28.0/memorymaster/wiki_similarity.py +0 -621
  577. memorymaster-3.28.0/memorymaster/wiki_suggest.py +0 -270
  578. memorymaster-3.28.0/memorymaster/wiki_validate.py +0 -299
  579. memorymaster-3.28.0/memorymaster.egg-info/PKG-INFO +0 -250
  580. memorymaster-3.28.0/memorymaster.egg-info/SOURCES.txt +0 -439
  581. memorymaster-3.28.0/memorymaster.egg-info/entry_points.txt +0 -6
  582. memorymaster-3.28.0/memorymaster.egg-info/top_level.txt +0 -10
  583. memorymaster-3.28.0/pyproject.toml +0 -80
  584. memorymaster-3.28.0/scripts/agg_recall_latency.py +0 -184
  585. memorymaster-3.28.0/scripts/alert_operator_metrics.py +0 -477
  586. memorymaster-3.28.0/scripts/archive_watchkeeper_heartbeats.py +0 -81
  587. memorymaster-3.28.0/scripts/audit_dedupe_precision.py +0 -121
  588. memorymaster-3.28.0/scripts/autoresearch_daemon.py +0 -248
  589. memorymaster-3.28.0/scripts/backfill_entity_extraction.py +0 -327
  590. memorymaster-3.28.0/scripts/backfill_graph_store.py +0 -264
  591. memorymaster-3.28.0/scripts/backfill_stop_hook_citations.py +0 -137
  592. memorymaster-3.28.0/scripts/backtest_steward_classifier.py +0 -757
  593. memorymaster-3.28.0/scripts/build_steward_training_set.py +0 -119
  594. memorymaster-3.28.0/scripts/check_hook_template_drift.py +0 -143
  595. memorymaster-3.28.0/scripts/claude_to_turns.py +0 -416
  596. memorymaster-3.28.0/scripts/codex_live_to_turns.py +0 -460
  597. memorymaster-3.28.0/scripts/compaction_edge_cases.py +0 -294
  598. memorymaster-3.28.0/scripts/compaction_trace_report.py +0 -167
  599. memorymaster-3.28.0/scripts/compaction_trace_validate.py +0 -511
  600. memorymaster-3.28.0/scripts/confusion_matrix_eval.py +0 -177
  601. memorymaster-3.28.0/scripts/conversation_importer.py +0 -194
  602. memorymaster-3.28.0/scripts/conversation_to_turns.py +0 -532
  603. memorymaster-3.28.0/scripts/e2e_operator.py +0 -372
  604. memorymaster-3.28.0/scripts/email_live_to_turns.py +0 -376
  605. memorymaster-3.28.0/scripts/eval_bm25_sweep.py +0 -432
  606. memorymaster-3.28.0/scripts/eval_classify_f1.py +0 -226
  607. memorymaster-3.28.0/scripts/eval_memorymaster.py +0 -416
  608. memorymaster-3.28.0/scripts/eval_recall_precision_at_5.py +0 -468
  609. memorymaster-3.28.0/scripts/eval_recall_quality.py +0 -132
  610. memorymaster-3.28.0/scripts/eval_steward_pareto.py +0 -273
  611. memorymaster-3.28.0/scripts/eval_verbatim_recall.py +0 -216
  612. memorymaster-3.28.0/scripts/expand_recall_eval.py +0 -404
  613. memorymaster-3.28.0/scripts/generate_drill_signoff.py +0 -279
  614. memorymaster-3.28.0/scripts/git_to_turns.py +0 -407
  615. memorymaster-3.28.0/scripts/github_live_to_turns.py +0 -605
  616. memorymaster-3.28.0/scripts/gitnexus_to_claims.py +0 -180
  617. memorymaster-3.28.0/scripts/grid_recall_weights.py +0 -191
  618. memorymaster-3.28.0/scripts/index_claims_to_qdrant.py +0 -315
  619. memorymaster-3.28.0/scripts/ingest_planning_docs.py +0 -170
  620. memorymaster-3.28.0/scripts/jira_live_to_turns.py +0 -482
  621. memorymaster-3.28.0/scripts/label_prompts_with_judge.py +0 -211
  622. memorymaster-3.28.0/scripts/llm_benchmark.py +0 -264
  623. memorymaster-3.28.0/scripts/measure_dedupe_thresholds.py +0 -114
  624. memorymaster-3.28.0/scripts/merge_scope_variants.py +0 -216
  625. memorymaster-3.28.0/scripts/messages_to_turns.py +0 -445
  626. memorymaster-3.28.0/scripts/operator_metrics.py +0 -248
  627. memorymaster-3.28.0/scripts/precompute_candidates.py +0 -94
  628. memorymaster-3.28.0/scripts/recurring_incident_drill.py +0 -306
  629. memorymaster-3.28.0/scripts/release_readiness.py +0 -424
  630. memorymaster-3.28.0/scripts/run_codex_autologger.py +0 -94
  631. memorymaster-3.28.0/scripts/run_incident_drill.py +0 -657
  632. memorymaster-3.28.0/scripts/scheduled_ingest.py +0 -595
  633. memorymaster-3.28.0/scripts/setup-hooks.py +0 -10
  634. memorymaster-3.28.0/scripts/slack_live_to_turns.py +0 -475
  635. memorymaster-3.28.0/scripts/sync_hook_templates.py +0 -117
  636. memorymaster-3.28.0/scripts/tickets_to_turns.py +0 -373
  637. memorymaster-3.28.0/scripts/train_steward_classifier.py +0 -457
  638. memorymaster-3.28.0/scripts/webhook_to_turns.py +0 -452
  639. memorymaster-3.28.0/tests/bench_longmemeval.py +0 -1022
  640. memorymaster-3.28.0/tests/conftest.py +0 -103
  641. memorymaster-3.28.0/tests/integration/test_extract_llm_ollama_live.py +0 -49
  642. memorymaster-3.28.0/tests/test_access_control.py +0 -331
  643. memorymaster-3.28.0/tests/test_action_exporters.py +0 -68
  644. memorymaster-3.28.0/tests/test_action_extractor.py +0 -77
  645. memorymaster-3.28.0/tests/test_atlas_claim_extractor.py +0 -61
  646. memorymaster-3.28.0/tests/test_atlas_contract.py +0 -1010
  647. memorymaster-3.28.0/tests/test_atlas_source_schema.py +0 -181
  648. memorymaster-3.28.0/tests/test_auto_extractor.py +0 -309
  649. memorymaster-3.28.0/tests/test_auto_ingest_hook_citations.py +0 -102
  650. memorymaster-3.28.0/tests/test_auto_resolver.py +0 -134
  651. memorymaster-3.28.0/tests/test_auto_validate.py +0 -197
  652. memorymaster-3.28.0/tests/test_backend_parity.py +0 -167
  653. memorymaster-3.28.0/tests/test_bench_answer_prompt.py +0 -75
  654. memorymaster-3.28.0/tests/test_bm25_per_field.py +0 -222
  655. memorymaster-3.28.0/tests/test_calibration.py +0 -134
  656. memorymaster-3.28.0/tests/test_calibration_priors_applied.py +0 -20
  657. memorymaster-3.28.0/tests/test_candidate_dedupe.py +0 -296
  658. memorymaster-3.28.0/tests/test_claim_edges.py +0 -167
  659. memorymaster-3.28.0/tests/test_claim_links.py +0 -288
  660. memorymaster-3.28.0/tests/test_claim_paths.py +0 -306
  661. memorymaster-3.28.0/tests/test_claim_type_ranking.py +0 -84
  662. memorymaster-3.28.0/tests/test_cli_dry_run.py +0 -142
  663. memorymaster-3.28.0/tests/test_cli_handlers_extra.py +0 -308
  664. memorymaster-3.28.0/tests/test_cli_json_flag.py +0 -150
  665. memorymaster-3.28.0/tests/test_cli_ready.py +0 -103
  666. memorymaster-3.28.0/tests/test_cli_review_queue.py +0 -77
  667. memorymaster-3.28.0/tests/test_cli_subcommands.py +0 -189
  668. memorymaster-3.28.0/tests/test_closets.py +0 -143
  669. memorymaster-3.28.0/tests/test_closets_recall_integration.py +0 -50
  670. memorymaster-3.28.0/tests/test_compact_summaries.py +0 -284
  671. memorymaster-3.28.0/tests/test_compact_summaries_sensitivity.py +0 -69
  672. memorymaster-3.28.0/tests/test_compaction_trace.py +0 -141
  673. memorymaster-3.28.0/tests/test_compactor_artifact_order.py +0 -40
  674. memorymaster-3.28.0/tests/test_config.py +0 -184
  675. memorymaster-3.28.0/tests/test_conflict_resolver.py +0 -457
  676. memorymaster-3.28.0/tests/test_conflict_resolver_extra.py +0 -415
  677. memorymaster-3.28.0/tests/test_connection_retry.py +0 -127
  678. memorymaster-3.28.0/tests/test_context_hook.py +0 -260
  679. memorymaster-3.28.0/tests/test_context_hook_extra.py +0 -643
  680. memorymaster-3.28.0/tests/test_context_optimizer.py +0 -200
  681. memorymaster-3.28.0/tests/test_context_optimizer_provider.py +0 -145
  682. memorymaster-3.28.0/tests/test_contradiction_probe.py +0 -371
  683. memorymaster-3.28.0/tests/test_dashboard.py +0 -344
  684. memorymaster-3.28.0/tests/test_dashboard_auth.py +0 -290
  685. memorymaster-3.28.0/tests/test_dashboard_coverage.py +0 -321
  686. memorymaster-3.28.0/tests/test_dashboard_latency.py +0 -111
  687. memorymaster-3.28.0/tests/test_dashboard_lineage.py +0 -70
  688. memorymaster-3.28.0/tests/test_dashboard_review_queue.py +0 -143
  689. memorymaster-3.28.0/tests/test_daydream_ingest.py +0 -123
  690. memorymaster-3.28.0/tests/test_db_merge_audit_fixes.py +0 -184
  691. memorymaster-3.28.0/tests/test_db_merge_confidence_conflict.py +0 -71
  692. memorymaster-3.28.0/tests/test_db_merge_coverage_v2.py +0 -260
  693. memorymaster-3.28.0/tests/test_db_merge_extra.py +0 -237
  694. memorymaster-3.28.0/tests/test_decay_coverage.py +0 -212
  695. memorymaster-3.28.0/tests/test_decay_respects_pinned.py +0 -120
  696. memorymaster-3.28.0/tests/test_dedup.py +0 -321
  697. memorymaster-3.28.0/tests/test_dedup_cli.py +0 -120
  698. memorymaster-3.28.0/tests/test_dedup_conflict_disambiguation.py +0 -52
  699. memorymaster-3.28.0/tests/test_delta_sync.py +0 -261
  700. memorymaster-3.28.0/tests/test_delta_sync_extra.py +0 -392
  701. memorymaster-3.28.0/tests/test_deterministic_predicates.py +0 -72
  702. memorymaster-3.28.0/tests/test_dream_bridge_coverage_v2.py +0 -186
  703. memorymaster-3.28.0/tests/test_dream_bridge_extra.py +0 -229
  704. memorymaster-3.28.0/tests/test_dream_bridge_sensitivity.py +0 -76
  705. memorymaster-3.28.0/tests/test_dream_bridge_subject_sensitivity.py +0 -83
  706. memorymaster-3.28.0/tests/test_embeddings_coverage.py +0 -127
  707. memorymaster-3.28.0/tests/test_embeddings_degraded_signal.py +0 -53
  708. memorymaster-3.28.0/tests/test_entity_extractor.py +0 -150
  709. memorymaster-3.28.0/tests/test_entity_extractor_llm.py +0 -296
  710. memorymaster-3.28.0/tests/test_entity_graph.py +0 -309
  711. memorymaster-3.28.0/tests/test_entity_graph_export.py +0 -147
  712. memorymaster-3.28.0/tests/test_entity_new_kinds.py +0 -241
  713. memorymaster-3.28.0/tests/test_entity_regex_v3.py +0 -71
  714. memorymaster-3.28.0/tests/test_entity_registry.py +0 -406
  715. memorymaster-3.28.0/tests/test_entity_registry_extra.py +0 -271
  716. memorymaster-3.28.0/tests/test_entity_registry_merge_atomicity.py +0 -94
  717. memorymaster-3.28.0/tests/test_eval_harness.py +0 -291
  718. memorymaster-3.28.0/tests/test_events_schema.py +0 -243
  719. memorymaster-3.28.0/tests/test_extract_llm_ollama.py +0 -140
  720. memorymaster-3.28.0/tests/test_federated_graphify_mcp.py +0 -136
  721. memorymaster-3.28.0/tests/test_federated_query_safety.py +0 -91
  722. memorymaster-3.28.0/tests/test_feedback.py +0 -278
  723. memorymaster-3.28.0/tests/test_floor_gate.py +0 -90
  724. memorymaster-3.28.0/tests/test_fts5_search.py +0 -169
  725. memorymaster-3.28.0/tests/test_graph_distance.py +0 -233
  726. memorymaster-3.28.0/tests/test_graph_harvest.py +0 -348
  727. memorymaster-3.28.0/tests/test_graph_store.py +0 -322
  728. memorymaster-3.28.0/tests/test_handler_regressions.py +0 -158
  729. memorymaster-3.28.0/tests/test_human_id.py +0 -282
  730. memorymaster-3.28.0/tests/test_integration_workflows.py +0 -534
  731. memorymaster-3.28.0/tests/test_key_rotator.py +0 -159
  732. memorymaster-3.28.0/tests/test_lifecycle.py +0 -75
  733. memorymaster-3.28.0/tests/test_lifecycle_extra.py +0 -314
  734. memorymaster-3.28.0/tests/test_lifecycle_supersede_invariant.py +0 -87
  735. memorymaster-3.28.0/tests/test_llm_budget.py +0 -232
  736. memorymaster-3.28.0/tests/test_llm_concurrency_fixes.py +0 -253
  737. memorymaster-3.28.0/tests/test_llm_fallback.py +0 -234
  738. memorymaster-3.28.0/tests/test_llm_provider_claude_cli.py +0 -186
  739. memorymaster-3.28.0/tests/test_llm_provider_extra.py +0 -716
  740. memorymaster-3.28.0/tests/test_llm_provider_key_rotation.py +0 -80
  741. memorymaster-3.28.0/tests/test_llm_steward_coverage.py +0 -112
  742. memorymaster-3.28.0/tests/test_llm_steward_key_rotation.py +0 -266
  743. memorymaster-3.28.0/tests/test_llm_steward_scope.py +0 -191
  744. memorymaster-3.28.0/tests/test_mcp_filter_bypass.py +0 -91
  745. memorymaster-3.28.0/tests/test_mcp_helpers.py +0 -412
  746. memorymaster-3.28.0/tests/test_mcp_path_policy.py +0 -206
  747. memorymaster-3.28.0/tests/test_mcp_rate_limit.py +0 -101
  748. memorymaster-3.28.0/tests/test_mcp_server_security_cluster.py +0 -187
  749. memorymaster-3.28.0/tests/test_mcp_server_validation.py +0 -49
  750. memorymaster-3.28.0/tests/test_mcp_usage.py +0 -95
  751. memorymaster-3.28.0/tests/test_media_processing.py +0 -86
  752. memorymaster-3.28.0/tests/test_meta_decisions.py +0 -125
  753. memorymaster-3.28.0/tests/test_metrics_exporter.py +0 -112
  754. memorymaster-3.28.0/tests/test_migrations.py +0 -292
  755. memorymaster-3.28.0/tests/test_misc_correctness_cluster.py +0 -92
  756. memorymaster-3.28.0/tests/test_observability.py +0 -47
  757. memorymaster-3.28.0/tests/test_observability_extra.py +0 -335
  758. memorymaster-3.28.0/tests/test_obsidian_mind_patterns.py +0 -386
  759. memorymaster-3.28.0/tests/test_operator.py +0 -379
  760. memorymaster-3.28.0/tests/test_operator_queue.py +0 -498
  761. memorymaster-3.28.0/tests/test_plugins.py +0 -284
  762. memorymaster-3.28.0/tests/test_policy_coverage.py +0 -56
  763. memorymaster-3.28.0/tests/test_policy_mode_env.py +0 -91
  764. memorymaster-3.28.0/tests/test_postgres_parity.py +0 -735
  765. memorymaster-3.28.0/tests/test_qdrant_backend.py +0 -320
  766. memorymaster-3.28.0/tests/test_qmd_bridge.py +0 -188
  767. memorymaster-3.28.0/tests/test_qrels_regression.py +0 -88
  768. memorymaster-3.28.0/tests/test_query_cache.py +0 -192
  769. memorymaster-3.28.0/tests/test_query_classifier.py +0 -284
  770. memorymaster-3.28.0/tests/test_query_expansion.py +0 -264
  771. memorymaster-3.28.0/tests/test_read_visibility_filter.py +0 -156
  772. memorymaster-3.28.0/tests/test_recall_analysis.py +0 -306
  773. memorymaster-3.28.0/tests/test_recall_entity_fanout.py +0 -459
  774. memorymaster-3.28.0/tests/test_recall_fusion.py +0 -94
  775. memorymaster-3.28.0/tests/test_recall_latency.py +0 -275
  776. memorymaster-3.28.0/tests/test_recall_precision_at_5.py +0 -261
  777. memorymaster-3.28.0/tests/test_recall_tokenizer.py +0 -302
  778. memorymaster-3.28.0/tests/test_recall_vector_fallback.py +0 -306
  779. memorymaster-3.28.0/tests/test_reliability_hardening.py +0 -120
  780. memorymaster-3.28.0/tests/test_resolvers_concurrent_supersede.py +0 -148
  781. memorymaster-3.28.0/tests/test_retrieval_extra.py +0 -320
  782. memorymaster-3.28.0/tests/test_retrieval_profile.py +0 -120
  783. memorymaster-3.28.0/tests/test_retrieval_profiles.py +0 -142
  784. memorymaster-3.28.0/tests/test_retrieval_rrf_tiebreaker.py +0 -84
  785. memorymaster-3.28.0/tests/test_retrieval_weights.py +0 -69
  786. memorymaster-3.28.0/tests/test_review.py +0 -113
  787. memorymaster-3.28.0/tests/test_rl_trainer.py +0 -232
  788. memorymaster-3.28.0/tests/test_rrf_auto_gate.py +0 -362
  789. memorymaster-3.28.0/tests/test_rule_claims.py +0 -181
  790. memorymaster-3.28.0/tests/test_rule_confidence_bootstrap.py +0 -210
  791. memorymaster-3.28.0/tests/test_rule_miner.py +0 -365
  792. memorymaster-3.28.0/tests/test_rules_export.py +0 -152
  793. memorymaster-3.28.0/tests/test_scheduler.py +0 -160
  794. memorymaster-3.28.0/tests/test_schema.py +0 -14
  795. memorymaster-3.28.0/tests/test_scope_boost.py +0 -298
  796. memorymaster-3.28.0/tests/test_scope_utils.py +0 -112
  797. memorymaster-3.28.0/tests/test_security_access.py +0 -219
  798. memorymaster-3.28.0/tests/test_security_patterns.py +0 -249
  799. memorymaster-3.28.0/tests/test_sensitivity_filter_adversarial.py +0 -93
  800. memorymaster-3.28.0/tests/test_sensitivity_filter_adversarial_v2.py +0 -153
  801. memorymaster-3.28.0/tests/test_sensitivity_filter_t07.py +0 -104
  802. memorymaster-3.28.0/tests/test_service_coverage.py +0 -263
  803. memorymaster-3.28.0/tests/test_service_embedding_toctou.py +0 -109
  804. memorymaster-3.28.0/tests/test_session_tracker.py +0 -337
  805. memorymaster-3.28.0/tests/test_snapshot.py +0 -302
  806. memorymaster-3.28.0/tests/test_snapshot_roundtrip.py +0 -168
  807. memorymaster-3.28.0/tests/test_sqlite_core.py +0 -264
  808. memorymaster-3.28.0/tests/test_staleness.py +0 -335
  809. memorymaster-3.28.0/tests/test_stealth_mode.py +0 -135
  810. memorymaster-3.28.0/tests/test_steward.py +0 -348
  811. memorymaster-3.28.0/tests/test_steward_classifier.py +0 -262
  812. memorymaster-3.28.0/tests/test_steward_contradiction_phase.py +0 -251
  813. memorymaster-3.28.0/tests/test_steward_daydream_hook.py +0 -116
  814. memorymaster-3.28.0/tests/test_steward_features.py +0 -174
  815. memorymaster-3.28.0/tests/test_steward_features_v3.py +0 -255
  816. memorymaster-3.28.0/tests/test_steward_resolution_parity.py +0 -219
  817. memorymaster-3.28.0/tests/test_steward_resolvers_audit_fixes.py +0 -236
  818. memorymaster-3.28.0/tests/test_storage_concurrency.py +0 -112
  819. memorymaster-3.28.0/tests/test_storage_extra.py +0 -154
  820. memorymaster-3.28.0/tests/test_storage_internals_audit.py +0 -124
  821. memorymaster-3.28.0/tests/test_storage_parity.py +0 -287
  822. memorymaster-3.28.0/tests/test_store_factory.py +0 -35
  823. memorymaster-3.28.0/tests/test_tenant_isolation.py +0 -167
  824. memorymaster-3.28.0/tests/test_turn_schema.py +0 -92
  825. memorymaster-3.28.0/tests/test_two_pass_recall.py +0 -86
  826. memorymaster-3.28.0/tests/test_v311_fixes.py +0 -172
  827. memorymaster-3.28.0/tests/test_v313_e2e.py +0 -265
  828. memorymaster-3.28.0/tests/test_v313_run_cycle_dedupe.py +0 -176
  829. memorymaster-3.28.0/tests/test_v390_e2e.py +0 -151
  830. memorymaster-3.28.0/tests/test_v391_strict_warnings.py +0 -73
  831. memorymaster-3.28.0/tests/test_vault_exporter.py +0 -381
  832. memorymaster-3.28.0/tests/test_vault_linter_extra.py +0 -298
  833. memorymaster-3.28.0/tests/test_vault_linter_orphan.py +0 -91
  834. memorymaster-3.28.0/tests/test_vault_linter_weak_link.py +0 -43
  835. memorymaster-3.28.0/tests/test_vault_query_capture_scope.py +0 -38
  836. memorymaster-3.28.0/tests/test_vector_search.py +0 -367
  837. memorymaster-3.28.0/tests/test_verbatim_cleanup.py +0 -232
  838. memorymaster-3.28.0/tests/test_verbatim_dedup.py +0 -228
  839. memorymaster-3.28.0/tests/test_verbatim_perf_index.py +0 -234
  840. memorymaster-3.28.0/tests/test_verbatim_recall.py +0 -321
  841. memorymaster-3.28.0/tests/test_verbatim_store.py +0 -67
  842. memorymaster-3.28.0/tests/test_verbatim_store_qdrant.py +0 -148
  843. memorymaster-3.28.0/tests/test_webhook.py +0 -167
  844. memorymaster-3.28.0/tests/test_webhook_hmac.py +0 -216
  845. memorymaster-3.28.0/tests/test_whatsapp_importer.py +0 -106
  846. memorymaster-3.28.0/tests/test_wiki_autopromote.py +0 -101
  847. memorymaster-3.28.0/tests/test_wiki_backfill_bindings_backend.py +0 -94
  848. memorymaster-3.28.0/tests/test_wiki_binding.py +0 -182
  849. memorymaster-3.28.0/tests/test_wiki_engine_absorb_fixes.py +0 -187
  850. memorymaster-3.28.0/tests/test_wiki_engine_extra.py +0 -410
  851. memorymaster-3.28.0/tests/test_wiki_engine_idempotency.py +0 -170
  852. memorymaster-3.28.0/tests/test_wiki_explored_and_contradictions.py +0 -229
  853. memorymaster-3.28.0/tests/test_wiki_freshness.py +0 -284
  854. memorymaster-3.28.0/tests/test_wiki_similarity_multiscope.py +0 -272
  855. memorymaster-3.28.0/tests/test_wiki_suggest.py +0 -124
  856. memorymaster-3.28.0/tests/test_wiki_validate_cli.py +0 -193
  857. memorymaster-3.28.0/tests/test_wiki_validate_desc_bound.py +0 -30
  858. {memorymaster-3.28.0 → memorymaster-4.0.0}/LICENSE +0 -0
  859. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/action_exporters.py +0 -0
  860. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/atlas_contract.py +0 -0
  861. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/__init__.py +0 -0
  862. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/whatsapp.py +0 -0
  863. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/config_templates/claude-md-append.md +0 -0
  864. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
  865. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
  866. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
  867. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
  868. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/core}/config.py +0 -0
  869. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/core}/models.py +0 -0
  870. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/core}/retry.py +0 -0
  871. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/core}/scope_utils.py +0 -0
  872. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/core}/webhook.py +0 -0
  873. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/govern}/candidate_dedupe.py +0 -0
  874. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/__init__.py +0 -0
  875. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/calibration.py +0 -0
  876. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/extractor.py +0 -0
  877. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/auto_extractor.py +0 -0
  878. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/entity_registry.py +0 -0
  879. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/rules.py +0 -0
  880. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_bases.py +0 -0
  881. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_log.py +0 -0
  882. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_synthesis.py +0 -0
  883. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/wiki_freshness.py +0 -0
  884. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/recall}/embeddings.py +0 -0
  885. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/recall}/graph_store.py +0 -0
  886. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/recall}/query_classifier.py +0 -0
  887. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/recall}/recall_tokenizer.py +0 -0
  888. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/schema.sql +0 -0
  889. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster/schema_postgres.sql +0 -0
  890. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0001_initial.py +0 -0
  891. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0004_query_cache.py +0 -0
  892. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0006_verbatim_session_content_index.py +0 -0
  893. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/dashboard_auth.py +0 -0
  894. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/mcp_path_policy.py +0 -0
  895. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/metrics_exporter.py +0 -0
  896. {memorymaster-3.28.0/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/turn_schema.py +0 -0
  897. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster.egg-info/dependency_links.txt +0 -0
  898. {memorymaster-3.28.0 → memorymaster-4.0.0}/memorymaster.egg-info/requires.txt +0 -0
  899. {memorymaster-3.28.0 → memorymaster-4.0.0}/setup.cfg +0 -0
  900. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_auto_ingest_hook_schema.py +0 -0
  901. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_classify_hook_f1.py +0 -0
  902. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_classify_hook_latency.py +0 -0
  903. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_claude_to_turns.py +0 -0
  904. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_confusion_matrix_eval.py +0 -0
  905. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_connectors.py +0 -0
  906. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_conversation_to_turns.py +0 -0
  907. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_hook_env_isolation.py +0 -0
  908. {memorymaster-3.28.0 → memorymaster-4.0.0}/tests/test_incident_drill_runner.py +0 -0
  909. {memorymaster-3.28.0 → 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