kernel-lore-mcp 0.3.0__tar.gz → 0.3.2__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 (277) hide show
  1. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CHANGELOG.md +69 -0
  2. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/Cargo.lock +1 -1
  3. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/Cargo.toml +1 -1
  4. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/PKG-INFO +16 -19
  5. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/README.md +15 -18
  6. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/TODO.md +35 -6
  7. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/public-launch-checklist.md +15 -0
  8. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/runbook.md +6 -0
  9. kernel_lore_mcp-0.3.2/docs/plans/2026-04-22-v0.3.1-plan.md +106 -0
  10. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/pyproject.toml +1 -1
  11. kernel_lore_mcp-0.3.2/scripts/bench/stress_mcp_multiprocess.py +789 -0
  12. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/sync.rs +302 -34
  13. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bm25.rs +52 -3
  14. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/ingest.rs +1 -1
  15. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/__init__.py +1 -1
  16. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/__main__.py +9 -0
  17. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/_core.pyi +20 -0
  18. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cost_class.py +15 -6
  19. kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/health.py +136 -0
  20. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/metrics.py +16 -0
  21. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/status.py +9 -1
  22. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/server.py +5 -0
  23. kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/time_bounds.py +118 -0
  24. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/timeout.py +11 -2
  25. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/activity.py +23 -2
  26. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/author_footprint.py +8 -23
  27. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/author_profile.py +30 -7
  28. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/file_timeline.py +18 -9
  29. kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/tools/fix_status.py +373 -0
  30. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/path_mentions.py +28 -2
  31. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/primitives.py +127 -8
  32. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/stable_backport.py +2 -6
  33. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/subsystem_churn.py +4 -7
  34. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/lib.rs +6 -1
  35. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/over.rs +405 -31
  36. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/python.rs +103 -15
  37. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/reader.rs +235 -61
  38. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/router.rs +114 -7
  39. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/sync.rs +1 -1
  40. kernel_lore_mcp-0.3.2/src/trailer_refs.rs +283 -0
  41. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cost_class.py +53 -0
  42. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_errors.py +5 -0
  43. kernel_lore_mcp-0.3.2/tests/python/test_fix_status.py +95 -0
  44. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_mcp_tools_e2e.py +11 -0
  45. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_observability.py +1 -0
  46. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_primitives_e2e.py +15 -0
  47. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_resources_routes.py +34 -0
  48. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_status_subcommand.py +5 -0
  49. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/uv.lock +1 -1
  50. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.github/workflows/ci.yml +0 -0
  51. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.github/workflows/release.yml +0 -0
  52. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.gitignore +0 -0
  53. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.python-version +0 -0
  54. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CLAUDE.md +0 -0
  55. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CONTRIBUTING.md +0 -0
  56. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/GOVERNANCE.md +0 -0
  57. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/LEGAL.md +0 -0
  58. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/LICENSE +0 -0
  59. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/SECURITY.md +0 -0
  60. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/README.md +0 -0
  61. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/data-flow.md +0 -0
  62. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/deployment-modes.md +0 -0
  63. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/four-tier-index.md +0 -0
  64. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/over-db.md +0 -0
  65. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/overview.md +0 -0
  66. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/reciprocity.md +0 -0
  67. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/trade-offs.md +0 -0
  68. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/demos/first-session.md +0 -0
  69. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/bm25-tier.md +0 -0
  70. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/compressed-store.md +0 -0
  71. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/metadata-tier.md +0 -0
  72. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/path-tier.md +0 -0
  73. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/tokenizer-spec.md +0 -0
  74. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/trigram-tier.md +0 -0
  75. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/grokmirror.md +0 -0
  76. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/mbox-parsing.md +0 -0
  77. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/patch-parsing.md +0 -0
  78. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/shard-walking.md +0 -0
  79. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/client-config.md +0 -0
  80. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/query-routing.md +0 -0
  81. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/tools.md +0 -0
  82. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/transport-auth.md +0 -0
  83. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/corpus-coverage.md +0 -0
  84. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/cost-model.md +0 -0
  85. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/ec2-sizing.md +0 -0
  86. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/monitoring.md +0 -0
  87. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/production-hardening.md +0 -0
  88. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/threat-model.md +0 -0
  89. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/update-cadence.md +0 -0
  90. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/update-frequency.md +0 -0
  91. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-14-best-in-class-kernel-mcp.md +0 -0
  92. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-15-internalize-grokmirror.md +0 -0
  93. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-15-mcp-spec-coverage-and-uplift.md +0 -0
  94. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-17-overdb-followups.md +0 -0
  95. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-17-overdb-metadata-tier.md +0 -0
  96. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-20-v0.3.0-plan.md +0 -0
  97. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-agent-ergonomics.md +0 -0
  98. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-best-in-class-mcp-survey.md +0 -0
  99. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-external-data-sources.md +0 -0
  100. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-gix-vs-git2.md +0 -0
  101. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-mcp-python-sdk.md +0 -0
  102. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-pyo3-maturin.md +0 -0
  103. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-search-library-landscape.md +0 -0
  104. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-storage-footprint.md +0 -0
  105. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-tantivy.md +0 -0
  106. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-workflow-gap-analysis.md +0 -0
  107. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-15-fuzzy-search-design.md +0 -0
  108. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-15-path-mentions.md +0 -0
  109. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-17-overdb-validation.md +0 -0
  110. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/training-retriever.md +0 -0
  111. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/README.md +0 -0
  112. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/01-research.md +0 -0
  113. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/02-design.md +0 -0
  114. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/03-implement.md +0 -0
  115. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/04-test.md +0 -0
  116. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/05-quality.md +0 -0
  117. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/06-review.md +0 -0
  118. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/07-commit.md +0 -0
  119. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/08-debug.md +0 -0
  120. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/09-optimize.md +0 -0
  121. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/10-document.md +0 -0
  122. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/index.md +0 -0
  123. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/code-quality.md +0 -0
  124. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/data-structures.md +0 -0
  125. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/boundaries.md +0 -0
  126. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/concurrency.md +0 -0
  127. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/dependencies.md +0 -0
  128. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/errors.md +0 -0
  129. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/modules.md +0 -0
  130. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/git.md +0 -0
  131. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/index.md +0 -0
  132. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/language.md +0 -0
  133. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/fastmcp.md +0 -0
  134. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/httpx.md +0 -0
  135. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/pydantic.md +0 -0
  136. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/structlog.md +0 -0
  137. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/naming.md +0 -0
  138. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/pyo3-maturin.md +0 -0
  139. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/testing.md +0 -0
  140. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/uv.md +0 -0
  141. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/cargo.md +0 -0
  142. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/01-research.md +0 -0
  143. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/02-design.md +0 -0
  144. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/03-implement.md +0 -0
  145. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/04-test.md +0 -0
  146. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/05-quality.md +0 -0
  147. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/06-review.md +0 -0
  148. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/07-commit.md +0 -0
  149. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/08-debug.md +0 -0
  150. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/09-optimize.md +0 -0
  151. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/10-document.md +0 -0
  152. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/index.md +0 -0
  153. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/code-quality.md +0 -0
  154. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/boundaries.md +0 -0
  155. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/concurrency.md +0 -0
  156. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/data-structures.md +0 -0
  157. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/errors.md +0 -0
  158. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/modules.md +0 -0
  159. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/ffi.md +0 -0
  160. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/index.md +0 -0
  161. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/language.md +0 -0
  162. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/arrow-parquet.md +0 -0
  163. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/gix.md +0 -0
  164. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/pyo3.md +0 -0
  165. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/regex-automata.md +0 -0
  166. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/roaring-fst.md +0 -0
  167. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/tantivy.md +0 -0
  168. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/zstd.md +0 -0
  169. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/naming.md +0 -0
  170. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/testing.md +0 -0
  171. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/unsafe.md +0 -0
  172. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/rust-toolchain.toml +0 -0
  173. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/agentic_smoke.sh +0 -0
  174. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/bench/bench_concurrent_mixed.py +0 -0
  175. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/bench/bench_hosted_adversarial.py +0 -0
  176. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/grokmirror-personal.conf +0 -0
  177. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/grokmirror.conf +0 -0
  178. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-doctor.sh +0 -0
  179. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-grok-pull.sh +0 -0
  180. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-ingest.sh +0 -0
  181. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/post-pull-hook.sh +0 -0
  182. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/rust_call_graph.py +0 -0
  183. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/etc-kernel-lore-mcp-env.sample +0 -0
  184. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-grokmirror.service +0 -0
  185. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-grokmirror.timer +0 -0
  186. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-ingest.path +0 -0
  187. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-ingest.service +0 -0
  188. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-mcp.service +0 -0
  189. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-sync.service +0 -0
  190. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-sync.timer +0 -0
  191. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/bench_blob_read.rs +0 -0
  192. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/bench_ingest_stages.rs +0 -0
  193. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/build_git_sidecar.rs +0 -0
  194. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/build_over.rs +0 -0
  195. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/doctor.rs +0 -0
  196. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/ingest.rs +0 -0
  197. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/reindex.rs +0 -0
  198. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/embedding.rs +0 -0
  199. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/error.rs +0 -0
  200. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/git_sidecar.rs +0 -0
  201. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/_surface_manifest.py +0 -0
  202. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/__init__.py +0 -0
  203. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/doctor.py +0 -0
  204. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/embed.py +0 -0
  205. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/ingest.py +0 -0
  206. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/sync.py +0 -0
  207. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/config.py +0 -0
  208. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cursor.py +0 -0
  209. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/embedding.py +0 -0
  210. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/errors.py +0 -0
  211. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/freshness.py +0 -0
  212. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/kwic.py +0 -0
  213. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/logging_.py +0 -0
  214. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/mapping.py +0 -0
  215. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/models.py +0 -0
  216. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/observability.py +0 -0
  217. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/prompts.py +0 -0
  218. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/reader_cache.py +0 -0
  219. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/__init__.py +0 -0
  220. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/blind_spots.py +0 -0
  221. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/coverage_stats.py +0 -0
  222. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/templates.py +0 -0
  223. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/__init__.py +0 -0
  224. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/sampling.py +0 -0
  225. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/__init__.py +0 -0
  226. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/corpus_stats.py +0 -0
  227. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/expand_citation.py +0 -0
  228. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/explain_patch.py +0 -0
  229. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/maintainer_profile.py +0 -0
  230. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/message.py +0 -0
  231. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/nearest.py +0 -0
  232. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch.py +0 -0
  233. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch_diff.py +0 -0
  234. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch_search.py +0 -0
  235. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/sampling_tools.py +0 -0
  236. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/search.py +0 -0
  237. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/series.py +0 -0
  238. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/thread.py +0 -0
  239. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/thread_state.py +0 -0
  240. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/maintainers.rs +0 -0
  241. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/metadata.rs +0 -0
  242. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/parse.rs +0 -0
  243. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/path_tier.rs +0 -0
  244. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/schema.rs +0 -0
  245. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/state.rs +0 -0
  246. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/store.rs +0 -0
  247. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/tid.rs +0 -0
  248. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/timeout.rs +0 -0
  249. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/trigram.rs +0 -0
  250. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/__init__.py +0 -0
  251. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/bin_ingest.rs +0 -0
  252. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/__init__.py +0 -0
  253. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/conftest.py +0 -0
  254. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/fixtures/__init__.py +0 -0
  255. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_annotations.py +0 -0
  256. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cost_hints.py +0 -0
  257. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_coverage_stats.py +0 -0
  258. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cursor.py +0 -0
  259. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_embedding_e2e.py +0 -0
  260. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_freshness.py +0 -0
  261. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_fuzzy_search.py +0 -0
  262. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_http_transport.py +0 -0
  263. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_ingest_and_reader.py +0 -0
  264. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_kwic.py +0 -0
  265. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_logging_profile.py +0 -0
  266. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_mcp_adversarial.py +0 -0
  267. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_path_mentions.py +0 -0
  268. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_prompts.py +0 -0
  269. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_regex_hosted.py +0 -0
  270. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_resource_templates.py +0 -0
  271. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_response_format.py +0 -0
  272. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_sampling_tools.py +0 -0
  273. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_smoke.py +0 -0
  274. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_stdio_subprocess.py +0 -0
  275. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_surface_manifest.py +0 -0
  276. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_sync_cli.py +0 -0
  277. {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_thread_patch_explain.py +0 -0
@@ -10,6 +10,75 @@ release tags move them into a dated section. Release process in
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.3.2] — 2026-04-22
14
+
15
+ ### Added
16
+
17
+ - Added `lore_fix_status`, a bug-centric fix-correlation tool that
18
+ follows `Reported-by:`, `Link:`, and `Closes:` evidence across
19
+ separate lore threads and upgrades to an authoritative `merged`
20
+ verdict when the git sidecar can confirm it.
21
+ - Added a normalized trailer-reference side index in `over.db` for
22
+ `reported_by`, `fixes`, `link`, and `closes`, plus backfill support
23
+ and reader-side exact lookups for syzbot hashes, lore message-ids,
24
+ SHA prefixes, lowercased URLs, and normalized trailer payloads.
25
+ - Added human-friendly `since` / `until` parsing for MCP tools and the
26
+ Rust query router: raw nanoseconds remain supported, but callers can
27
+ now also pass ISO dates, RFC3339 timestamps, and relative windows
28
+ such as `90d`.
29
+
30
+ ### Changed
31
+
32
+ - `lore_activity`, `lore_author_profile`, `lore_file_timeline`,
33
+ `lore_path_mentions`, `lore_eq`, `lore_in_list`, `lore_count`,
34
+ `lore_substr_subject`, `lore_substr_trailers`, and `lore_regex` now
35
+ accept both legacy `*_unix_ns` bounds and new human-readable
36
+ `since` / `until` fields, with shared validation.
37
+ - `lore_search` query parsing now understands `since:` and `until:`
38
+ bounds in human formats instead of requiring raw integer nanoseconds
39
+ only.
40
+
41
+ ### Fixed
42
+
43
+ - Upper-bound date filtering is now carried consistently through the
44
+ Rust reader, over.db index helpers, PyO3 boundary, and MCP tool
45
+ layer instead of being post-filtered inconsistently or silently
46
+ ignored on some paths.
47
+
48
+ ## [0.3.1] — 2026-04-22
49
+
50
+ ### Added
51
+
52
+ - `/status` and `kernel-lore-mcp status` now surface live writer state:
53
+ `writer_lock_present`, `sync_active`, and a `sync` block populated
54
+ from `kernel-lore-sync`'s machine-readable heartbeat file.
55
+ - Added `kernel_lore_mcp_writer_lock_present` and
56
+ `kernel_lore_mcp_sync_active` gauges to `/metrics`.
57
+ - Added `scripts/bench/stress_mcp_multiprocess.py`, the async +
58
+ multiprocess soak harness used to pressure-test a hosted box over a
59
+ longer run.
60
+
61
+ ### Changed
62
+
63
+ - `kernel-lore-sync` now writes `state/sync.json` while it runs and
64
+ emits explicit operator-facing stage logs for `bm25_commit`,
65
+ `tid_rebuild`, `path_vocab_rebuild`, `generation_bump`, and
66
+ `save_manifest`.
67
+ - Inline BM25 uses conservative explicit writer defaults instead of
68
+ Tantivy's auto-thread selection. New env knobs:
69
+ `KLMCP_BM25_WRITER_THREADS` and `KLMCP_BM25_WRITER_MEMORY_MB`.
70
+ - `rate_limited` and `query_timeout` now return load-aware in-band
71
+ retry hints. Retry guidance rises when a writer-heavy sync stage is
72
+ active on the same box.
73
+
74
+ ### Fixed
75
+
76
+ - Writer activity detection no longer confuses “lockfile exists” with
77
+ “writer lock is actively held”; status probes now test the live flock
78
+ state.
79
+ - The “ingest phase done, then silence for minutes” sync log shape is
80
+ gone; BM25 finalization is visible instead of looking hung.
81
+
13
82
  ## [0.3.0] — 2026-04-21
14
83
 
15
84
  ### Added
@@ -2638,7 +2638,7 @@ dependencies = [
2638
2638
 
2639
2639
  [[package]]
2640
2640
  name = "kernel_lore_mcp"
2641
- version = "0.3.0"
2641
+ version = "0.3.2"
2642
2642
  dependencies = [
2643
2643
  "aho-corasick",
2644
2644
  "anyhow",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "kernel_lore_mcp"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  edition = "2024"
5
5
  rust-version = "1.85"
6
6
  authors = ["Michael Bommarito <michael@bommaritollc.com>"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kernel-lore-mcp
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Classifier: Development Status :: 2 - Pre-Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -78,26 +78,24 @@ kernel-lore-sync \
78
78
  --include '/wireguard/*' --include '/linux-cifs/*'
79
79
  # Drop --include to mirror all ~390 lists. Plan the disk + time.
80
80
 
81
- # 3. (optional, recommended) build the path-mention index. Tiny, fast.
82
- python -c 'from kernel_lore_mcp import _core; \
83
- print(_core.rebuild_path_vocab("'"$KLMCP_DATA_DIR"'"))'
84
-
85
- # 4. confirm freshness + which capabilities are provisioned
81
+ # 3. confirm freshness + which capabilities are provisioned
86
82
  kernel-lore-mcp status --data-dir "$KLMCP_DATA_DIR"
87
83
  # Look at `capabilities`: each over_db / bm25 / path_vocab / embedding /
88
84
  # maintainers / git_sidecar boolean tells you which tools will actually
89
- # return data on this deployment.
85
+ # return data on this deployment. While a sync is active, the same
86
+ # status output also shows `writer_lock_present`, `sync_active`, and
87
+ # the current sync stage.
90
88
 
91
- # 4b. inspect shard/index health; add --heal to repair unborn shard HEADs
89
+ # 3b. inspect shard/index health; add --heal to repair unborn shard HEADs
92
90
  # and remove unrecoverable shard repos so the next sync reclones them
93
91
  kernel-lore-doctor --data-dir "$KLMCP_DATA_DIR"
94
92
 
95
- # 5. verify the MCP surface — zero API cost
93
+ # 4. verify the MCP surface — zero API cost
96
94
  git clone --depth 1 https://github.com/mjbommar/kernel-lore-mcp.git
97
95
  cd kernel-lore-mcp && ./scripts/agentic_smoke.sh local
98
96
  # PASS: 7/7 tools, 5/5 resource templates, 5/5 prompts (the
99
97
  # `REQUIRED_*` subset from src/kernel_lore_mcp/_surface_manifest.py;
100
- # the live server registers 24 tools in total).
98
+ # the live server registers 25 tools in total).
101
99
  ```
102
100
 
103
101
  Then pick your agent and copy its snippet from
@@ -148,15 +146,14 @@ Want production-grade systemd deployment (single `klmcp-sync.timer`
148
146
  replacing the pre-v0.2.0 grokmirror + ingest pair)?
149
147
  [`docs/ops/runbook.md`](./docs/ops/runbook.md) §1 onwards.
150
148
 
151
- ## Status — v0.3.0 (2026-04-21)
149
+ ## Status — v0.3.2 (2026-04-22)
152
150
 
153
- Current release: the hosted-readiness line that would previously have
154
- been cut as `0.2.3` now lands in `v0.3.0`. The main additions on top of
155
- `0.2.2` are: sync self-healing for poisoned shard repos, hosted-mode
156
- regex gating, generation-bound `lore_corpus_stats` caching, automatic
157
- path-vocab rebuild during sync, explicit `local`/`hosted` deployment
158
- profiles, structured slow-path profiling logs, and a repeatable
159
- HTTP/MCP adversarial-load harness plus public-launch checklist.
151
+ Current release: `v0.3.2`, the follow-on patch after the hosted
152
+ readiness and same-box sync hardening line. The focus is better bug
153
+ workflow ergonomics and safer query scoping: a first-class
154
+ `lore_fix_status` tool, indexed trailer-reference correlation for
155
+ syzbot / lore / `Fixes:` joins, and human-readable `since` / `until`
156
+ bounds across both tools and `lore_search`.
160
157
 
161
158
  Shipped:
162
159
 
@@ -168,7 +165,7 @@ Shipped:
168
165
  manifest fetch, gix smart-HTTP clone-or-fetch (rayon-fanned
169
166
  across shards), ingest, tid rebuild, generation bump — all
170
167
  under one writer lock so there's no trigger/debounce race.
171
- - Full MCP surface: **24 tools** (search, primitives, sampling-
168
+ - Full MCP surface: **25 tools** (search, primitives, sampling-
172
169
  backed summarize/classify/explain, authoritative `merged` /
173
170
  `picked_up` verdicts via git-sidecar, `lore_corpus_stats` for
174
171
  coverage transparency, `lore_author_footprint` for address-
@@ -43,26 +43,24 @@ kernel-lore-sync \
43
43
  --include '/wireguard/*' --include '/linux-cifs/*'
44
44
  # Drop --include to mirror all ~390 lists. Plan the disk + time.
45
45
 
46
- # 3. (optional, recommended) build the path-mention index. Tiny, fast.
47
- python -c 'from kernel_lore_mcp import _core; \
48
- print(_core.rebuild_path_vocab("'"$KLMCP_DATA_DIR"'"))'
49
-
50
- # 4. confirm freshness + which capabilities are provisioned
46
+ # 3. confirm freshness + which capabilities are provisioned
51
47
  kernel-lore-mcp status --data-dir "$KLMCP_DATA_DIR"
52
48
  # Look at `capabilities`: each over_db / bm25 / path_vocab / embedding /
53
49
  # maintainers / git_sidecar boolean tells you which tools will actually
54
- # return data on this deployment.
50
+ # return data on this deployment. While a sync is active, the same
51
+ # status output also shows `writer_lock_present`, `sync_active`, and
52
+ # the current sync stage.
55
53
 
56
- # 4b. inspect shard/index health; add --heal to repair unborn shard HEADs
54
+ # 3b. inspect shard/index health; add --heal to repair unborn shard HEADs
57
55
  # and remove unrecoverable shard repos so the next sync reclones them
58
56
  kernel-lore-doctor --data-dir "$KLMCP_DATA_DIR"
59
57
 
60
- # 5. verify the MCP surface — zero API cost
58
+ # 4. verify the MCP surface — zero API cost
61
59
  git clone --depth 1 https://github.com/mjbommar/kernel-lore-mcp.git
62
60
  cd kernel-lore-mcp && ./scripts/agentic_smoke.sh local
63
61
  # PASS: 7/7 tools, 5/5 resource templates, 5/5 prompts (the
64
62
  # `REQUIRED_*` subset from src/kernel_lore_mcp/_surface_manifest.py;
65
- # the live server registers 24 tools in total).
63
+ # the live server registers 25 tools in total).
66
64
  ```
67
65
 
68
66
  Then pick your agent and copy its snippet from
@@ -113,15 +111,14 @@ Want production-grade systemd deployment (single `klmcp-sync.timer`
113
111
  replacing the pre-v0.2.0 grokmirror + ingest pair)?
114
112
  [`docs/ops/runbook.md`](./docs/ops/runbook.md) §1 onwards.
115
113
 
116
- ## Status — v0.3.0 (2026-04-21)
114
+ ## Status — v0.3.2 (2026-04-22)
117
115
 
118
- Current release: the hosted-readiness line that would previously have
119
- been cut as `0.2.3` now lands in `v0.3.0`. The main additions on top of
120
- `0.2.2` are: sync self-healing for poisoned shard repos, hosted-mode
121
- regex gating, generation-bound `lore_corpus_stats` caching, automatic
122
- path-vocab rebuild during sync, explicit `local`/`hosted` deployment
123
- profiles, structured slow-path profiling logs, and a repeatable
124
- HTTP/MCP adversarial-load harness plus public-launch checklist.
116
+ Current release: `v0.3.2`, the follow-on patch after the hosted
117
+ readiness and same-box sync hardening line. The focus is better bug
118
+ workflow ergonomics and safer query scoping: a first-class
119
+ `lore_fix_status` tool, indexed trailer-reference correlation for
120
+ syzbot / lore / `Fixes:` joins, and human-readable `since` / `until`
121
+ bounds across both tools and `lore_search`.
125
122
 
126
123
  Shipped:
127
124
 
@@ -133,7 +130,7 @@ Shipped:
133
130
  manifest fetch, gix smart-HTTP clone-or-fetch (rayon-fanned
134
131
  across shards), ingest, tid rebuild, generation bump — all
135
132
  under one writer lock so there's no trigger/debounce race.
136
- - Full MCP surface: **24 tools** (search, primitives, sampling-
133
+ - Full MCP surface: **25 tools** (search, primitives, sampling-
137
134
  backed summarize/classify/explain, authoritative `merged` /
138
135
  `picked_up` verdicts via git-sidecar, `lore_corpus_stats` for
139
136
  coverage transparency, `lore_author_footprint` for address-
@@ -10,12 +10,41 @@ Status markers:
10
10
  - `[DEFER]` — decided to defer past v1; must have a `--> docs/...`
11
11
  pointer explaining why
12
12
 
13
- ## Current release track (2026-04-21)
14
-
15
- We are working straight to `v0.3.0` now. There is **no standalone
16
- `0.2.3` release tag** planned, but the would-be `0.2.3` hardening
17
- line is still tracked separately here because it is the first block
18
- of work that must land before a public hosted launch.
13
+ ## Current release track (2026-04-22)
14
+
15
+ `v0.3.0` shipped on 2026-04-21. The active patch line is
16
+ `v0.3.2`: bug-workflow correlation and human time-bound ergonomics
17
+ after the same-box hosted soak and sync-under-load hardening on
18
+ `server6`.
19
+
20
+ ### 0.3.2 target — bug correlation + human time bounds
21
+
22
+ - [x] Add a first-class `lore_fix_status` tool for bug-centric
23
+ correlation across separate lore threads, with authoritative
24
+ `merged` only when the git sidecar can confirm it.
25
+ - [x] Materialize a normalized trailer-reference index for
26
+ `reported_by`, `fixes`, `link`, and `closes`, and expose exact
27
+ reader lookups over syzbot hashes, lore mids, SHA prefixes, and
28
+ normalized trailer values.
29
+ - [x] Accept human-friendly `since` / `until` values across the
30
+ low-level tools and query router, while keeping raw
31
+ `*_unix_ns` compatibility for existing clients.
32
+
33
+ ### 0.3.1 target — sync-under-load visibility + safer inline BM25
34
+
35
+ - [x] `kernel-lore-sync` writes live machine-readable progress under
36
+ `state/sync.json`, and `/status` + `kernel-lore-mcp status` surface
37
+ `writer_lock_present`, `sync_active`, and the current sync stage.
38
+ - [x] Sync logs the post-ingest work explicitly:
39
+ `bm25_commit`, `tid_rebuild`, `path_vocab_rebuild`,
40
+ `generation_bump`, and `save_manifest` are no longer silent gaps.
41
+ - [x] Inline BM25 is safer-by-default and operator-tunable:
42
+ default BM25 writer thread count is conservative, and env knobs exist
43
+ for thread count + memory budget.
44
+ - [x] `rate_limited` / `query_timeout` retry hints are load-aware and
45
+ rise when a live writer-heavy sync stage is active.
46
+ - [x] The async + multiprocess soak harness used against `server6`
47
+ lives in-tree and is referenced by the launch docs.
19
48
 
20
49
  ### 0.2.3 carry-forward — land these in `v0.3.0` first
21
50
 
@@ -61,6 +61,21 @@ Pass criteria:
61
61
  histogram summaries so we can distinguish queueing from tool-body
62
62
  work.
63
63
 
64
+ For a longer soak on a live box, also run:
65
+
66
+ ```sh
67
+ uv run python scripts/bench/stress_mcp_multiprocess.py \
68
+ --base-url http://127.0.0.1:8080 \
69
+ --scenario mixed_hot \
70
+ --processes 4 \
71
+ --concurrency-per-process 16 \
72
+ --duration-seconds 600 \
73
+ --json-out /tmp/klmcp-soak.json
74
+ ```
75
+
76
+ Use this when you want the “can we make it ugly over 10 minutes?”
77
+ answer, not just the short adversarial gate.
78
+
64
79
  ## 5. Operator-log readability
65
80
 
66
81
  - Hosted default logs are readable without hand-filtering.
@@ -48,6 +48,10 @@ mkdir -p "$KLMCP_DATA_DIR"
48
48
  --include '/netdev/*'
49
49
  # Drop --include entirely to mirror all 390 shards (will take hours
50
50
  # and ~100+ GB of disk on the first run).
51
+ # Keep BM25 deferred on a serving box unless you have measured that the
52
+ # overlap is acceptable. Inline `--with-bm25` is the heavier path;
53
+ # prefer `kernel-lore-ingest --rebuild-bm25` off-peak if prose freshness
54
+ # matters.
51
55
 
52
56
  # 0A.5b — over.db has already been written incrementally by the
53
57
  # sync in 0A.4 (because we passed --with-over). If you skipped that
@@ -63,6 +67,8 @@ mkdir -p "$KLMCP_DATA_DIR"
63
67
  # 0A.6 — confirm the index is live (no HTTP needed)
64
68
  ./.venv/bin/kernel-lore-mcp status --data-dir "$KLMCP_DATA_DIR"
65
69
  # Expect: {"generation": >= 1, "freshness_ok": true, ...}
70
+ # While a sync is active, status also reports `writer_lock_present`,
71
+ # `sync_active`, and the current sync stage from `state/sync.json`.
66
72
 
67
73
  # 0A.6b — inspect shard/index health. If a prior run left poisoned shard
68
74
  # repos behind, --heal repairs unborn HEADs in place and removes
@@ -0,0 +1,106 @@
1
+ # v0.3.1 plan
2
+
3
+ **Date:** 2026-04-22
4
+ **Motivation:** the 10-minute hosted soak on `server6` showed that
5
+ `v0.3.0` is fine for serving-only load on similar hardware, but
6
+ co-locating `serve` with `kernel-lore-sync --with-bm25` still creates
7
+ an operator-visibility and client-backoff problem.
8
+
9
+ ## Findings that changed the patch line
10
+
11
+ Two concrete runs shaped this release:
12
+
13
+ - **Serving only, no sync overlap:** 10-minute `mixed_hot` soak,
14
+ 4 processes x 16 async workers, delivered ~66 req/s with `/status`
15
+ staying healthy and only a small number of `rate_limited` outcomes.
16
+ - **Same box, live sync overlap:** the same soak during a real sync
17
+ dropped to ~33 req/s and produced ~1,000 client-side timeouts.
18
+ `/status` itself timed out repeatedly, and operator logs stopped at
19
+ `ingest phase done` even though the process was still busy inside the
20
+ BM25 finalization path.
21
+
22
+ That means the main `v0.3.1` job is not “invent a new architecture.”
23
+ It is:
24
+
25
+ 1. tell the truth about what sync is doing,
26
+ 2. make inline BM25 safer by default,
27
+ 3. give callers a realistic retry hint when the box is clearly under
28
+ writer pressure,
29
+ 4. commit the soak harness we used to find the problem in the first
30
+ place.
31
+
32
+ ## Scope
33
+
34
+ ### 1. Live sync-state visibility
35
+
36
+ - `kernel-lore-sync` writes a machine-readable `state/sync.json`
37
+ heartbeat while a run is active.
38
+ - `/status` and `kernel-lore-mcp status` surface:
39
+ `writer_lock_present`, `sync_active`, and a `sync` block with the
40
+ current stage + heartbeat.
41
+ - Status caching shortens while a writer is active so operators do not
42
+ stare at a 30-second-old snapshot during a live incident.
43
+
44
+ **Done when:** an operator can tell “the box is currently in
45
+ `bm25_commit`” from `/status` alone.
46
+
47
+ ### 2. BM25 finalization is visible and configurable
48
+
49
+ - BM25 writer defaults become explicitly conservative:
50
+ `KLMCP_BM25_WRITER_THREADS=1` and
51
+ `KLMCP_BM25_WRITER_MEMORY_MB=128` unless overridden.
52
+ - `kernel-lore-sync` logs explicit stage boundaries for:
53
+ `bm25_commit`, `tid_rebuild`, `path_vocab_rebuild`,
54
+ `generation_bump`, and `save_manifest`.
55
+ - CLI help and operator docs explicitly warn that inline BM25 is the
56
+ heavier path and that co-located serving boxes should prefer deferred
57
+ rebuilds when practical.
58
+
59
+ **Done when:** “ingest phase done” is no longer the last meaningful log
60
+ line before a long quiet period, and operators can tune BM25 writer
61
+ parallelism without rebuilding.
62
+
63
+ ### 3. Load-aware retry guidance
64
+
65
+ - `rate_limited` and `query_timeout` errors continue to return
66
+ MCP-friendly in-band retry hints.
67
+ - Retry hints rise when a live writer/sync is active, especially during
68
+ `bm25_commit`, instead of always saying “retry in 5s”.
69
+ - The goal is coarse honesty, not fake precision. We are telling the
70
+ caller “back off more aggressively because the box is doing writer
71
+ work.”
72
+
73
+ **Done when:** a caller hitting overload during `bm25_commit` sees a
74
+ longer retry hint than a normal moderate-tool saturation event.
75
+
76
+ ### 4. Repeatable soak tooling lands in-tree
77
+
78
+ - Ship the async + multiprocess stress harness used against `server6`
79
+ as `scripts/bench/stress_mcp_multiprocess.py`.
80
+ - Reference it from the public-launch checklist as the longer-running
81
+ soak companion to the adversarial harness.
82
+
83
+ **Done when:** reproducing the hosted soak requires no local scratch
84
+ script or shell-history archaeology.
85
+
86
+ ## Explicit non-goals for v0.3.1
87
+
88
+ - This patch release does **not** claim that same-box
89
+ `serve` + `sync --with-bm25` is fully public-launch-safe on modest
90
+ hardware.
91
+ - The recommended posture for a public box remains:
92
+ keep the default deferred-BM25 sync path, or rebuild BM25 off-peak /
93
+ off-box if you need prose freshness.
94
+ - If we want a hard guarantee that heavy writer work never disturbs
95
+ serving traffic, that is a `v0.3.x`/`v0.4.0` architecture item:
96
+ stronger isolation, not just better defaults and telemetry.
97
+
98
+ ## Acceptance gate
99
+
100
+ Before tagging `v0.3.1`:
101
+
102
+ - targeted Python tests for status / retry / observability pass,
103
+ - `cargo test --bin kernel-lore-sync` passes,
104
+ - release docs name the new sync-state + BM25 controls,
105
+ - versions match in `Cargo.toml`, `pyproject.toml`, and
106
+ `src/kernel_lore_mcp/__init__.py`.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel-lore-mcp"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  description = "MCP server exposing fast, structured search over lore.kernel.org to LLM developer tools."
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }