memorymaster 3.17.0__tar.gz → 3.17.1__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 (367) hide show
  1. {memorymaster-3.17.0/memorymaster.egg-info → memorymaster-3.17.1}/PKG-INFO +1 -1
  2. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/steward.py +22 -0
  3. {memorymaster-3.17.0 → memorymaster-3.17.1/memorymaster.egg-info}/PKG-INFO +1 -1
  4. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster.egg-info/SOURCES.txt +1 -0
  5. {memorymaster-3.17.0 → memorymaster-3.17.1}/pyproject.toml +1 -1
  6. memorymaster-3.17.1/tests/test_steward_daydream_hook.py +116 -0
  7. {memorymaster-3.17.0 → memorymaster-3.17.1}/LICENSE +0 -0
  8. {memorymaster-3.17.0 → memorymaster-3.17.1}/README.md +0 -0
  9. {memorymaster-3.17.0 → memorymaster-3.17.1}/artifacts/bm25-per-field-eval-harness.py +0 -0
  10. {memorymaster-3.17.0 → memorymaster-3.17.1}/benchmarks/longmemeval_runner.py +0 -0
  11. {memorymaster-3.17.0 → memorymaster-3.17.1}/benchmarks/longmemeval_vector_runner.py +0 -0
  12. {memorymaster-3.17.0 → memorymaster-3.17.1}/benchmarks/perf_smoke.py +0 -0
  13. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/__init__.py +0 -0
  14. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/__main__.py +0 -0
  15. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_lifecycle.py +0 -0
  16. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_read.py +0 -0
  17. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_schema.py +0 -0
  18. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_shared.py +0 -0
  19. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_sources.py +0 -0
  20. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/_storage_write_claims.py +0 -0
  21. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/access_control.py +0 -0
  22. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/action_exporters.py +0 -0
  23. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/action_extractor.py +0 -0
  24. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/atlas_claim_extractor.py +0 -0
  25. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/atlas_contract.py +0 -0
  26. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/auto_extractor.py +0 -0
  27. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/auto_resolver.py +0 -0
  28. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/candidate_dedupe.py +0 -0
  29. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/claim_edges.py +0 -0
  30. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/claim_verifier.py +0 -0
  31. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/cli.py +0 -0
  32. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/cli_handlers_basic.py +0 -0
  33. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/cli_handlers_curation.py +0 -0
  34. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/cli_helpers.py +0 -0
  35. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/closets.py +0 -0
  36. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config.py +0 -0
  37. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/claude-md-append.md +0 -0
  38. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/codex-agents-md-append.md +0 -0
  39. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -0
  40. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
  41. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +0 -0
  42. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
  43. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -0
  44. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
  45. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -0
  46. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
  47. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/conflict_resolver.py +0 -0
  48. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/connectors/__init__.py +0 -0
  49. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/connectors/whatsapp.py +0 -0
  50. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/context_hook.py +0 -0
  51. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/context_optimizer.py +0 -0
  52. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/daily_notes.py +0 -0
  53. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/dashboard.py +0 -0
  54. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/db_merge.py +0 -0
  55. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/dream_bridge.py +0 -0
  56. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/embeddings.py +0 -0
  57. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/entity_extractor.py +0 -0
  58. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/entity_graph.py +0 -0
  59. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/entity_registry.py +0 -0
  60. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/federated_graphify.py +0 -0
  61. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/feedback.py +0 -0
  62. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/graph_store.py +0 -0
  63. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/hook_log.py +0 -0
  64. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/__init__.py +0 -0
  65. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/calibration.py +0 -0
  66. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/compact_summaries.py +0 -0
  67. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/compactor.py +0 -0
  68. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/daydream_ingest.py +0 -0
  69. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/decay.py +0 -0
  70. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/dedup.py +0 -0
  71. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/deterministic.py +0 -0
  72. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/entity_graph_export.py +0 -0
  73. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/extractor.py +0 -0
  74. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/staleness.py +0 -0
  75. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/jobs/validator.py +0 -0
  76. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/key_rotator.py +0 -0
  77. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/lifecycle.py +0 -0
  78. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/llm_provider.py +0 -0
  79. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/llm_rerank.py +0 -0
  80. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/llm_steward.py +0 -0
  81. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/mcp_server.py +0 -0
  82. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/mcp_usage.py +0 -0
  83. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/media_processing.py +0 -0
  84. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/media_providers.py +0 -0
  85. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/metrics_exporter.py +0 -0
  86. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/models.py +0 -0
  87. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/observability.py +0 -0
  88. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/operator.py +0 -0
  89. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/operator_queue.py +0 -0
  90. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/plugins.py +0 -0
  91. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/policy.py +0 -0
  92. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/postgres_store.py +0 -0
  93. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/qdrant_backend.py +0 -0
  94. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/qdrant_recall_fallback.py +0 -0
  95. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/qmd_bridge.py +0 -0
  96. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/query_classifier.py +0 -0
  97. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/query_expansion.py +0 -0
  98. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/recall_fusion.py +0 -0
  99. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/recall_tokenizer.py +0 -0
  100. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/retrieval.py +0 -0
  101. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/retry.py +0 -0
  102. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/review.py +0 -0
  103. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/rl_trainer.py +0 -0
  104. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/scheduler.py +0 -0
  105. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/schema.py +0 -0
  106. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/schema.sql +0 -0
  107. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/schema_postgres.sql +0 -0
  108. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/scope_utils.py +0 -0
  109. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/security.py +0 -0
  110. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/service.py +0 -0
  111. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/session_tracker.py +0 -0
  112. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/setup_hooks.py +0 -0
  113. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/skill_evolver.py +0 -0
  114. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/snapshot.py +0 -0
  115. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/steward_classifier.py +0 -0
  116. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/steward_features.py +0 -0
  117. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/storage.py +0 -0
  118. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/store_factory.py +0 -0
  119. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/transcript_miner.py +0 -0
  120. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/turn_schema.py +0 -0
  121. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_bases.py +0 -0
  122. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_curator.py +0 -0
  123. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_exporter.py +0 -0
  124. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_linter.py +0 -0
  125. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_log.py +0 -0
  126. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_query_capture.py +0 -0
  127. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/vault_synthesis.py +0 -0
  128. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/verbatim_recall.py +0 -0
  129. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/verbatim_store.py +0 -0
  130. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/webhook.py +0 -0
  131. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/wiki_engine.py +0 -0
  132. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/wiki_freshness.py +0 -0
  133. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/wiki_similarity.py +0 -0
  134. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/wiki_suggest.py +0 -0
  135. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster/wiki_validate.py +0 -0
  136. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster.egg-info/dependency_links.txt +0 -0
  137. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster.egg-info/entry_points.txt +0 -0
  138. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster.egg-info/requires.txt +0 -0
  139. {memorymaster-3.17.0 → memorymaster-3.17.1}/memorymaster.egg-info/top_level.txt +0 -0
  140. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/agg_recall_latency.py +0 -0
  141. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/alert_operator_metrics.py +0 -0
  142. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/audit_dedupe_precision.py +0 -0
  143. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/autoresearch_daemon.py +0 -0
  144. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/backfill_entity_extraction.py +0 -0
  145. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/backfill_graph_store.py +0 -0
  146. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/backfill_stop_hook_citations.py +0 -0
  147. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/backtest_steward_classifier.py +0 -0
  148. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/build_steward_training_set.py +0 -0
  149. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/check_hook_template_drift.py +0 -0
  150. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/claude_to_turns.py +0 -0
  151. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/codex_live_to_turns.py +0 -0
  152. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/compaction_edge_cases.py +0 -0
  153. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/compaction_trace_report.py +0 -0
  154. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/compaction_trace_validate.py +0 -0
  155. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/confusion_matrix_eval.py +0 -0
  156. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/conversation_importer.py +0 -0
  157. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/conversation_to_turns.py +0 -0
  158. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/e2e_operator.py +0 -0
  159. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/email_live_to_turns.py +0 -0
  160. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_bm25_sweep.py +0 -0
  161. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_classify_f1.py +0 -0
  162. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_memorymaster.py +0 -0
  163. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_recall_precision_at_5.py +0 -0
  164. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_recall_quality.py +0 -0
  165. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_steward_pareto.py +0 -0
  166. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/eval_verbatim_recall.py +0 -0
  167. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/expand_recall_eval.py +0 -0
  168. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/generate_drill_signoff.py +0 -0
  169. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/git_to_turns.py +0 -0
  170. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/github_live_to_turns.py +0 -0
  171. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/gitnexus_to_claims.py +0 -0
  172. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/grid_recall_weights.py +0 -0
  173. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/index_claims_to_qdrant.py +0 -0
  174. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/ingest_planning_docs.py +0 -0
  175. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/jira_live_to_turns.py +0 -0
  176. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/label_prompts_with_judge.py +0 -0
  177. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/llm_benchmark.py +0 -0
  178. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/measure_dedupe_thresholds.py +0 -0
  179. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/merge_scope_variants.py +0 -0
  180. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/messages_to_turns.py +0 -0
  181. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/operator_metrics.py +0 -0
  182. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/precompute_candidates.py +0 -0
  183. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/recurring_incident_drill.py +0 -0
  184. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/release_readiness.py +0 -0
  185. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/run_codex_autologger.py +0 -0
  186. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/run_incident_drill.py +0 -0
  187. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/scheduled_ingest.py +0 -0
  188. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/setup-hooks.py +0 -0
  189. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/slack_live_to_turns.py +0 -0
  190. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/sync_hook_templates.py +0 -0
  191. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/tickets_to_turns.py +0 -0
  192. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/train_steward_classifier.py +0 -0
  193. {memorymaster-3.17.0 → memorymaster-3.17.1}/scripts/webhook_to_turns.py +0 -0
  194. {memorymaster-3.17.0 → memorymaster-3.17.1}/setup.cfg +0 -0
  195. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/bench_longmemeval.py +0 -0
  196. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/conftest.py +0 -0
  197. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/integration/test_extract_llm_ollama_live.py +0 -0
  198. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_access_control.py +0 -0
  199. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_action_exporters.py +0 -0
  200. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_action_extractor.py +0 -0
  201. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_atlas_claim_extractor.py +0 -0
  202. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_atlas_contract.py +0 -0
  203. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_atlas_source_schema.py +0 -0
  204. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_auto_extractor.py +0 -0
  205. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_auto_ingest_hook_citations.py +0 -0
  206. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_auto_ingest_hook_schema.py +0 -0
  207. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_auto_resolver.py +0 -0
  208. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_auto_validate.py +0 -0
  209. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_bm25_per_field.py +0 -0
  210. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_calibration.py +0 -0
  211. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_calibration_priors_applied.py +0 -0
  212. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_candidate_dedupe.py +0 -0
  213. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_claim_edges.py +0 -0
  214. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_claim_links.py +0 -0
  215. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_claim_type_ranking.py +0 -0
  216. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_classify_hook_f1.py +0 -0
  217. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_classify_hook_latency.py +0 -0
  218. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_claude_to_turns.py +0 -0
  219. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_cli_dry_run.py +0 -0
  220. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_cli_json_flag.py +0 -0
  221. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_cli_ready.py +0 -0
  222. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_cli_review_queue.py +0 -0
  223. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_cli_subcommands.py +0 -0
  224. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_closets.py +0 -0
  225. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_closets_recall_integration.py +0 -0
  226. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_compact_summaries.py +0 -0
  227. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_compact_summaries_sensitivity.py +0 -0
  228. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_compaction_trace.py +0 -0
  229. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_compactor_artifact_order.py +0 -0
  230. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_config.py +0 -0
  231. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_conflict_resolver.py +0 -0
  232. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_confusion_matrix_eval.py +0 -0
  233. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_connection_retry.py +0 -0
  234. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_connectors.py +0 -0
  235. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_context_hook.py +0 -0
  236. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_context_optimizer.py +0 -0
  237. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_context_optimizer_provider.py +0 -0
  238. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_conversation_to_turns.py +0 -0
  239. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dashboard.py +0 -0
  240. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dashboard_coverage.py +0 -0
  241. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dashboard_latency.py +0 -0
  242. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dashboard_lineage.py +0 -0
  243. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dashboard_review_queue.py +0 -0
  244. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_daydream_ingest.py +0 -0
  245. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_db_merge_confidence_conflict.py +0 -0
  246. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_db_merge_coverage_v2.py +0 -0
  247. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_decay_coverage.py +0 -0
  248. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_decay_respects_pinned.py +0 -0
  249. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dedup.py +0 -0
  250. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dedup_cli.py +0 -0
  251. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dedup_conflict_disambiguation.py +0 -0
  252. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_deterministic_predicates.py +0 -0
  253. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dream_bridge_coverage_v2.py +0 -0
  254. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_dream_bridge_sensitivity.py +0 -0
  255. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_embeddings_coverage.py +0 -0
  256. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_extractor.py +0 -0
  257. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_extractor_llm.py +0 -0
  258. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_graph.py +0 -0
  259. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_graph_export.py +0 -0
  260. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_new_kinds.py +0 -0
  261. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_regex_v3.py +0 -0
  262. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_entity_registry.py +0 -0
  263. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_eval_harness.py +0 -0
  264. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_events_schema.py +0 -0
  265. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_extract_llm_ollama.py +0 -0
  266. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_federated_graphify_mcp.py +0 -0
  267. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_federated_query_safety.py +0 -0
  268. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_feedback.py +0 -0
  269. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_fts5_search.py +0 -0
  270. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_graph_distance.py +0 -0
  271. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_graph_store.py +0 -0
  272. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_handler_regressions.py +0 -0
  273. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_hook_env_isolation.py +0 -0
  274. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_human_id.py +0 -0
  275. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_incident_drill_runner.py +0 -0
  276. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_integration_workflows.py +0 -0
  277. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_key_rotator.py +0 -0
  278. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_lifecycle.py +0 -0
  279. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_lifecycle_supersede_invariant.py +0 -0
  280. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_llm_fallback.py +0 -0
  281. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_llm_provider_claude_cli.py +0 -0
  282. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_llm_provider_key_rotation.py +0 -0
  283. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_llm_steward_coverage.py +0 -0
  284. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_llm_steward_key_rotation.py +0 -0
  285. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_mcp_filter_bypass.py +0 -0
  286. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_mcp_helpers.py +0 -0
  287. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_mcp_rate_limit.py +0 -0
  288. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_mcp_server_validation.py +0 -0
  289. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_mcp_usage.py +0 -0
  290. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_media_processing.py +0 -0
  291. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_meta_decisions.py +0 -0
  292. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_metrics_exporter.py +0 -0
  293. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_observability.py +0 -0
  294. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_obsidian_mind_patterns.py +0 -0
  295. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_operator.py +0 -0
  296. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_operator_queue.py +0 -0
  297. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_perf_smoke_config.py +0 -0
  298. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_plugins.py +0 -0
  299. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_policy_coverage.py +0 -0
  300. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_policy_mode_env.py +0 -0
  301. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_postgres_parity.py +0 -0
  302. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_qdrant_backend.py +0 -0
  303. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_qmd_bridge.py +0 -0
  304. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_query_classifier.py +0 -0
  305. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_query_expansion.py +0 -0
  306. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_entity_fanout.py +0 -0
  307. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_fusion.py +0 -0
  308. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_latency.py +0 -0
  309. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_precision_at_5.py +0 -0
  310. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_tokenizer.py +0 -0
  311. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_recall_vector_fallback.py +0 -0
  312. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_reliability_hardening.py +0 -0
  313. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_resolvers_concurrent_supersede.py +0 -0
  314. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_retrieval_profile.py +0 -0
  315. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_retrieval_rrf_tiebreaker.py +0 -0
  316. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_retrieval_weights.py +0 -0
  317. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_review.py +0 -0
  318. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_rl_trainer.py +0 -0
  319. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_rrf_auto_gate.py +0 -0
  320. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_scheduler.py +0 -0
  321. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_schema.py +0 -0
  322. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_scope_boost.py +0 -0
  323. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_scope_utils.py +0 -0
  324. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_security_access.py +0 -0
  325. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_security_patterns.py +0 -0
  326. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_sensitivity_filter_adversarial.py +0 -0
  327. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_sensitivity_filter_adversarial_v2.py +0 -0
  328. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_sensitivity_filter_t07.py +0 -0
  329. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_service_coverage.py +0 -0
  330. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_session_tracker.py +0 -0
  331. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_snapshot.py +0 -0
  332. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_snapshot_roundtrip.py +0 -0
  333. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_sqlite_core.py +0 -0
  334. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_staleness.py +0 -0
  335. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_stealth_mode.py +0 -0
  336. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_steward.py +0 -0
  337. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_steward_classifier.py +0 -0
  338. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_steward_features.py +0 -0
  339. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_steward_features_v3.py +0 -0
  340. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_steward_resolution_parity.py +0 -0
  341. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_storage_parity.py +0 -0
  342. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_store_factory.py +0 -0
  343. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_tenant_isolation.py +0 -0
  344. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_turn_schema.py +0 -0
  345. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_two_pass_recall.py +0 -0
  346. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_v311_fixes.py +0 -0
  347. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_v313_e2e.py +0 -0
  348. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_v313_run_cycle_dedupe.py +0 -0
  349. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_v390_e2e.py +0 -0
  350. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_v391_strict_warnings.py +0 -0
  351. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_vault_exporter.py +0 -0
  352. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_vault_linter_orphan.py +0 -0
  353. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_vector_search.py +0 -0
  354. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_verbatim_dedup.py +0 -0
  355. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_verbatim_recall.py +0 -0
  356. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_verbatim_store.py +0 -0
  357. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_verbatim_store_qdrant.py +0 -0
  358. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_webhook.py +0 -0
  359. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_whatsapp_importer.py +0 -0
  360. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_autopromote.py +0 -0
  361. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_binding.py +0 -0
  362. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_engine_idempotency.py +0 -0
  363. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_explored_and_contradictions.py +0 -0
  364. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_freshness.py +0 -0
  365. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_similarity_multiscope.py +0 -0
  366. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_suggest.py +0 -0
  367. {memorymaster-3.17.0 → memorymaster-3.17.1}/tests/test_wiki_validate_cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorymaster
3
- Version: 3.17.0
3
+ Version: 3.17.1
4
4
  Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
5
5
  Author: wolverin0
6
6
  License: MIT
@@ -1625,5 +1625,27 @@ def run_steward(
1625
1625
  },
1626
1626
  "artifact_path": str(Path(artifact_path)),
1627
1627
  }
1628
+ import os
1629
+
1630
+ daydream_dir = os.environ.get("MEMORYMASTER_DAYDREAM_INGEST_DIR")
1631
+ if daydream_dir:
1632
+ try:
1633
+ import logging
1634
+
1635
+ from memorymaster.jobs.daydream_ingest import ingest_insights
1636
+
1637
+ verbose = os.environ.get("MEMORYMASTER_DAYDREAM_VERBOSE") == "1"
1638
+ path = Path(daydream_dir)
1639
+ if path.is_dir():
1640
+ summary = ingest_insights(service, path, dry_run=False)
1641
+ report["daydream"] = summary
1642
+ if verbose:
1643
+ logging.getLogger(__name__).info("daydream auto-ingest: %s", summary)
1644
+ else:
1645
+ report["daydream"] = {"skipped": "dir-not-found", "path": str(path)}
1646
+ except Exception as exc:
1647
+ report["daydream"] = {"error": str(exc)[:200]}
1648
+ if os.environ.get("MEMORYMASTER_DAYDREAM_VERBOSE") == "1":
1649
+ logging.getLogger(__name__).warning("daydream auto-ingest failed: %s", exc)
1628
1650
  _write_artifact(Path(artifact_path), report)
1629
1651
  return report
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorymaster
3
- Version: 3.17.0
3
+ Version: 3.17.1
4
4
  Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
5
5
  Author: wolverin0
6
6
  License: MIT
@@ -331,6 +331,7 @@ tests/test_staleness.py
331
331
  tests/test_stealth_mode.py
332
332
  tests/test_steward.py
333
333
  tests/test_steward_classifier.py
334
+ tests/test_steward_daydream_hook.py
334
335
  tests/test_steward_features.py
335
336
  tests/test_steward_features_v3.py
336
337
  tests/test_steward_resolution_parity.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "memorymaster"
7
- version = "3.17.0"
7
+ version = "3.17.1"
8
8
  description = "Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration."
9
9
  license = {text = "MIT"}
10
10
  authors = [{name = "wolverin0"}]
@@ -0,0 +1,116 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ from pathlib import Path
5
+
6
+ import pytest
7
+
8
+ from memorymaster.service import MemoryService
9
+ from memorymaster.steward import run_steward
10
+
11
+
12
+ @pytest.fixture()
13
+ def service(tmp_path: Path) -> MemoryService:
14
+ svc = MemoryService(tmp_path / "memorymaster.db", workspace_root=tmp_path / "workspace")
15
+ svc.init_db()
16
+ return svc
17
+
18
+
19
+ def _run_clean_steward(service: MemoryService, tmp_path: Path) -> dict:
20
+ return run_steward(
21
+ service,
22
+ mode="manual",
23
+ max_cycles=1,
24
+ max_claims=10,
25
+ max_proposals=10,
26
+ max_probe_files=10,
27
+ artifact_path=tmp_path / "steward_report.json",
28
+ )
29
+
30
+
31
+ def _write_insight(directory: Path) -> None:
32
+ directory.mkdir(parents=True, exist_ok=True)
33
+ (directory / "20260516-linking-patterns.md").write_text(
34
+ """---
35
+ type: daydream
36
+ created_date: 2026-05-16
37
+ scores:
38
+ average: 8.5
39
+ source_notes:
40
+ - [[notes/source-a]]
41
+ ---
42
+ # Linking Patterns
43
+
44
+ > Connection between steward output and daydream insight closure
45
+
46
+ Steward cycles can close the loop by ingesting high-scoring daydream insights.
47
+
48
+ ## Implication
49
+
50
+ Accepted insights become candidate hypotheses for later validation.
51
+ """,
52
+ encoding="utf-8",
53
+ )
54
+
55
+
56
+ def test_no_env_no_op(service: MemoryService, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
57
+ monkeypatch.delenv("MEMORYMASTER_DAYDREAM_INGEST_DIR", raising=False)
58
+
59
+ report = _run_clean_steward(service, tmp_path)
60
+
61
+ assert report["cycles_completed"] == 1
62
+ assert "daydream" not in report
63
+
64
+
65
+ def test_env_set_dir_missing_no_crash(
66
+ service: MemoryService,
67
+ tmp_path: Path,
68
+ monkeypatch: pytest.MonkeyPatch,
69
+ ) -> None:
70
+ missing = tmp_path / "missing-daydreams"
71
+ monkeypatch.setenv("MEMORYMASTER_DAYDREAM_INGEST_DIR", str(missing))
72
+
73
+ report = _run_clean_steward(service, tmp_path)
74
+
75
+ assert report["cycles_completed"] == 1
76
+ assert report["daydream"] == {"skipped": "dir-not-found", "path": str(missing)}
77
+
78
+
79
+ def test_env_set_dir_with_insights_ingests(
80
+ service: MemoryService,
81
+ tmp_path: Path,
82
+ monkeypatch: pytest.MonkeyPatch,
83
+ ) -> None:
84
+ insights_dir = tmp_path / "Daydreams"
85
+ _write_insight(insights_dir)
86
+ monkeypatch.setenv("MEMORYMASTER_DAYDREAM_INGEST_DIR", str(insights_dir))
87
+
88
+ report = _run_clean_steward(service, tmp_path)
89
+
90
+ assert report["daydream"]["ingested"] == 1
91
+ claims = service.list_claims(status="candidate", limit=20, allow_sensitive=True)
92
+ assert len(claims) == 1
93
+ assert claims[0].source_agent == "daydream"
94
+ assert claims[0].claim_type == "hypothesis"
95
+
96
+
97
+ def test_ingest_exception_does_not_break_steward(
98
+ service: MemoryService,
99
+ tmp_path: Path,
100
+ monkeypatch: pytest.MonkeyPatch,
101
+ ) -> None:
102
+ insights_dir = tmp_path / "Daydreams"
103
+ insights_dir.mkdir()
104
+ monkeypatch.setenv("MEMORYMASTER_DAYDREAM_INGEST_DIR", str(insights_dir))
105
+
106
+ def raise_ingest(*_args: object, **_kwargs: object) -> dict:
107
+ raise RuntimeError("boom from daydream ingest")
108
+
109
+ monkeypatch.setattr("memorymaster.jobs.daydream_ingest.ingest_insights", raise_ingest)
110
+
111
+ report = _run_clean_steward(service, tmp_path)
112
+
113
+ assert report["cycles_completed"] == 1
114
+ assert report["cycles"][0]["budget"]["claims_scanned"] == 0
115
+ assert json.dumps(report["cycles"])
116
+ assert report["daydream"] == {"error": "boom from daydream ingest"}
File without changes
File without changes