mempalace-code 1.13.6__tar.gz → 1.13.8__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 (270) hide show
  1. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/CHANGELOG.md +51 -0
  2. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/PKG-INFO +2 -2
  3. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/README.md +1 -1
  4. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/README.md +13 -9
  5. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/BACKUP_RESTORE.md +8 -2
  6. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/LLM_USAGE_RULES.md +12 -3
  7. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/RELEASING.md +4 -4
  8. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/UPSTREAM_COMPARISON.md +68 -86
  9. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/scorecard.json +7 -7
  10. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/scorecard.md +7 -7
  11. mempalace_code-1.13.8/docs/quality/upstream-comparison.json +316 -0
  12. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/release-admission-rulesets.md +10 -2
  13. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/plugin.json +1 -1
  14. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/backup.py +2 -0
  15. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/knowledge_graph.py +68 -16
  16. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/dispatch.py +41 -2
  17. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/kg.py +13 -4
  18. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/storage.py +42 -6
  19. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/watcher.py +7 -7
  20. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/pyproject.toml +1 -1
  21. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_admission_checks.py +29 -4
  22. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_preflight.py +27 -3
  23. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_readiness_gate.py +307 -18
  24. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_backup.py +54 -0
  25. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_cli_command_modules.py +15 -0
  26. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_cli_golden_scenarios.py +11 -0
  27. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_embedding_runtime.py +182 -5
  28. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_knowledge_graph.py +259 -0
  29. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_mcp_protocol_compat.py +168 -0
  30. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_mcp_server.py +44 -0
  31. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_offline.py +7 -1
  32. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_preflight.py +41 -1
  33. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_readiness_gate.py +241 -15
  34. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_ruleset_contract.py +84 -2
  35. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_workflow_admission.py +44 -1
  36. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_storage.py +81 -0
  37. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_upstream_comparison_guard.py +9 -14
  38. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_watcher.py +63 -12
  39. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/uv.lock +1 -1
  40. mempalace_code-1.13.6/docs/quality/upstream-comparison.json +0 -382
  41. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/.gitignore +0 -0
  42. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/.gitleaks.toml +0 -0
  43. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/.pre-commit-config.yaml +0 -0
  44. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/AGENTS.md +0 -0
  45. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/CLAUDE.md +0 -0
  46. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/CONTRIBUTING.md +0 -0
  47. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/LICENSE +0 -0
  48. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/NOTICE +0 -0
  49. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/assets/mempalace_banner.jpg +0 -0
  50. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/BENCHMARKS.md +0 -0
  51. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/HYBRID_MODE.md +0 -0
  52. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/code_retrieval_bench.py +0 -0
  53. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/convomem_bench.py +0 -0
  54. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/data/code_retrieval_queries.json +0 -0
  55. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/demo_perf_budgets.json +0 -0
  56. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/demo_perf_budgets.py +0 -0
  57. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/dotnet_bench.py +0 -0
  58. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/embed_ab_bench.py +0 -0
  59. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/locomo_bench.py +0 -0
  60. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/longmemeval_bench.py +0 -0
  61. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/membench_bench.py +0 -0
  62. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/minilm_runtime_compatibility_fixture.json +0 -0
  63. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/results_embed_ab_2026-04-09.json +0 -0
  64. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/results_token_delta_mempalace.json +0 -0
  65. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/retrieval_quality_facts.json +0 -0
  66. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/token_delta_bench.py +0 -0
  67. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/benchmarks/token_delta_fixture_facts.json +0 -0
  68. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/AGENT_INSTALL.md +0 -0
  69. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/BENCH_TOKEN_DELTA.md +0 -0
  70. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/COMPARISON_GRAPHIFY.md +0 -0
  71. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/DEPENDENCY_UPGRADE_GATE.md +0 -0
  72. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/HOW_SEARCH_WORKS.md +0 -0
  73. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/OFFLINE_USAGE.md +0 -0
  74. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/UPDATES.md +0 -0
  75. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/UPSTREAM_HARDENING.md +0 -0
  76. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/WHY_THIS_FORK.md +0 -0
  77. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/demo/code-intelligence-packet.json +0 -0
  78. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/demo/code-intelligence-packet.md +0 -0
  79. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/dependency-audit-allowlist.json +0 -0
  80. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/PALACE-SCOPE-RESOURCE-BOUNDARY.md +0 -0
  81. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/README.md +0 -0
  82. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/autopilot-demo-gate-ledger.json +0 -0
  83. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/autopilot-demo-gate-ledger.md +0 -0
  84. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/quality/workflow-review-protocol.md +0 -0
  85. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/docs/refactoring/REFAC-MINER-MODULES/progress.md +0 -0
  86. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/examples/HOOKS_TUTORIAL.md +0 -0
  87. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/examples/basic_mining.py +0 -0
  88. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/examples/convo_import.py +0 -0
  89. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/examples/gemini_cli_setup.md +0 -0
  90. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/examples/mcp_setup.md +0 -0
  91. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/hooks/README.md +0 -0
  92. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/hooks/mempal_precompact_hook.sh +0 -0
  93. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/hooks/mempal_save_hook.sh +0 -0
  94. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace/__init__.py +0 -0
  95. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace/mcp_server.py +0 -0
  96. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/README.md +0 -0
  97. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/__init__.py +0 -0
  98. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/__main__.py +0 -0
  99. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/_stdio.py +0 -0
  100. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/mcp.json +0 -0
  101. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/schemas/1.0.0/mcp.schema.json +0 -0
  102. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/schemas/1.0.0/plugin.schema.json +0 -0
  103. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/schemas/SCHEMA-NOTICE.md +0 -0
  104. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugin/skills/mempalace/SKILL.md +0 -0
  105. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/agent_plugins.py +0 -0
  106. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/architecture.py +0 -0
  107. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli.py +0 -0
  108. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/__init__.py +0 -0
  109. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/agent_plugin.py +0 -0
  110. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/alias.py +0 -0
  111. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/backup_restore.py +0 -0
  112. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/common.py +0 -0
  113. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/diary.py +0 -0
  114. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/export_import.py +0 -0
  115. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/ingest.py +0 -0
  116. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/maintenance.py +0 -0
  117. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/model.py +0 -0
  118. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/preflight.py +0 -0
  119. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/query.py +0 -0
  120. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/update.py +0 -0
  121. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/version_check.py +0 -0
  122. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/cli_commands/watch.py +0 -0
  123. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/config.py +0 -0
  124. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/convo_miner.py +0 -0
  125. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/dialect.py +0 -0
  126. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/disk_budget.py +0 -0
  127. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/entity_detector.py +0 -0
  128. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/entity_registry.py +0 -0
  129. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/export.py +0 -0
  130. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/general_extractor.py +0 -0
  131. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/language_catalog.py +0 -0
  132. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/layers.py +0 -0
  133. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/__init__.py +0 -0
  134. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/protocol_compat.py +0 -0
  135. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/protocol_text.py +0 -0
  136. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/registry.py +0 -0
  137. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/runtime.py +0 -0
  138. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/__init__.py +0 -0
  139. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/architecture.py +0 -0
  140. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/diary.py +0 -0
  141. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/graph.py +0 -0
  142. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/read.py +0 -0
  143. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/search.py +0 -0
  144. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp/tools/write.py +0 -0
  145. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp_launcher.py +0 -0
  146. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp_server.py +0 -0
  147. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mcp_tool_profiles.py +0 -0
  148. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/miner.py +0 -0
  149. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/__init__.py +0 -0
  150. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/batching.py +0 -0
  151. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/chunkers.py +0 -0
  152. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/kg_extract.py +0 -0
  153. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/languages.py +0 -0
  154. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/orchestrator.py +0 -0
  155. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/projects.py +0 -0
  156. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/scanner.py +0 -0
  157. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mining/symbols.py +0 -0
  158. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/mirror_preflight.py +0 -0
  159. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/normalize.py +0 -0
  160. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/onboarding.py +0 -0
  161. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/operation_lock.py +0 -0
  162. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/palace_graph.py +0 -0
  163. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/py.typed +0 -0
  164. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/reader.py +0 -0
  165. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/retrieval_rerank.py +0 -0
  166. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/room_detector_local.py +0 -0
  167. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/search_reranker.py +0 -0
  168. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/searcher.py +0 -0
  169. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/source_io.py +0 -0
  170. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/spellcheck.py +0 -0
  171. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/split_mega_files.py +0 -0
  172. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/taxonomy_filters.py +0 -0
  173. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/treesitter.py +0 -0
  174. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/updater.py +0 -0
  175. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/version.py +0 -0
  176. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/mempalace_code/version_check.py +0 -0
  177. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/pyrightconfig.strict.json +0 -0
  178. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/architecture_guard.py +0 -0
  179. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/bootstrap.sh +0 -0
  180. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/dependency_upgrade_gate.py +0 -0
  181. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/docs_drift_guard.py +0 -0
  182. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/gate_inventory.py +0 -0
  183. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/gen_code_intelligence_packet.py +0 -0
  184. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/gitleaks_scan.py +0 -0
  185. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/nuke_wing.py +0 -0
  186. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/public_safety_scan.py +0 -0
  187. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/quality_scorecard.py +0 -0
  188. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_artifact_gate.py +0 -0
  189. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_install_metadata_smoke.py +0 -0
  190. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_public_read.py +0 -0
  191. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/release_status_gate.py +0 -0
  192. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/upstream_comparison_guard.py +0 -0
  193. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/scripts/workflow_summary_guard.py +0 -0
  194. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/conftest.py +0 -0
  195. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/fixtures/unreasoned_suppression.py +0 -0
  196. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/release_smoke_support.py +0 -0
  197. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_agent_plugin_package.py +0 -0
  198. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_agent_skill_authority_contract.py +0 -0
  199. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_architecture_extraction.py +0 -0
  200. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_architecture_guard.py +0 -0
  201. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_autopilot_demo_gate_ledger.py +0 -0
  202. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_backup_cli.py +0 -0
  203. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_chunking.py +0 -0
  204. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_cli.py +0 -0
  205. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_code_intelligence_packet.py +0 -0
  206. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_code_retrieval_bench.py +0 -0
  207. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_config.py +0 -0
  208. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_convo_miner.py +0 -0
  209. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_demo_perf_budgets.py +0 -0
  210. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_dependency_upgrade_gate.py +0 -0
  211. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_dialect.py +0 -0
  212. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_disk_budget.py +0 -0
  213. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_docs_drift_guard.py +0 -0
  214. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_dotnet_bench.py +0 -0
  215. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_dotnet_config.py +0 -0
  216. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_e2e.py +0 -0
  217. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_embed_ab_bench.py +0 -0
  218. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_entity_detector.py +0 -0
  219. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_entity_registry.py +0 -0
  220. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_export.py +0 -0
  221. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_gate_inventory.py +0 -0
  222. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_general_extractor.py +0 -0
  223. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_gitleaks_scan.py +0 -0
  224. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_installed_artifact_behavior.py +0 -0
  225. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_installed_cli_palace_scope.py +0 -0
  226. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_kg_extract.py +0 -0
  227. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_lang_detect.py +0 -0
  228. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_language_catalog.py +0 -0
  229. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_layers.py +0 -0
  230. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_mcp_registry.py +0 -0
  231. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_mcp_tool_profiles.py +0 -0
  232. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_miner.py +0 -0
  233. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_miner_modules.py +0 -0
  234. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_normalize.py +0 -0
  235. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_onboarding.py +0 -0
  236. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_operation_lock.py +0 -0
  237. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_packaging_namespace.py +0 -0
  238. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_palace_graph.py +0 -0
  239. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_palace_scope_resource_boundary.py +0 -0
  240. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_public_safety_scan.py +0 -0
  241. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_pyright_optional_dependencies.py +0 -0
  242. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_quality_palace_scope_resource_boundary.py +0 -0
  243. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_quality_scorecard.py +0 -0
  244. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_reader.py +0 -0
  245. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_regular_source_guard.py +0 -0
  246. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_artifact_gate.py +0 -0
  247. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_install_metadata_smoke.py +0 -0
  248. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_public_read.py +0 -0
  249. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_skill_contract.py +0 -0
  250. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_release_status_gate.py +0 -0
  251. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_retrieval_rerank.py +0 -0
  252. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_search_reranker.py +0 -0
  253. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_searcher.py +0 -0
  254. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_split_mega_files.py +0 -0
  255. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_stdio.py +0 -0
  256. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_storage_lance.py +0 -0
  257. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_symbol_extract.py +0 -0
  258. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_taxonomy_filters.py +0 -0
  259. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_token_delta_bench.py +0 -0
  260. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_treesitter.py +0 -0
  261. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_type_suppressions.py +0 -0
  262. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_updater.py +0 -0
  263. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_version_check.py +0 -0
  264. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_version_consistency.py +0 -0
  265. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_watcher_resource_bounds.py +0 -0
  266. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_watcher_resource_subprocess.py +0 -0
  267. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tests/test_workflow_summary_guard.py +0 -0
  268. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tools/gitleaks/go.mod +0 -0
  269. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tools/gitleaks/go.sum +0 -0
  270. {mempalace_code-1.13.6 → mempalace_code-1.13.8}/tools/gitleaks/tools.go +0 -0
@@ -2,6 +2,57 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v1.13.8 — 2026-09-02
6
+
7
+ Recovery release for the accumulated v1.13.7 changes. The immutable v1.13.7
8
+ tag stopped before artifact build when the pinned upstream head moved, so no
9
+ v1.13.7 package or GitHub Release exists.
10
+
11
+ ### Fixed
12
+
13
+ - Temporal KG queries now classify bounded, expired, and future facts against
14
+ their full validity windows; statistics reconcile current, expired, and
15
+ future facts. Omitted invalidation bounds retire facts at the current UTC
16
+ instant while explicit date-only bounds remain inclusive through that day.
17
+ - Invalid KG directions return bounded argument errors, including JSON-RPC
18
+ `-32602` through MCP.
19
+ - A decoded non-object JSON-RPC envelope returns `-32600` without terminating
20
+ the stdio server, so the next valid request is still served.
21
+ - Concurrent first-open KG initialization now retries a short bounded
22
+ `SQLITE_BUSY` window instead of repeating the WAL transition immediately.
23
+
24
+ ### Changed
25
+
26
+ - Refreshed the reviewed upstream snapshot through `d9f05907`. Its optional
27
+ three-tool PQL facade, temporal response buckets, and logstream coordination
28
+ remain outside this fork because the existing typed MCP profiles already own
29
+ the supported surface.
30
+ - Added the failed v1.13.7 tag to the immutable orphan-tag evidence registry.
31
+ - The installed-wheel release gate now exercises temporal KG classification,
32
+ invalid direction recovery, malformed-envelope recovery, and the existing
33
+ concurrent-watcher KG path through the built applications.
34
+
35
+ ## v1.13.7 — 2026-09-02 (tagged, not published)
36
+
37
+ The tag remains immutable public evidence. Publication stopped before artifact
38
+ build because the reviewed upstream head changed; these changes ship in v1.13.8.
39
+
40
+ ### Fixed
41
+
42
+ - Canonical FastEmbed mining now applies the existing 256-token contract to
43
+ batch padding, preventing mixed-length inputs from failing with an
44
+ `inhomogeneous shape` error.
45
+ - The pinned .NET retrieval benchmark now participates in the existing
46
+ `release-required` aggregate, so a red or missing benchmark blocks the exact
47
+ release candidate.
48
+ - Backup retention now treats a backup removed concurrently by another process
49
+ as an idempotent success while still reporting other filesystem failures.
50
+ - Watcher startup now reports whether post-mine optimization was refused by a
51
+ safety check or failed with an error, with a direct health-check recovery step.
52
+ - Concurrent watchers can initialize one fresh palace safely: Lance table
53
+ creation is idempotent, and SQLite knowledge-graph WAL setup retries one
54
+ initial busy collision without hiding unrelated failures.
55
+
5
56
  ## v1.13.6 — 2026-09-01
6
57
 
7
58
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mempalace-code
3
- Version: 1.13.6
3
+ Version: 1.13.8
4
4
  Summary: Developer memory tool — mine codebases and conversations into a LanceDB-backed searchable palace. No API key required.
5
5
  Project-URL: Homepage, https://github.com/rergards/mempalace-code
6
6
  Project-URL: Repository, https://github.com/rergards/mempalace-code
@@ -1275,7 +1275,7 @@ python -m pyright --pythonpath "$(python -c 'import sys; print(sys.executable)')
1275
1275
  Apache 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
1276
1276
 
1277
1277
  <!-- Link Definitions -->
1278
- [version-shield]: https://img.shields.io/badge/version-1.13.6-4dc9f6?style=flat-square&labelColor=0a0e14
1278
+ [version-shield]: https://img.shields.io/badge/version-1.13.8-4dc9f6?style=flat-square&labelColor=0a0e14
1279
1279
  [release-link]: https://github.com/rergards/mempalace-code/releases
1280
1280
  [python-shield]: https://img.shields.io/badge/python-3.11+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
1281
1281
  [python-link]: https://www.python.org/
@@ -1216,7 +1216,7 @@ python -m pyright --pythonpath "$(python -c 'import sys; print(sys.executable)')
1216
1216
  Apache 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
1217
1217
 
1218
1218
  <!-- Link Definitions -->
1219
- [version-shield]: https://img.shields.io/badge/version-1.13.6-4dc9f6?style=flat-square&labelColor=0a0e14
1219
+ [version-shield]: https://img.shields.io/badge/version-1.13.8-4dc9f6?style=flat-square&labelColor=0a0e14
1220
1220
  [release-link]: https://github.com/rergards/mempalace-code/releases
1221
1221
  [python-shield]: https://img.shields.io/badge/python-3.11+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
1222
1222
  [python-link]: https://www.python.org/
@@ -227,21 +227,25 @@ HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 python benchmarks/dotnet_bench.py \
227
227
 
228
228
  ### CI Gate
229
229
 
230
- The workflow `.github/workflows/dotnet-bench.yml` runs on every pull request to
231
- `main` and every push to `main`. It:
230
+ The `dotnet-bench` job in `.github/workflows/ci.yml` runs for every `Tests`
231
+ workflow event. Pull requests to `main` and pushes to `main` or `release/v*` can
232
+ provide release evidence; `workflow_dispatch` is diagnostic only and cannot
233
+ satisfy release admission. The job:
232
234
 
233
235
  1. Fetches `jasontaylordev/CleanArchitecture` at the pinned commit
234
236
  `5a600ab8749c110384bc3bd436b9c67f3067b489` and verifies `HEAD` matches.
235
237
  2. Runs `--validate-queries` to confirm expected files are present in the corpus.
236
238
  3. Runs the benchmark with `--fail-under-r5 0.900`; exits 1 when overall R@5
237
239
  falls below 0.900.
238
- 4. Uploads `benchmarks/results_dotnet_bench_ci.json` as a build artifact, even
239
- on failure, so the report is always available.
240
-
241
- To skip the benchmark on a pull request (e.g. for documentation-only changes),
242
- add the **`skip-bench`** label. The job is skipped before cloning
243
- CleanArchitecture or downloading the embedding model. Pushes to `main` always
244
- run the benchmark regardless of labels.
240
+ 4. Uploads `benchmarks/results_dotnet_bench_ci.json` as the
241
+ `dotnet-bench-results` artifact even on failure.
242
+ 5. Feeds the existing `release-required` aggregate. A failed, skipped, or missing
243
+ benchmark blocks release admission.
244
+
245
+ The job has no skip label. If it fails, inspect `dotnet-bench-results`, then run
246
+ the reproduction command above against the pinned commit. Recover by rerunning
247
+ the failed push or pull-request `Tests` run for the same candidate SHA; never
248
+ dispatch a new run as release evidence.
245
249
 
246
250
  ## What Each Benchmark Tests
247
251
 
@@ -381,8 +381,14 @@ The watcher emits grep-friendly `WATCH_RUN` lines at each startup transition so
381
381
  | `WATCH_RUN run_id=<id> state=initial-mine-completed` | Initial mine finished successfully |
382
382
  | `WATCH_RUN run_id=<id> state=initial-mine-skipped reason=disk-budget` | Mine skipped because disk budget is too low |
383
383
  | `WATCH_RUN run_id=<id> state=optimize-completed` | Post-mine optimize pass succeeded |
384
- | `WATCH_RUN run_id=<id> state=optimize-skipped reason=backup-gate` | Optimize skipped (backup gate rejected) |
385
- | `WATCH_RUN run_id=<id> state=watch-ready` | All startup gates passed; daemon entered the watch loop |
384
+ | `WATCH_RUN run_id=<id> state=optimize-skipped reason=safety-check` | Safe optimize refused or failed; see the preceding storage log for the precise cause |
385
+ | `WATCH_RUN run_id=<id> state=optimize-skipped reason=error` | Optimize raised an unexpected error; the preceding optimize line contains the cause |
386
+ | `WATCH_RUN run_id=<id> state=watch-ready` | Daemon entered the watch loop; inspect earlier markers for startup work that was skipped |
387
+
388
+ For either `optimize-skipped` reason, the initial mine completed but optimization did not.
389
+ The watcher continues. Inspect the preceding optimize output, then run
390
+ `mempalace-code --palace /path/palace health`; if it recurs, resolve that reported storage
391
+ error before restarting.
386
392
 
387
393
  The `run_id` is unique per startup attempt. An appended log file may contain `WATCH_RUN` lines from older runs that exited with disk-budget or backup failures. To find the latest healthy startup, locate the last `state=watch-ready` line and use its `run_id` to filter the associated transitions:
388
394
 
@@ -107,7 +107,7 @@ For large monorepos, prefer the highest-ROI initialized subdirectory first when
107
107
  ## Existing memory systems
108
108
 
109
109
  If the repo already has curated memory docs (`MEMORY.md`, project notes, hand-written summaries), do not mirror them wholesale into drawers. Use stores by job:
110
- - KG = volatile current facts that need exact lookup or history.
110
+ - KG = temporal facts that need exact lookup, current-state filtering, or history.
111
111
  - Drawers = verbatim source material, decisions, root causes, and discussion excerpts.
112
112
  - Diary = this agent's own continuity notes.
113
113
  - Curated docs = compressed narrative, rationale, and human-maintained summaries.
@@ -118,7 +118,16 @@ Do not turn a carefully compressed memory file into drawer content unless the hu
118
118
 
119
119
  Use the KG for facts that **change over time** or need **exact-match lookup** — version numbers, stack choices, ownership, statuses, deadlines.
120
120
 
121
- Update protocol: `mempalace_kg_query` → `mempalace_kg_invalidate` (old triple, today's date) → `mempalace_kg_add` (new triple, validity window). Never leave two live triples for the same `(subject, predicate)`.
121
+ `mempalace_kg_query` without `as_of` returns historical, current, and future
122
+ facts with an explicit `current` output field. For present state, filter the
123
+ returned facts where `current` is `true`; never send `current` as an input
124
+ argument. Pass `as_of` when the question names another date.
125
+
126
+ Update protocol: `mempalace_kg_query` → select the intended returned triple
127
+ whose `current` field is `true` → `mempalace_kg_invalidate` (omit `ended` to
128
+ retire it now; pass a date for an inclusive end-of-day bound) →
129
+ `mempalace_kg_add` (new triple, validity window). Never leave two current
130
+ triples for the same `(subject, predicate)`.
122
131
 
123
132
  Bad for KG: code patterns, debugging notes, prose — those belong in a drawer.
124
133
 
@@ -265,7 +274,7 @@ Active tools: `mempalace_status`, `mempalace_search`, `mempalace_check_duplicate
265
274
  | Semantic search | `mempalace_search` |
266
275
  | Duplicate check before filing | `mempalace_check_duplicate` |
267
276
  | Save a decision or note | `mempalace_add_drawer` |
268
- | Query an entity's current facts | `mempalace_kg_query` |
277
+ | Query an entity's temporal facts; filter returned facts by the `current` output field for present state | `mempalace_kg_query` |
269
278
  | Add a temporal fact | `mempalace_kg_add` |
270
279
  | Retire an outdated fact | `mempalace_kg_invalidate` |
271
280
  | See how facts changed over time | `mempalace_kg_timeline` |
@@ -50,7 +50,7 @@ python scripts/docs_drift_guard.py
50
50
  python scripts/public_safety_scan.py --tracked --staged
51
51
  python scripts/quality_scorecard.py --check
52
52
  python scripts/release_preflight.py --tag vX.Y.Z --require-clean
53
- python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --check-public-main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset
53
+ python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --check-public-main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset --check-public-orphan-tags
54
54
  python scripts/release_install_metadata_smoke.py --all-installers --install-spec . --json
55
55
  WHEEL=dist/mempalace_code-X.Y.Z-py3-none-any.whl
56
56
  python scripts/release_readiness_gate.py --installed-golden-wheel "$WHEEL" --json
@@ -165,7 +165,7 @@ The exact-SHA release admission command is the publication boundary after the
165
165
  operator has reviewed the candidate commit and fetched the public target:
166
166
 
167
167
  ```bash
168
- python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --candidate-ref publish/main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset
168
+ python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --candidate-ref publish/main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset --check-public-orphan-tags
169
169
  ```
170
170
 
171
171
  This command binds `HEAD`, the intended `vX.Y.Z` tag target, the
@@ -320,7 +320,7 @@ owner:
320
320
 
321
321
  ```bash
322
322
  test "$(git rev-parse HEAD)" = "$CANDIDATE_SHA"
323
- python scripts/release_preflight.py --require-clean --expect-sha "$CANDIDATE_SHA" --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset
323
+ python scripts/release_preflight.py --require-clean --expect-sha "$CANDIDATE_SHA" --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset --check-public-orphan-tags
324
324
  ```
325
325
 
326
326
  A non-zero exit means the release is not admissible. Fix the reported row and
@@ -356,7 +356,7 @@ Public `main` has moved, so re-run exact-SHA admission — this time bound to
356
356
  `publish/main` — before any tag exists:
357
357
 
358
358
  ```bash
359
- python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --candidate-ref publish/main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset
359
+ python scripts/release_preflight.py --tag vX.Y.Z --require-clean --expect-sha <40-hex-candidate-sha> --candidate-ref publish/main --check-required-check --check-dependency-audit --check-branch-rules --check-tag-ruleset --check-public-orphan-tags
360
360
  ```
361
361
 
362
362
  A non-zero exit means the release is not admissible. Fix the reported row; do
@@ -14,14 +14,14 @@ document, and the README pointer consistent.
14
14
 
15
15
  | Field | Value |
16
16
  |---|---|
17
- | Reviewed date | `2026-08-31` |
17
+ | Reviewed date | `2026-09-02` |
18
18
  | Canonical upstream repository | <https://github.com/MemPalace/mempalace> |
19
19
  | Branch reviewed | `develop` |
20
- | Commit reviewed | `e8098348ddfce59964fe536e5deffb81da579e6b` |
21
- | Previous reviewed commit | `a9f345cc63254eb4dea7abad36963b85c9f8453a` |
22
- | Previous reviewed date | `2026-08-29` |
20
+ | Commit reviewed | `d9f059076c866fa6f29195679d75712436986024` |
21
+ | Previous reviewed commit | `e8098348ddfce59964fe536e5deffb81da579e6b` |
22
+ | Previous reviewed date | `2026-08-31` |
23
23
  | Upstream release described by its changelog | `3.9.0` |
24
- | Upstream paths tracked for drift | `README.md`, `CHANGELOG.md`, `pyproject.toml`, plugin/MCP metadata, update awareness, hub, logstream, MCP, search, embedding, Qdrant, benchmark, configuration, split-file, and RFC 003–005 sources |
24
+ | Upstream paths tracked for drift | `README.md`, `CHANGELOG.md`, `pyproject.toml`, plugin/MCP metadata, update awareness, hub, logstream, MCP, lightweight MCP/PQL, KG, CLI, search, embedding, Qdrant, benchmark, coordination, configuration, split-file, and RFC 003–005 sources |
25
25
  | Fork commit at review time | this repository, `main` |
26
26
 
27
27
  All upstream statements below are limited to the pinned public sources. Upstream
@@ -32,90 +32,66 @@ or independently compatibility-tested.
32
32
 
33
33
  Pinned primary upstream sources, all at the reviewed commit:
34
34
 
35
- - <https://github.com/MemPalace/mempalace/tree/e8098348ddfce59964fe536e5deffb81da579e6b>
36
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/README.md>
37
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/CHANGELOG.md>
38
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/pyproject.toml>
39
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/.codex-plugin/plugin.json>
40
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/.claude-plugin/plugin.json>
41
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/.agents/plugins/marketplace.json>
42
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/.mcp.json>
43
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/config.py>
44
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/split_mega_files.py>
45
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/update_awareness.py>
46
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/hub_client.py>
47
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/logstream.py>
48
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/mcp_server.py>
49
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/searcher.py>
50
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/embedding.py>
51
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/mempalace/backends/qdrant.py>
52
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/benchmarks/PRIVATE_PALACE.md>
53
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/docs/rfcs/003-agent-logstream-coordination.md>
54
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/docs/rfcs/004-replicated-palace.md>
55
- - <https://github.com/MemPalace/mempalace/blob/e8098348ddfce59964fe536e5deffb81da579e6b/docs/rfcs/005-agent-identity-routing.md>
35
+ - <https://github.com/MemPalace/mempalace/tree/d9f059076c866fa6f29195679d75712436986024>
36
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/README.md>
37
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/CHANGELOG.md>
38
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/pyproject.toml>
39
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/.codex-plugin/plugin.json>
40
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/.claude-plugin/plugin.json>
41
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/.agents/plugins/marketplace.json>
42
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/.mcp.json>
43
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/config.py>
44
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/split_mega_files.py>
45
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/update_awareness.py>
46
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/hub_client.py>
47
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/logstream.py>
48
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/mcp_server.py>
49
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/searcher.py>
50
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/embedding.py>
51
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/backends/qdrant.py>
52
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/benchmarks/PRIVATE_PALACE.md>
53
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/docs/rfcs/003-agent-logstream-coordination.md>
54
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/docs/rfcs/004-replicated-palace.md>
55
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/docs/rfcs/005-agent-identity-routing.md>
56
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/integrations/shared/coordination-protocol.md>
57
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/cli.py>
58
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/knowledge_graph.py>
59
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/mcp_light_server.py>
60
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/mempalace/query_parser.py>
61
+ - <https://github.com/MemPalace/mempalace/blob/d9f059076c866fa6f29195679d75712436986024/website/guide/lightweight-mcp.md>
56
62
 
57
63
  The exact public range between the previous pin and this one is:
58
64
 
59
- - <https://github.com/MemPalace/mempalace/compare/a9f345cc63254eb4dea7abad36963b85c9f8453a...e8098348ddfce59964fe536e5deffb81da579e6b>
65
+ - <https://github.com/MemPalace/mempalace/compare/e8098348ddfce59964fe536e5deffb81da579e6b...d9f059076c866fa6f29195679d75712436986024>
60
66
 
61
67
  ## Upstream Delta Since the Previous Pin
62
68
 
63
- The compare range contains 47 commits. Each commit is owned exactly once by one
64
- of the 12 first-parent merge groups below. Each group has one stance from the
69
+ The compare range contains 10 commits. Each commit is owned exactly once by the
70
+ single first-parent merge group below. The group has one stance from the
65
71
  closed set `adopted`, `equivalent-local`, `migration-only`, `deferred`, or
66
72
  `irrelevant`.
67
73
 
68
74
  | Delta decision | Upstream change, as its sources describe it | Stance | Release-critical | Merge group |
69
75
  |---|---|---|---|---|
70
- | `opt-in-release-awareness` | Disabled-by-default stable-release checks, cached agent status, and installer-specific upgrade plans | `equivalent-local` | yes | `dae19f61` |
71
- | `release-history-sync` | Develop imports the 3.7.1 and 3.8.0 main release merge ancestry | `irrelevant` | no | `45ee7608` |
72
- | `logstream-topic-reverse-pagination` | Logstream topic routing plus status, before-event, and ordering filters | `irrelevant` | no | `c524d11a` |
73
- | `ruff-precommit-pin` | Upstream pre-commit Ruff pin alignment | `irrelevant` | no | `b54f64cd` |
74
- | `docker-login-action-update` | Upstream image workflow raises docker/login-action to 4.6.0 | `irrelevant` | no | `6242edfb` |
75
- | `qdrant-bounded-get-scroll` | Qdrant bounds safe paged `get()` scrolling by offset plus limit | `irrelevant` | no | `49737d50` |
76
- | `concurrent-hub-palace-reads` | HTTP MCP palace reads use a shared lock while writes remain exclusive | `irrelevant` | no | `da245c6c` |
77
- | `closet-search-source-index` | Closet search indexes source lookups and reports raw vector similarity | `irrelevant` | no | `6597908a` |
78
- | `private-palace-search-benchmark` | A private-palace search benchmark harness and operator procedure | `irrelevant` | no | `b0b10aa8` |
79
- | `embeddinggemma-batch-size-override` | EmbeddingGemma sub-batch size becomes configurable | `irrelevant` | no | `dc43751c` |
80
- | `live-hub-cli-search-forwarding` | CLI search reuses a compatible live hub with configuration, output, and token guards | `irrelevant` | no | `307a6765` |
81
- | `release-3-9-0-metadata` | Package, plugin, integration, badge, lockfile, and changelog sources move to 3.9.0 | `irrelevant` | no | `e8098348` |
82
-
83
- The manifest records the exact 47-commit full-range inventory for
84
- `a9f345cc..e8098348`: 12 top-level merge commits, four nested merge commits,
85
- and a 31-commit non-merge constituent subset. Its SHA-256 anchor is
86
- `4ee827c643113410c17140162f4650930586a5b4ea92d28ca720b2ec6cd648df`.
76
+ | `lightweight-mcp-pql` | Optional three-tool MCP facade with PQL/structured inputs, KG temporal buckets, and on-demand logstream coordination guidance | `irrelevant` | no | `d9f05907` |
77
+
78
+ The manifest records the exact 10-commit full-range inventory for
79
+ `e8098348..d9f05907`: one top-level merge commit, zero nested merge commits,
80
+ and a nine-commit non-merge constituent subset. Its SHA-256 anchor is
81
+ `127aa2ccb94b5e549c305a9cc4317ba4a2f6c0488b5db1707ead7e8cb4a5d24c`.
87
82
  Grouped by the top-level merge commits:
88
83
 
89
- - `dae19f61`: `c83f1ebc`, `8baf1df4`
90
- - `45ee7608`: `359c579d` (nested merge), `87e6f383` (nested merge), `98a0f824` (nested merge)
91
- - `c524d11a`: `148bc6f2`
92
- - `b54f64cd`: `59ce3588`
93
- - `6242edfb`: `238b5ce9`
94
- - `49737d50`: `720f3d81`
95
- - `da245c6c`: `dc085859`
96
- - `6597908a`: `fe98bfce`
97
- - `b0b10aa8`: `3bf31aaa`
98
- - `dc43751c`: `a616a577`
99
- - `307a6765`: `b232fa3d`, `87ec8545`, `460924eb`, `90e8214b`, `67be3950`, `ae8a4e8c`, `fd556bee`, `e9616245`, `bd94b7f4`, `733a0c6d`, `e016aff4`, `2edd215b`, `24dc2e6b`, `4a971ef3`, `90dcd41f`, `f19ea69f`, `648ef944`, `75770f4f`, `722bf22a`, `e20384c7`, `c044acda` (nested merge)
100
- - `e8098348`: `434f00b5`
101
-
102
- **Equivalent locally.** `opt-in-release-awareness` maps to the fork's existing
103
- version-check and updater owners. Checks and scheduling are disabled by default;
104
- `update status` and `update check` are explicit read-only paths; `update apply
105
- --yes` requires confirmation and a supported installer; malformed configuration,
106
- unsupported platforms, and overlapping scheduled work fail closed. The cited
107
- predicates verify those outcomes. Upstream's MCP cached-status response shape is
108
- outside this equivalence claim.
109
-
110
- **Not applicable.** The fork has no live HTTP hub, logstream database, closet
111
- index, EmbeddingGemma runtime, Qdrant backend, upstream Docker publication, or
112
- upstream release-metadata owner. The private benchmark supplies no comparable
113
- fork measurement. Repository-only dependency, history, and version changes
114
- remain owned by each repository.
115
-
116
- The release-critical update-awareness row is closed by existing local predicates.
117
- The range therefore has zero unresolved release-critical decisions and imports no
118
- upstream runtime behavior.
84
+ - `d9f05907`: `85d60c90`, `17936626`, `478ecee9`, `66b3b23d`, `4aa1e7f1`, `bf30db9b`, `be27f731`, `57ab367a`, `ea0c780b`
85
+
86
+ **Not applicable.** The fork already has one typed MCP registry: 29 tools in the
87
+ full profile and four tools in the portable minimal profile. Importing a second
88
+ free-form PQL parser and server would duplicate that owner and add hub,
89
+ logstream, and fuzzy-resolution contracts absent from this fork. The local KG
90
+ retains typed tool arguments and returns explicit temporal state on its existing
91
+ query surfaces.
92
+
93
+ The range has no release-critical decisions and imports no upstream runtime
94
+ behavior.
119
95
 
120
96
  ## Capability Comparison
121
97
 
@@ -126,9 +102,10 @@ upstream runtime behavior.
126
102
  | Embeddings | New onboarding offers multilingual `embeddinggemma-300m`; opt-in `openai-compat` targets an OpenAI-compatible endpoint; 3.9.0 adds an EmbeddingGemma sub-batch override | `all-MiniLM-L6-v2`; no supported multilingual configuration or migration path, and no remote embedding-provider integration |
127
103
  | Search | Date-window filtering is advertised; 3.9.0 can forward compatible CLI searches to a live hub and reports raw vector similarity for closet-enriched search | No date-window or live-hub forwarding surface; local Lance search remains process-local |
128
104
  | Agent integration | A Hermes `MemoryProvider`, source adapters, shared-hub routing, and skill-first coordination are advertised | No Hermes provider, source-adapter ingestion, or shared-hub surface |
129
- | MCP count and plugin wording | README and Claude plugin wording say 45 MCP tools; the Codex plugin wording says 44 | Direct stdio MCP registration defaults to the full 29-tool profile |
105
+ | MCP count and plugin wording | README and Claude plugin wording say 45 MCP tools; the Codex plugin wording says 44; an optional lightweight facade exposes three PQL/structured tools | Direct stdio MCP registration defaults to the typed 29-tool profile; the portable package defaults to four typed tools |
130
106
  | Plugin metadata | Codex manifest identifies `mempalace` version 3.9.0 and points at `.mcp.json` | Standards-conformant Agent Plugins 1.0 portable package with a four-tool default |
131
- | Coordination and replication | Logstream includes watcher behavior, topic routing, reverse pagination, artifact handoffs, and an RFC 004 multi-master foundation | No logstream, palace replication, mesh, or live-hub transport |
107
+ | Coordination and replication | Logstream includes watcher behavior, topic routing, reverse pagination, artifact handoffs, on-demand coordination guidance, and an RFC 004 multi-master foundation | No logstream, palace replication, mesh, or live-hub transport |
108
+ | KG query shape | Entity candidates can be resolved through the lightweight facade and partitioned into active, historical, and future facts | Existing typed KG tools return each fact with explicit temporal state; no PQL or fuzzy entity-resolution layer |
132
109
  | Hub concurrency | HTTP MCP permits concurrent palace reads while retaining exclusive writes | Stdio-only MCP; no shared HTTP palace lock |
133
110
  | Update awareness | Stable-release checks are opt-in, cached, agent-visible, and do not install automatically | Disabled-by-default version checks plus explicit `update status`, `update check`, and confirmed `update apply --yes`; no upstream MCP cached-status compatibility claim |
134
111
  | Benchmarks | A private-palace search benchmark procedure is published | Independent local benchmark gates; no cross-project result equivalence claim |
@@ -180,6 +157,9 @@ Upstream, advertised at the reviewed commit:
180
157
  - `qdrant-bounded-get-scroll`
181
158
  - `closet-search-source-index`
182
159
  - `private-palace-search-benchmark`
160
+ - `lightweight-mcp-pql-three-tools`
161
+ - `kg-entity-candidate-temporal-buckets`
162
+ - `on-demand-logstream-coordination`
183
163
 
184
164
  This fork, current:
185
165
 
@@ -200,9 +180,9 @@ This fork, current:
200
180
 
201
181
  ## Capability Sources
202
182
 
203
- The manifest carries the exact source mapping. The established capabilities
204
- remain pinned to README, changelog, plugin/MCP metadata, and RFC 003–005. The
205
- new 3.9.0 capabilities use these reviewed sources:
183
+ The manifest carries the exact source mapping. Established capabilities remain
184
+ pinned to README, changelog, plugin/MCP metadata, and RFC 003–005. The newest
185
+ delta uses these reviewed sources:
206
186
 
207
187
  | Upstream identifier | Read from |
208
188
  |---|---|
@@ -218,6 +198,9 @@ new 3.9.0 capabilities use these reviewed sources:
218
198
  | `qdrant-bounded-get-scroll` | `CHANGELOG.md`, `mempalace/backends/qdrant.py` |
219
199
  | `closet-search-source-index` | `CHANGELOG.md`, `mempalace/searcher.py` |
220
200
  | `private-palace-search-benchmark` | `benchmarks/PRIVATE_PALACE.md` |
201
+ | `lightweight-mcp-pql-three-tools` | lightweight MCP guide, `mempalace/mcp_light_server.py`, `mempalace/query_parser.py`, `mempalace/cli.py`, `pyproject.toml` |
202
+ | `kg-entity-candidate-temporal-buckets` | `mempalace/mcp_server.py`, `mempalace/knowledge_graph.py` |
203
+ | `on-demand-logstream-coordination` | `integrations/shared/coordination-protocol.md` |
221
204
 
222
205
  `mempalace/config.py` is also pinned for the live-hub search fingerprint.
223
206
  `mempalace/split_mega_files.py` and RFC 005 remain tracked because changes to
@@ -243,7 +226,8 @@ logstream, live-hub routing, and replication remain outside the local code-memor
243
226
  scope.
244
227
 
245
228
  **MCP and packages.** Direct MCP defaults to 29 tools. The separate Agent
246
- Plugins 1.0 portable package defaults to the four-tool `minimal` profile.
229
+ Plugins 1.0 portable package defaults to the four-tool `minimal` profile. The
230
+ fork keeps this one typed registry and does not import the optional PQL facade.
247
231
 
248
232
  ## Evidence Limits
249
233
 
@@ -252,10 +236,8 @@ Plugins 1.0 portable package defaults to the four-tool `minimal` profile.
252
236
  sources. No upstream behavior was run.
253
237
  - **Nothing was measured.** This document contains no cross-project benchmark,
254
238
  quality, performance, adoption, or compatibility measurement.
255
- - **Delta stances are about this fork.** Every commit is assigned to one merge
256
- group. The update-awareness row claims only equivalent local outcomes backed
257
- by the named predicates; the other 11 rows are repository-only `irrelevant`
258
- decisions with no local predicate claim.
239
+ - **Delta stances are about this fork.** Every commit is assigned to the one
240
+ merge group. Its `irrelevant` stance imports no local predicate claim.
259
241
  - **Plugin counts are source-local wording.** The pinned README and Claude plugin
260
242
  say 45 tools; the pinned Codex plugin says 44. The fork's 29-tool direct profile
261
243
  and four-tool portable default are independent.
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "code_size": {
3
- "package_code_lines": 24154,
3
+ "package_code_lines": 24281,
4
4
  "package_files": 80,
5
- "package_total_lines": 29373,
5
+ "package_total_lines": 29511,
6
6
  "test_files": 88,
7
- "test_total_lines": 80330
7
+ "test_total_lines": 81582
8
8
  },
9
9
  "demo_gates": {
10
10
  "architecture_guard": {
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "largest_modules": [
60
60
  {
61
- "lines": 2071,
61
+ "lines": 2107,
62
62
  "path": "mempalace_code/storage.py"
63
63
  },
64
64
  {
@@ -78,7 +78,7 @@
78
78
  "path": "mempalace_code/dialect.py"
79
79
  },
80
80
  {
81
- "lines": 987,
81
+ "lines": 989,
82
82
  "path": "mempalace_code/backup.py"
83
83
  },
84
84
  {
@@ -276,13 +276,13 @@
276
276
  "mempalace_code",
277
277
  "tests"
278
278
  ],
279
- "type_pyright_total": 170,
279
+ "type_pyright_total": 171,
280
280
  "type_pyright_unreasoned": 0,
281
281
  "unreasoned_total": 0
282
282
  },
283
283
  "tests": {
284
284
  "test_files": 88,
285
- "test_functions": 3721
285
+ "test_functions": 3755
286
286
  },
287
287
  "verification_commands": [
288
288
  {
@@ -9,21 +9,21 @@ Schema version: 4
9
9
  | Metric | Value |
10
10
  |--------|------:|
11
11
  | Package files (`mempalace_code/`) | 80 |
12
- | Package total lines | 29373 |
13
- | Package code lines | 24154 |
12
+ | Package total lines | 29511 |
13
+ | Package code lines | 24281 |
14
14
  | Test files (`tests/`) | 88 |
15
- | Test total lines | 80330 |
15
+ | Test total lines | 81582 |
16
16
 
17
17
  ## Largest Modules (top 10)
18
18
 
19
19
  | Module | Lines |
20
20
  |--------|------:|
21
- | `mempalace_code/storage.py` | 2071 |
21
+ | `mempalace_code/storage.py` | 2107 |
22
22
  | `mempalace_code/updater.py` | 1780 |
23
23
  | `mempalace_code/mining/chunkers.py` | 1466 |
24
24
  | `mempalace_code/watcher.py` | 1333 |
25
25
  | `mempalace_code/dialect.py` | 1074 |
26
- | `mempalace_code/backup.py` | 987 |
26
+ | `mempalace_code/backup.py` | 989 |
27
27
  | `mempalace_code/cli.py` | 947 |
28
28
  | `mempalace_code/mining/symbols.py` | 904 |
29
29
  | `mempalace_code/entity_detector.py` | 885 |
@@ -117,7 +117,7 @@ Scope: `mempalace_code/`, `tests/` (excludes `tests/fixtures/`).
117
117
 
118
118
  | Metric | Value |
119
119
  |--------|------:|
120
- | type/pyright ignores (total) | 170 |
120
+ | type/pyright ignores (total) | 171 |
121
121
  | type/pyright unreasoned | 0 |
122
122
  | noqa (total) | 39 |
123
123
  | noqa blanket | 0 |
@@ -128,7 +128,7 @@ Scope: `mempalace_code/`, `tests/` (excludes `tests/fixtures/`).
128
128
  | Metric | Value |
129
129
  |--------|------:|
130
130
  | Test files | 88 |
131
- | Test functions | 3721 |
131
+ | Test functions | 3755 |
132
132
 
133
133
  ## Available Suites
134
134