mempalace-code 1.16.0__tar.gz → 1.16.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 (325) hide show
  1. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/CHANGELOG.md +75 -0
  2. mempalace_code-1.16.0/README.md → mempalace_code-1.16.1/PKG-INFO +154 -26
  3. mempalace_code-1.16.0/PKG-INFO → mempalace_code-1.16.1/README.md +89 -86
  4. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/AGENT_INSTALL.md +12 -3
  5. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/BACKUP_RESTORE.md +87 -41
  6. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/DEPENDENCY_UPGRADE_GATE.md +203 -3
  7. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/HOW_SEARCH_WORKS.md +8 -0
  8. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/LLM_USAGE_RULES.md +18 -6
  9. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/RELEASING.md +93 -10
  10. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/UPDATES.md +4 -1
  11. mempalace_code-1.16.1/docs/UPSTREAM_COMPARISON.md +358 -0
  12. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/demo/code-intelligence-packet.json +1 -1
  13. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/demo/code-intelligence-packet.md +1 -1
  14. mempalace_code-1.16.1/docs/dependency-audit-allowlist.json +317 -0
  15. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/acceptance/README.md +5 -0
  16. mempalace_code-1.16.1/docs/quality/acceptance/v1.16.1.md +529 -0
  17. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/scorecard.json +19 -19
  18. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/scorecard.md +13 -13
  19. mempalace_code-1.16.1/docs/quality/upstream-comparison.json +1166 -0
  20. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/release-admission-rulesets.md +17 -4
  21. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/plugin.json +1 -1
  22. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/skills/mempalace/SKILL.md +12 -15
  23. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/backup.py +400 -167
  24. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli.py +1 -1
  25. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/alias.py +6 -35
  26. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/backup_restore.py +1 -1
  27. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_invocation.py +39 -0
  28. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/config.py +21 -28
  29. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/export.py +17 -25
  30. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/knowledge_graph.py +75 -29
  31. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/search.py +35 -7
  32. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/write.py +28 -45
  33. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/orchestrator.py +946 -6
  34. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/scanner.py +71 -4
  35. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mirror_preflight.py +130 -53
  36. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/operation_lock.py +66 -8
  37. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/searcher.py +6 -0
  38. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/storage.py +198 -18
  39. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/updater.py +37 -5
  40. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/watcher.py +171 -57
  41. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/pyproject.toml +7 -3
  42. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/dependency_upgrade_gate.py +418 -34
  43. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/gen_code_intelligence_packet.py +18 -1
  44. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_admission_checks.py +48 -16
  45. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_preflight.py +83 -2
  46. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_public_read.py +8 -1
  47. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_readiness_gate.py +195 -114
  48. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_status_gate.py +1 -0
  49. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_backup.py +744 -136
  50. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_backup_dir.py +30 -8
  51. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_cli.py +10 -2
  52. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_code_intelligence_packet.py +45 -0
  53. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_config.py +20 -9
  54. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_dependency_upgrade_gate.py +727 -3
  55. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_export.py +17 -21
  56. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_knowledge_graph.py +153 -0
  57. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_mcp_server.py +16 -7
  58. mempalace_code-1.16.1/tests/test_memory_growth_regression.py +2262 -0
  59. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_miner.py +43 -0
  60. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_palace_kg_owner.py +21 -1
  61. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_preflight.py +173 -1
  62. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_public_read.py +39 -0
  63. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_readiness_gate.py +350 -17
  64. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_ruleset_contract.py +178 -4
  65. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_status_gate.py +1 -0
  66. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_searcher.py +6 -0
  67. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_storage.py +57 -29
  68. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_storage_lance.py +3 -1
  69. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat2_watch_ops.py +104 -3
  70. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_ids.py +37 -6
  71. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_kg_backup.py +4 -3
  72. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_mcp_protocol.py +11 -9
  73. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_mining.py +1 -1
  74. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_model_install.py +4 -1
  75. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_ops_misc.py +13 -7
  76. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_repair.py +13 -3
  77. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_repair_backup.py +2 -1
  78. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_updater.py +85 -0
  79. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_upstream_comparison_guard.py +4 -4
  80. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_watcher.py +261 -0
  81. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tools/gitleaks/go.mod +1 -1
  82. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/uv.lock +97 -90
  83. mempalace_code-1.16.0/docs/UPSTREAM_COMPARISON.md +0 -329
  84. mempalace_code-1.16.0/docs/dependency-audit-allowlist.json +0 -4
  85. mempalace_code-1.16.0/docs/quality/upstream-comparison.json +0 -674
  86. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/.gitignore +0 -0
  87. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/.gitleaks.toml +0 -0
  88. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/.pre-commit-config.yaml +0 -0
  89. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/AGENTS.md +0 -0
  90. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/CLAUDE.md +0 -0
  91. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/CONTRIBUTING.md +0 -0
  92. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/LICENSE +0 -0
  93. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/NOTICE +0 -0
  94. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/SECURITY.md +0 -0
  95. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/assets/mempalace_banner.jpg +0 -0
  96. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/BENCHMARKS.md +0 -0
  97. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/HYBRID_MODE.md +0 -0
  98. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/README.md +0 -0
  99. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/code_retrieval_bench.py +0 -0
  100. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/convomem_bench.py +0 -0
  101. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/data/code_retrieval_queries.json +0 -0
  102. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/demo_perf_budgets.json +0 -0
  103. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/demo_perf_budgets.py +0 -0
  104. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/dotnet_bench.py +0 -0
  105. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/embed_ab_bench.py +0 -0
  106. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/locomo_bench.py +0 -0
  107. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/longmemeval_bench.py +0 -0
  108. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/membench_bench.py +0 -0
  109. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/minilm_runtime_compatibility_fixture.json +0 -0
  110. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/results_embed_ab_2026-04-09.json +0 -0
  111. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/results_token_delta_mempalace.json +0 -0
  112. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/retrieval_quality_facts.json +0 -0
  113. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/token_delta_bench.py +0 -0
  114. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/benchmarks/token_delta_fixture_facts.json +0 -0
  115. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/BENCH_TOKEN_DELTA.md +0 -0
  116. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/COMPARISON_GRAPHIFY.md +0 -0
  117. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/OFFLINE_USAGE.md +0 -0
  118. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/UPSTREAM_HARDENING.md +0 -0
  119. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/WHY_THIS_FORK.md +0 -0
  120. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/operations/wing-migration.md +0 -0
  121. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/PALACE-SCOPE-RESOURCE-BOUNDARY.md +0 -0
  122. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/README.md +0 -0
  123. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/acceptance/v1.15.0.md +0 -0
  124. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/acceptance/v1.15.1.md +0 -0
  125. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/acceptance/v1.16.0.md +0 -0
  126. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/autopilot-demo-gate-ledger.json +0 -0
  127. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/autopilot-demo-gate-ledger.md +0 -0
  128. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/docs/quality/workflow-review-protocol.md +0 -0
  129. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/examples/HOOKS_TUTORIAL.md +0 -0
  130. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/examples/basic_mining.py +0 -0
  131. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/examples/convo_import.py +0 -0
  132. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/examples/gemini_cli_setup.md +0 -0
  133. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/examples/mcp_setup.md +0 -0
  134. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/hooks/README.md +0 -0
  135. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/hooks/mempal_precompact_hook.sh +0 -0
  136. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/hooks/mempal_save_hook.sh +0 -0
  137. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace/__init__.py +0 -0
  138. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace/mcp_server.py +0 -0
  139. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/README.md +0 -0
  140. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/__init__.py +0 -0
  141. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/__main__.py +0 -0
  142. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/_stdio.py +0 -0
  143. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/mcp.json +0 -0
  144. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/schemas/1.0.0/mcp.schema.json +0 -0
  145. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/schemas/1.0.0/plugin.schema.json +0 -0
  146. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugin/schemas/SCHEMA-NOTICE.md +0 -0
  147. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/agent_plugins.py +0 -0
  148. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/architecture.py +0 -0
  149. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/__init__.py +0 -0
  150. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/agent_plugin.py +0 -0
  151. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/common.py +0 -0
  152. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/diary.py +0 -0
  153. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/export_import.py +0 -0
  154. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/ingest.py +0 -0
  155. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/maintenance.py +0 -0
  156. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/model.py +0 -0
  157. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/preflight.py +0 -0
  158. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/query.py +0 -0
  159. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/update.py +0 -0
  160. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/version_check.py +0 -0
  161. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/watch.py +0 -0
  162. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/cli_commands/wing_migration.py +0 -0
  163. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/convo_miner.py +0 -0
  164. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/dialect.py +0 -0
  165. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/diary.py +0 -0
  166. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/disk_budget.py +0 -0
  167. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/entity_detector.py +0 -0
  168. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/entity_registry.py +0 -0
  169. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/errors.py +0 -0
  170. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/general_extractor.py +0 -0
  171. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/language_catalog.py +0 -0
  172. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/launchd.py +0 -0
  173. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/layers.py +0 -0
  174. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/__init__.py +0 -0
  175. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/dispatch.py +0 -0
  176. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/protocol_compat.py +0 -0
  177. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/protocol_text.py +0 -0
  178. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/registry.py +0 -0
  179. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/runtime.py +0 -0
  180. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/__init__.py +0 -0
  181. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/architecture.py +0 -0
  182. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/diary.py +0 -0
  183. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/graph.py +0 -0
  184. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/kg.py +0 -0
  185. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp/tools/read.py +0 -0
  186. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp_launcher.py +0 -0
  187. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp_server.py +0 -0
  188. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mcp_tool_profiles.py +0 -0
  189. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/miner.py +0 -0
  190. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/__init__.py +0 -0
  191. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/batching.py +0 -0
  192. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/chunkers.py +0 -0
  193. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/kg_extract.py +0 -0
  194. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/languages.py +0 -0
  195. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/projects.py +0 -0
  196. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/source_text.py +0 -0
  197. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/mining/symbols.py +0 -0
  198. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/normalize.py +0 -0
  199. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/onboarding.py +0 -0
  200. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/palace_graph.py +0 -0
  201. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/py.typed +0 -0
  202. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/reader.py +0 -0
  203. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/retrieval_rerank.py +0 -0
  204. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/room_detector_local.py +0 -0
  205. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/search_reranker.py +0 -0
  206. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/source_io.py +0 -0
  207. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/spellcheck.py +0 -0
  208. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/split_mega_files.py +0 -0
  209. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/taxonomy_filters.py +0 -0
  210. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/treesitter.py +0 -0
  211. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/version.py +0 -0
  212. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/version_check.py +0 -0
  213. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/mempalace_code/wing_migration.py +0 -0
  214. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/pyrightconfig.strict.json +0 -0
  215. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/architecture_guard.py +0 -0
  216. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/bootstrap.sh +0 -0
  217. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/docs_drift_guard.py +0 -0
  218. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/gate_inventory.py +0 -0
  219. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/gitleaks_scan.py +0 -0
  220. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/nuke_wing.py +0 -0
  221. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/public_safety_scan.py +0 -0
  222. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/pytest_failure_summary.py +0 -0
  223. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/quality_scorecard.py +0 -0
  224. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_artifact_gate.py +0 -0
  225. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_install_metadata_smoke.py +0 -0
  226. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/release_notes.py +0 -0
  227. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/upstream_comparison_guard.py +0 -0
  228. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/wing_migration.py +0 -0
  229. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/scripts/workflow_summary_guard.py +0 -0
  230. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/conftest.py +0 -0
  231. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/fixtures/unreasoned_suppression.py +0 -0
  232. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/release_smoke_support.py +0 -0
  233. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_agent_plugin_package.py +0 -0
  234. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_agent_skill_authority_contract.py +0 -0
  235. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_architecture_extraction.py +0 -0
  236. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_architecture_guard.py +0 -0
  237. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_autopilot_demo_gate_ledger.py +0 -0
  238. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_backup_cli.py +0 -0
  239. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_chunking.py +0 -0
  240. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_claude_hooks.py +0 -0
  241. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_cli_command_modules.py +0 -0
  242. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_cli_golden_scenarios.py +0 -0
  243. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_code_retrieval_bench.py +0 -0
  244. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_convo_miner.py +0 -0
  245. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_demo_perf_budgets.py +0 -0
  246. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_dialect.py +0 -0
  247. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_disk_budget.py +0 -0
  248. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_docs_drift_guard.py +0 -0
  249. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_dotnet_bench.py +0 -0
  250. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_dotnet_config.py +0 -0
  251. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_e2e.py +0 -0
  252. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_embed_ab_bench.py +0 -0
  253. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_embedding_runtime.py +0 -0
  254. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_entity_detector.py +0 -0
  255. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_entity_registry.py +0 -0
  256. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_explicit_wing_consistency.py +0 -0
  257. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_gate_inventory.py +0 -0
  258. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_general_extractor.py +0 -0
  259. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_gitleaks_scan.py +0 -0
  260. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_installed_artifact_behavior.py +0 -0
  261. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_installed_cli_palace_scope.py +0 -0
  262. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_kg_extract.py +0 -0
  263. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_lang_detect.py +0 -0
  264. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_language_catalog.py +0 -0
  265. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_layers.py +0 -0
  266. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_legacy_benchmark_retrieval.py +0 -0
  267. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_license_notice.py +0 -0
  268. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_longmemeval_metrics.py +0 -0
  269. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_mcp_protocol_compat.py +0 -0
  270. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_mcp_registry.py +0 -0
  271. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_mcp_tool_profiles.py +0 -0
  272. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_mine_source_exact.py +0 -0
  273. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_miner_modules.py +0 -0
  274. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_normalize.py +0 -0
  275. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_nuke_wing.py +0 -0
  276. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_offline.py +0 -0
  277. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_onboarding.py +0 -0
  278. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_operation_lock.py +0 -0
  279. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_packaging_namespace.py +0 -0
  280. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_palace_graph.py +0 -0
  281. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_palace_scope_resource_boundary.py +0 -0
  282. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_public_safety_scan.py +0 -0
  283. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_pyright_optional_dependencies.py +0 -0
  284. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_pytest_failure_summary.py +0 -0
  285. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_quality_palace_scope_resource_boundary.py +0 -0
  286. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_quality_scorecard.py +0 -0
  287. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_reader.py +0 -0
  288. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_regular_source_guard.py +0 -0
  289. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_artifact_gate.py +0 -0
  290. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_install_metadata_smoke.py +0 -0
  291. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_notes.py +0 -0
  292. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_skill_contract.py +0 -0
  293. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_release_workflow_admission.py +0 -0
  294. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_retrieval_rerank.py +0 -0
  295. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_search_reranker.py +0 -0
  296. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_split_mega_files.py +0 -0
  297. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_stdio.py +0 -0
  298. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_symbol_extract.py +0 -0
  299. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_taxonomy_filters.py +0 -0
  300. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_token_delta_bench.py +0 -0
  301. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_treesitter.py +0 -0
  302. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_type_suppressions.py +0 -0
  303. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat2_mining.py +0 -0
  304. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_compress_layers.py +0 -0
  305. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_config_init.py +0 -0
  306. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_convo_core.py +0 -0
  307. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_convo_formats.py +0 -0
  308. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_convos.py +0 -0
  309. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_install_r2.py +0 -0
  310. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_kg.py +0 -0
  311. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_kg_mining.py +0 -0
  312. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_leases.py +0 -0
  313. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_mcp_search.py +0 -0
  314. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_model_fetch.py +0 -0
  315. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_repair_reads.py +0 -0
  316. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_search_read.py +0 -0
  317. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_uat_watch.py +0 -0
  318. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_version_check.py +0 -0
  319. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_version_consistency.py +0 -0
  320. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_watcher_resource_bounds.py +0 -0
  321. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_watcher_resource_subprocess.py +0 -0
  322. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_wing_migration.py +0 -0
  323. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tests/test_workflow_summary_guard.py +0 -0
  324. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tools/gitleaks/go.sum +0 -0
  325. {mempalace_code-1.16.0 → mempalace_code-1.16.1}/tools/gitleaks/tools.go +0 -0
@@ -2,6 +2,81 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v1.16.1 — 2026-10-24
6
+
7
+ ### Security
8
+
9
+ - Require `filelock>=4.2.1` and lock 4.2.4 to address three lock-file
10
+ advisories. Require `setuptools>=84.1.0` in the existing `custom-models`
11
+ extra and lock 84.2.1 to fix GHSA-xmj3-9gf7-h52w without adding a
12
+ default-install dependency.
13
+ - Retain 41 Pillow 12.3.0 dependency findings under an explicitly accepted
14
+ temporary exception, expiring 2026-11-05. Reviewed canonical MiniLM text
15
+ inference does not call the affected image/PDF APIs. Arbitrary custom models
16
+ are outside that conclusion. See `docs/DEPENDENCY_UPGRADE_GATE.md`; the Pillow
17
+ vulnerabilities remain present and are not described as fixed.
18
+ - Require OpenTelemetry API 1.45.1 or newer and refresh its lock pin, fixing
19
+ GHSA-xcq7-p3pf-p88h in trace-metadata parsing. Ordinary upgrades replace an
20
+ older compatible API; conflicting old pins are refused.
21
+
22
+ - Require `certifi>=2026.10.19` and refresh its lock pin to remove compromised
23
+ emSign trust roots (GHSA-6q48-6c7w-9gw2). Existing installations must update
24
+ the certificate bundle when upgrading.
25
+ - Refresh locked Certifi to 2026.10.23 and release-tool Sigstore to 4.5.1;
26
+ remove Sigstore's unused PyOpenSSL dependency. The exact lock transition
27
+ reuses the existing temporary risk disposition through a hash-bound upgrade
28
+ report, with unchanged advisory scope and expiry.
29
+ - Refresh locked cryptography to 50.0.2, whose wheels contain OpenSSL 4.0.3,
30
+ and update the existing scanner build toolchain to Go 1.27.3 for its checksum
31
+ verification and certificate distrust fixes.
32
+
33
+ - Update the locked `fsspec` dependency to 2026.6.0, which fixes
34
+ GHSA-27vj-qcqg-25rc in reference filesystem template handling.
35
+
36
+ - Require patched MCP SDK releases in the supported `>=2.2,<3` range and
37
+ declare `fsspec>=2026.6.0` so an existing vulnerable installation cannot satisfy
38
+ the new package.
39
+
40
+ ### Fixed
41
+
42
+ - Classify dependency-audit setup failures with a bounded reason and exit code.
43
+ Keep failed installs blocking and omit raw subprocess output from reports.
44
+ - Refuse distinct knowledge-graph names that collide under legacy identifiers.
45
+ Atomic writer, import and legacy-adoption checks preserve existing facts;
46
+ snapshot-consistent reads refuse ambiguous names. Existing identifiers, schema
47
+ and case-insensitive name lookup remain compatible.
48
+ - Coordinate macOS watchers in their verified launchd account domains, including
49
+ background user agents, and refuse ambiguous domain ownership before updating.
50
+ - Prevent recursive ingestion of nested checkouts and verified project copies.
51
+ Normal mining reconciles proven redundant generated chunks while retaining
52
+ unique and ambiguous originals, manual drawers, rejected-decision evidence,
53
+ knowledge-graph facts and source provenance.
54
+ - Keep automatic physical maintenance behind the existing healthy-backup,
55
+ reader and optimization guards. Interrupted maintenance can retry on an
56
+ unchanged mine; ordinary later writes avoid repeated full recovery archives.
57
+ - Use exact full-text checks for automatic duplicate refusal within the selected
58
+ scope. Opposite statements, changed conditions and cross-wing identical text
59
+ remain available through MCP and JSONL import.
60
+ - Refuse degraded forensic archives as automatic pre-watch recovery points.
61
+ - Reduce compression work while creating lossless gzip recovery archives under
62
+ the palace write lease.
63
+ - Preserve prior Lance and knowledge-graph state when force restore receives a
64
+ catchable interruption during publication or verification. If another owner
65
+ blocks rollback, retain the originals at the reported recovery paths.
66
+ - Resolve installed aliases through the canonical launcher under a conflicting
67
+ command search path, and align packaged memory instructions with live tools.
68
+
69
+ ### Changed
70
+
71
+ - Healthy scheduled, pre-watch and pre-optimize backups share one automatic
72
+ retention pool, defaulting to two recovery points. Existing write maintenance
73
+ reconciles qualified archives even when optimization is disabled or mining is
74
+ unchanged. Two retained snapshots must restore successfully before expiry;
75
+ explicit keep-all, manual, explicit-output, degraded and ambiguous legacy
76
+ archives are preserved.
77
+ - Release preparation checks all open pull requests and issues, resolves confirmed
78
+ release blockers, and records a disposition before candidate qualification.
79
+
5
80
  ## v1.16.0 — 2026-10-05
6
81
 
7
82
  ### Added
@@ -1,3 +1,68 @@
1
+ Metadata-Version: 2.5
2
+ Name: mempalace-code
3
+ Version: 1.16.1
4
+ Summary: Developer memory tool — mine codebases and conversations into a LanceDB-backed searchable palace. No API key required.
5
+ Project-URL: Homepage, https://github.com/rergards/mempalace-code
6
+ Project-URL: Repository, https://github.com/rergards/mempalace-code
7
+ Project-URL: Bug Tracker, https://github.com/rergards/mempalace-code/issues
8
+ Project-URL: Upstream, https://github.com/MemPalace/mempalace
9
+ Author: Ben Sigman, Igor Lins e Silva, milla-jovovich
10
+ Author-email: Aleksandr Markov <rergards@gmail.com>
11
+ License-Expression: Apache-2.0
12
+ License-File: LICENSE
13
+ License-File: NOTICE
14
+ Keywords: ai,chatgpt,claude,code-mining,code-search,crash-safe,developer-tools,embeddings,lancedb,llm,mcp,memory,rag,vector-database
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Topic :: Utilities
26
+ Requires-Python: >=3.11
27
+ Requires-Dist: certifi>=2026.10.19
28
+ Requires-Dist: fastembed<0.9,>=0.8
29
+ Requires-Dist: filelock>=4.2.1
30
+ Requires-Dist: fsspec>=2026.6.0
31
+ Requires-Dist: huggingface-hub<2,>=0.20
32
+ Requires-Dist: lancedb>=0.20
33
+ Requires-Dist: mcp<3,>=2.2
34
+ Requires-Dist: onnxruntime<2,>=1.20
35
+ Requires-Dist: opentelemetry-api>=1.45.1
36
+ Requires-Dist: overrides>=7.7
37
+ Requires-Dist: packaging>=21.0
38
+ Requires-Dist: pyarrow<25
39
+ Requires-Dist: pyyaml>=6.0
40
+ Provides-Extra: custom-models
41
+ Requires-Dist: sentence-transformers>=5.6.0; extra == 'custom-models'
42
+ Requires-Dist: setuptools>=84.1.0; extra == 'custom-models'
43
+ Provides-Extra: dev
44
+ Requires-Dist: actionlint-py==1.7.12.24; extra == 'dev'
45
+ Requires-Dist: build>=1.0; extra == 'dev'
46
+ Requires-Dist: jsonschema>=4.18; extra == 'dev'
47
+ Requires-Dist: pypi-attestations==0.0.30; extra == 'dev'
48
+ Requires-Dist: pyright>=1.1.350; extra == 'dev'
49
+ Requires-Dist: pytest>=7.0; extra == 'dev'
50
+ Requires-Dist: ruff==0.15.16; extra == 'dev'
51
+ Requires-Dist: twine>=5.0; extra == 'dev'
52
+ Requires-Dist: watchfiles>=1.0; extra == 'dev'
53
+ Requires-Dist: zizmor==1.29.0; extra == 'dev'
54
+ Provides-Extra: spellcheck
55
+ Requires-Dist: autocorrect>=2.0; extra == 'spellcheck'
56
+ Provides-Extra: treesitter
57
+ Requires-Dist: tree-sitter-go<0.26,>=0.23; extra == 'treesitter'
58
+ Requires-Dist: tree-sitter-python<0.26,>=0.23; extra == 'treesitter'
59
+ Requires-Dist: tree-sitter-rust<0.26,>=0.23; extra == 'treesitter'
60
+ Requires-Dist: tree-sitter-typescript<0.26,>=0.23; extra == 'treesitter'
61
+ Requires-Dist: tree-sitter<0.26,>=0.22; extra == 'treesitter'
62
+ Provides-Extra: watch
63
+ Requires-Dist: watchfiles>=1.0; extra == 'watch'
64
+ Description-Content-Type: text/markdown
65
+
1
66
  <div align="center">
2
67
 
3
68
  <img src="https://raw.githubusercontent.com/rergards/mempalace-code/main/assets/mempalace_banner.jpg" alt="mempalace-code" width="640">
@@ -402,6 +467,40 @@ class names, packages, examples, and variables often look like people or product
402
467
  heuristic pass. Code structure, symbols, languages, and architecture relationships are
403
468
  handled by `mempalace-code mine`, not by entity detection.
404
469
 
470
+ ### Source selection and generated copies
471
+
472
+ Mining reads the selected checkout's current files, including uncommitted changes. A branch
473
+ name does not pin the indexed commit. Select the checkout that contains the project state
474
+ you want to retrieve; Git is optional for mining.
475
+
476
+ The default scan skips nested Git checkouts. Exact `--include-ignored` paths can include
477
+ one deliberately. It also skips the project-root `.tasks` and `.local` directories, where
478
+ agents and tools keep task checkouts, workspaces and temporary verification receipts.
479
+ Directories with those names deeper in the project, such as `docs/.tasks`, are mined as
480
+ usual. An `--include-ignored` root, subtree or exact path selects technical content
481
+ deliberately, under the same rules as any other included path.
482
+
483
+ Records already stored from those directories stay: unique and rejected-decision reports,
484
+ manual drawers and their knowledge-graph facts are not stale-swept once the default scan
485
+ stops walking them. Exact stored copies of project files below them are still found from
486
+ their stored paths and reconciled as described next, without walking those directories.
487
+
488
+ A normal unlimited mine also reconciles previously stored generated copies. It removes
489
+ rows only after checking current regular files, identical ordered chunks and metadata,
490
+ and a healthy recovery backup. Manual, ambiguous, missing-source and different-content
491
+ records stay. Source aliases are recorded before removal and retained with the Lance data through
492
+ backup, restore and rebuild. An interrupted run
493
+ reassesses remaining candidates on the next mine. Limited and dry runs remove nothing.
494
+
495
+ Physical space is reclaimed through supported maintenance when post-mine optimization is
496
+ enabled. Active readers defer version cleanup. `MEMPALACE_OPTIMIZE_AFTER_MINE=0` and
497
+ `--skip-optimize` keep their existing effect. The mine result reports removed rows,
498
+ retained sources, table-file bytes and maintenance refusals. Backup and provenance-record
499
+ sizes must be counted separately when measuring the total disk footprint.
500
+ The watcher honors the same setting. Each watcher batch makes one maintenance decision: it
501
+ retries maintenance left pending by an exact-copy removal, even when the batch filed
502
+ nothing, under the same backup and reader gates.
503
+
405
504
  ### Auto-Watch
406
505
 
407
506
  Keep your palace in sync automatically. By default, watches git metadata — branch refs plus
@@ -727,7 +826,7 @@ returns an empty result. A tool that reports a failure in its payload
727
826
  | `mempalace_code_search` | Filter by language, symbol name/type, file glob (all applied before ranking); optional `rerank="hybrid"` |
728
827
  | `mempalace_file_context` | Indexed chunks for a source file, ordered by chunk_index and paged with `limit`/`offset`; resolves paths like `mempalace_read` |
729
828
  | `mempalace_read` | Surgical read of stored source lines in a range for a file; use after a search/file_context hit to avoid reading the whole file; reports gaps, `out_of_range`, and `no_line_metadata` (conversation drawers) |
730
- | `mempalace_check_duplicate` | Similarity check before filing (duplicate at cosine similarity ≥ 0.9 by default; `threshold` must be -1 to 1) |
829
+ | `mempalace_check_duplicate` | Exact-text duplicate check, optionally scoped by `wing`; similar matches are advisory (`threshold` must be -1 to 1) |
731
830
 
732
831
  </details>
733
832
 
@@ -736,7 +835,7 @@ returns an empty result. A tool that reports a failure in its payload
736
835
 
737
836
  | Tool | What |
738
837
  |------|------|
739
- | `mempalace_add_drawer` | File verbatim content into a wing/room; refuses a near-identical drawer (similarity ≥ 0.9 and no new number or identifier) and a new wing/room name that only re-spells an existing one (names are trimmed and case-sensitive) |
838
+ | `mempalace_add_drawer` | File verbatim content into a wing/room; refuses identical text already stored in the same wing and a new wing/room name that only re-spells an existing one (names are trimmed and case-sensitive) |
740
839
  | `mempalace_delete_drawer` | Remove a drawer by ID |
741
840
  | `mempalace_delete_wing` | Delete all drawers in a wing |
742
841
  | `mempalace_mine` | Trigger re-mining of a project directory (incremental or full) |
@@ -1021,7 +1120,7 @@ replays an export written before 1.15.0; its contents are never modified. `--kg-
1021
1120
  restore destination. The complete quarantine, rebuild, restore, force-restore,
1022
1121
  and failure-recovery procedure is in [docs/BACKUP_RESTORE.md](https://github.com/rergards/mempalace-code/blob/main/docs/BACKUP_RESTORE.md).
1023
1122
 
1024
- **Backup kinds:** Each archive has a kind that controls its filename prefix and per-kind retention:
1123
+ **Backup kinds:** Each archive has a kind that controls its filename prefix. Automatic kinds share one retention pool:
1025
1124
 
1026
1125
  | Kind | Prefix | Created by |
1027
1126
  |------|--------|-----------|
@@ -1085,23 +1184,37 @@ for inspection commands, permissions and existing-archive behavior.
1085
1184
 
1086
1185
  **Retention (automatic pruning):**
1087
1186
 
1088
- `pre_optimize` and `pre_watch` archives are **bounded by default** to the newest 5 per kind (implicit safe default for repeated mine/optimize cycles and watcher restarts).
1089
- `scheduled` archives are **bounded by default** to the newest 14 (implicit safe default for cron and launchd jobs).
1090
- `manual` archives are **unbounded by default** (retain all, no pruning).
1187
+ Healthy `scheduled`, `pre_watch`, and `pre_optimize` archives share **one automatic
1188
+ pool with a default limit of 2**. This replaces the previous independent limits of
1189
+ 14/5/5. A positive `backup_retain_count` applies to the whole pool and has a safety
1190
+ floor of 2; explicit `0` keeps all. Manual and explicit `--out` archives always stay
1191
+ outside the pool, including automatic-looking names in the managed directory.
1091
1192
 
1092
1193
  ```bash
1093
- export MEMPALACE_BACKUP_RETAIN_COUNT=5 # explicit limit for all kinds; overrides implicit pre_optimize, pre_watch, and scheduled bounds
1094
- # Deliberate keep-all opt-out (including pre_optimize, pre_watch, and scheduled):
1095
- export MEMPALACE_BACKUP_RETAIN_COUNT=0 # 0 disables pruning for every kind
1194
+ export MEMPALACE_BACKUP_RETAIN_COUNT=5 # keep 5 healthy automatic snapshots total
1195
+ export MEMPALACE_BACKUP_RETAIN_COUNT=0 # deliberate keep-all opt-out
1096
1196
  ```
1097
1197
 
1098
- Or in `~/.mempalace/config.json`: `{"backup_retain_count": 5}`. Retention affects only
1099
- the palace's selected managed directory. With `backup_dir` unset, that directory is
1100
- `<palace_parent>/backups/<palace_name>/`; a configured root uses the isolated child
1101
- described above. Explicit `--out` archives are never pruned, and `backup create --out`
1102
- refuses to overwrite an existing file.
1103
-
1104
- `backup list` (`--json` for scripts) prints `stale` in its FLAGS column for archives that would be pruned at the current retain count, `oversized` for archives larger than `MEMPALACE_BACKUP_WARN_SIZE_BYTES`, `degraded` for a snapshot of a damaged palace, and `shared` for archives an older release wrote into the shared `<palace_parent>/backups/` directory (they may belong to a sibling palace; check their wings before restoring, and retention never deletes them).
1198
+ The equivalent config key is `{"backup_retain_count": 5}` in
1199
+ `~/.mempalace/config.json`. Retention examines only the selected managed directory.
1200
+ New archives record their origin, kind, canonical source palace and namespace, with
1201
+ metadata first for bounded inspection. Unknown legacy archives, foreign archives,
1202
+ degraded snapshots, linked files and protected or hidden extra files are preserved.
1203
+ A filename alone never authorizes deletion. Explicit `--out` never overwrites a file.
1204
+
1205
+ Reconciliation runs after healthy automatic publication and on mine/watch write
1206
+ maintenance, including idle batches with optimize disabled. It creates no archive
1207
+ just to rotate. Before deleting anything, it fully restores and verifies two retained
1208
+ recovery points in scratch space on the backup filesystem. A verification, identity,
1209
+ lease or disk failure defers cleanup; a successful backup stays successful and logs
1210
+ the retention error. Package-only updates stay package-only; the next managed write
1211
+ or watcher batch supplies the first-use cleanup. Search, status and dry runs remain
1212
+ read-only with respect to retention.
1213
+
1214
+ `backup list` (`--json` for scripts) marks qualified automatic archives beyond the
1215
+ shared limit as `stale`. This is a selection hint; deletion still requires keeper
1216
+ validation. `oversized`, `degraded` and `shared` describe size, damaged snapshots and
1217
+ legacy shared-directory archives. Listing never prunes.
1105
1218
 
1106
1219
  `backup create` fails with exit 1 instead of writing an empty archive when the path holds no palace (missing directory, empty directory, or a legacy ChromaDB palace). For a degraded palace (unreadable drawers, or a knowledge graph that fails SQLite's `quick_check`) it still writes a forensic `*_DEGRADED.tar.gz` copy, warns, and exits 1; `restore` refuses such an archive, and degraded archives never displace healthy ones in retention.
1107
1220
 
@@ -1174,30 +1287,43 @@ Use these recommended excludes for any delete-mode state-directory mirror:
1174
1287
 
1175
1288
  ```bash
1176
1289
  rsync -a --delete \
1177
- --exclude=palace/ \
1290
+ --exclude=palace \
1178
1291
  --exclude='palace.backup-*/' \
1179
1292
  --exclude='palace.quarantine-*/' \
1180
1293
  --exclude=knowledge_graph.sqlite3 \
1294
+ --exclude='knowledge_graph.sqlite3-*' \
1181
1295
  --exclude=knowledge_graph.sqlite3.adopted \
1182
1296
  --exclude=config.json \
1183
1297
  --exclude=backups/ \
1298
+ --exclude=locks/ \
1299
+ --exclude='operation.lock*' \
1300
+ --exclude='watch-*.claim' \
1184
1301
  ~/.mempalace/ user@host:.mempalace/
1185
1302
  ```
1186
1303
 
1304
+ `--exclude=palace` has no trailing slash: a directory-only pattern such as `palace/` does not
1305
+ protect the regular MOVED/guard file that can take the palace directory's place. The lock
1306
+ entries (`locks/`, `operation.lock*`, `watch-*.claim`) are required too: rsync would unlink a
1307
+ held lock file while its holder keeps locking the orphaned inode. A palace configured inside
1308
+ `~/.mempalace` under another name needs its own exclude (for example `--exclude=/palace_live`).
1309
+ For a home mirror such as `~/`, exclude the whole state directory with `--exclude=/.mempalace/`;
1310
+ keep selective excludes only for deliberate state-directory mirrors.
1311
+
1187
1312
  `palace.backup-<UTC>/` (left by `repair`) and `palace.quarantine-<UTC>/` (left by the rebuild
1188
1313
  workflow) are full palace copies. Run a preflight check before installing a mirror job (the
1189
1314
  command is never executed). It also blocks `--del`, `--remove-source-files`, mirrors of a palace
1190
1315
  configured outside `~/.mempalace`, and mirrors of a parent such as `~/` that contains
1191
1316
  `~/.mempalace` without excluding the same families under it (for example
1192
- `--exclude=/.mempalace/palace/`), and reports `UNVERIFIED` when excludes come from files or an
1317
+ `--exclude=/.mempalace/`), and reports `UNVERIFIED` when excludes come from files or an
1193
1318
  earlier include:
1194
1319
 
1195
1320
  ```bash
1196
1321
  mempalace-code preflight mirror --command \
1197
- "rsync -a --delete --exclude=palace/ --exclude='palace.backup-*/' \
1322
+ "rsync -a --delete --exclude=palace --exclude='palace.backup-*/' \
1198
1323
  --exclude='palace.quarantine-*/' --exclude=knowledge_graph.sqlite3 \
1199
- --exclude=knowledge_graph.sqlite3.adopted --exclude=config.json --exclude=backups/ \
1200
- ~/.mempalace/ user@host:.mempalace/"
1324
+ --exclude='knowledge_graph.sqlite3-*' --exclude=knowledge_graph.sqlite3.adopted \
1325
+ --exclude=config.json --exclude=backups/ --exclude=locks/ --exclude='operation.lock*' \
1326
+ --exclude='watch-*.claim' ~/.mempalace/ user@host:.mempalace/"
1201
1327
  # OK
1202
1328
  # warning: advisory: no --exclude for 'logs' (add --exclude='*.log' if you route MemPalace logs into the state directory)
1203
1329
  ```
@@ -1251,6 +1377,8 @@ Every mine that walks the whole project (no `--limit`) ends with a stale-file sw
1251
1377
  removes drawers of files that are no longer discovered by the scanner — deleted files and
1252
1378
  previously indexed files that now fall under an exclusion rule. `--full` runs the same
1253
1379
  sweep and also re-chunks and re-embeds every remaining file.
1380
+ Records stored from the project-root `.tasks` and `.local` directories are the exception:
1381
+ they are kept after the default scan stops walking them.
1254
1382
 
1255
1383
  ---
1256
1384
 
@@ -1364,19 +1492,19 @@ the same way, and `version-check --status` says the value is unrecognized. Run `
1364
1492
 
1365
1493
  This is a code-first fork of the upstream `mempalace` project. The canonical upstream repository is [MemPalace/mempalace](https://github.com/MemPalace/mempalace); the older `milla-jovovich/mempalace` URL redirects there.
1366
1494
 
1367
- Snapshot reviewed on 2026-10-03 against upstream `develop` at commit `43122aefb8ed58e9fa4e1953e15ce70026339ec2` (upstream release 3.11.0), using pinned upstream public sources. Nothing below is a performance, quality, or adoption comparison — no upstream build or benchmark was run.
1495
+ Snapshot reviewed on 2026-10-23 against upstream `develop` at commit `f41e8e75ddaadf5588d5127715fa531d79eadb45` (upstream release 3.12.0), using pinned upstream public sources. Nothing below is a performance, quality, or adoption comparison — no upstream build or benchmark was run.
1368
1496
 
1369
1497
  | Area | Upstream, as advertised at that commit | This fork |
1370
1498
  |---|---|---|
1371
1499
  | Focus | General-purpose AI memory | Code-first: repository mining, `code_search`, symbol/type/project-graph tools |
1372
1500
  | Default storage | ChromaDB | LanceDB |
1373
1501
  | Other backends offered | `sqlite_exact`, native `rust_exact`, Milvus, Qdrant, pgvector | LanceDB-only current package; ChromaDB support is retired; no server-backed backends |
1374
- | Embedding model | `all-MiniLM-L6-v2` by default; onboarding recommends the multilingual `embeddinggemma-300m`; optional OpenAI-compatible embedding server | `all-MiniLM-L6-v2`; no supported multilingual configuration or migration flow |
1502
+ | Embedding model | `all-MiniLM-L6-v2` by default; `init --embedding-model` selects recommended Gemma or optional experimental Gemma2/media; optional configured OpenAI-compatible server | `all-MiniLM-L6-v2`; no supported multilingual configuration or migration flow |
1375
1503
  | Retrieval | Hybrid retrieval | Vector search, plus a local deterministic `code_search(rerank="hybrid")` |
1376
1504
  | Reranking | Optional LLM reranking | None — no LLM reranker; this direction is explicitly rejected |
1377
- | MCP tools | 47 in the full server registry (its README still says 45), plus a 3-tool lightweight server | 29 in the full profile, plus a 4-tool minimal profile for agent plugins |
1505
+ | MCP tools | 47 in the full server registry and README, plus a 3-tool lightweight server | 29 in the full profile, plus a 4-tool minimal profile for agent plugins |
1378
1506
 
1379
- This fork has not adopted upstream's multilingual embedding, broad hybrid-retrieval, or alternative-backend paths. LLM reranking is explicitly rejected: it would put an API key, a per-query network call, and non-deterministic results into a tool that stays local after the one-time model download.
1507
+ This fork has not adopted upstream's multilingual embedding, broad hybrid-retrieval, or alternative-backend paths. LLM reranking is explicitly rejected because it adds a model/service dependency and non-deterministic ranking. Upstream can use local Ollama; its external LLM routes require explicit consent. This fork keeps its existing local retrieval path after the one-time model download.
1380
1508
 
1381
1509
  Reviewed comparison with source links, evidence limits, and the reasoning behind each decision: [`docs/UPSTREAM_COMPARISON.md`](https://github.com/rergards/mempalace-code/blob/main/docs/UPSTREAM_COMPARISON.md).
1382
1510
 
@@ -1655,7 +1783,7 @@ python -m pyright --pythonpath "$(python -c 'import sys; print(sys.executable)')
1655
1783
  Apache 2.0 — see [LICENSE](https://github.com/rergards/mempalace-code/blob/main/LICENSE) and [NOTICE](https://github.com/rergards/mempalace-code/blob/main/NOTICE).
1656
1784
 
1657
1785
  <!-- Link Definitions -->
1658
- [version-shield]: https://img.shields.io/badge/version-1.16.0-4dc9f6?style=flat-square&labelColor=0a0e14
1786
+ [version-shield]: https://img.shields.io/badge/version-1.16.1-4dc9f6?style=flat-square&labelColor=0a0e14
1659
1787
  [release-link]: https://github.com/rergards/mempalace-code/releases
1660
1788
  [python-shield]: https://img.shields.io/badge/python-3.11+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
1661
1789
  [python-link]: https://www.python.org/