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.
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CHANGELOG.md +69 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/Cargo.lock +1 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/Cargo.toml +1 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/PKG-INFO +16 -19
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/README.md +15 -18
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/TODO.md +35 -6
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/public-launch-checklist.md +15 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/runbook.md +6 -0
- kernel_lore_mcp-0.3.2/docs/plans/2026-04-22-v0.3.1-plan.md +106 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/pyproject.toml +1 -1
- kernel_lore_mcp-0.3.2/scripts/bench/stress_mcp_multiprocess.py +789 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/sync.rs +302 -34
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bm25.rs +52 -3
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/ingest.rs +1 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/__init__.py +1 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/__main__.py +9 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/_core.pyi +20 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cost_class.py +15 -6
- kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/health.py +136 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/metrics.py +16 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/status.py +9 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/server.py +5 -0
- kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/time_bounds.py +118 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/timeout.py +11 -2
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/activity.py +23 -2
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/author_footprint.py +8 -23
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/author_profile.py +30 -7
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/file_timeline.py +18 -9
- kernel_lore_mcp-0.3.2/src/kernel_lore_mcp/tools/fix_status.py +373 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/path_mentions.py +28 -2
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/primitives.py +127 -8
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/stable_backport.py +2 -6
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/subsystem_churn.py +4 -7
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/lib.rs +6 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/over.rs +405 -31
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/python.rs +103 -15
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/reader.rs +235 -61
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/router.rs +114 -7
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/sync.rs +1 -1
- kernel_lore_mcp-0.3.2/src/trailer_refs.rs +283 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cost_class.py +53 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_errors.py +5 -0
- kernel_lore_mcp-0.3.2/tests/python/test_fix_status.py +95 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_mcp_tools_e2e.py +11 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_observability.py +1 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_primitives_e2e.py +15 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_resources_routes.py +34 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_status_subcommand.py +5 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/uv.lock +1 -1
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.github/workflows/ci.yml +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.github/workflows/release.yml +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.gitignore +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/.python-version +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CLAUDE.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/CONTRIBUTING.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/GOVERNANCE.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/LEGAL.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/LICENSE +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/SECURITY.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/README.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/data-flow.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/deployment-modes.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/four-tier-index.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/over-db.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/overview.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/reciprocity.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/architecture/trade-offs.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/demos/first-session.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/bm25-tier.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/compressed-store.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/metadata-tier.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/path-tier.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/tokenizer-spec.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/indexing/trigram-tier.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/grokmirror.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/mbox-parsing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/patch-parsing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ingestion/shard-walking.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/client-config.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/query-routing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/tools.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/mcp/transport-auth.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/corpus-coverage.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/cost-model.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/ec2-sizing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/monitoring.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/production-hardening.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/threat-model.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/update-cadence.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/ops/update-frequency.md +0 -0
- {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
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-15-internalize-grokmirror.md +0 -0
- {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
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-17-overdb-followups.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-17-overdb-metadata-tier.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/plans/2026-04-20-v0.3.0-plan.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-agent-ergonomics.md +0 -0
- {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
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-external-data-sources.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-gix-vs-git2.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-mcp-python-sdk.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-pyo3-maturin.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-search-library-landscape.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-storage-footprint.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-tantivy.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-14-workflow-gap-analysis.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-15-fuzzy-search-design.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-15-path-mentions.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/2026-04-17-overdb-validation.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/research/training-retriever.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/README.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/01-research.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/02-design.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/03-implement.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/04-test.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/05-quality.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/06-review.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/07-commit.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/08-debug.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/09-optimize.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/10-document.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/checklists/index.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/code-quality.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/data-structures.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/boundaries.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/concurrency.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/dependencies.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/errors.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/design/modules.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/git.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/index.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/language.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/fastmcp.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/httpx.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/pydantic.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/libraries/structlog.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/naming.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/pyo3-maturin.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/testing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/python/uv.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/cargo.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/01-research.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/02-design.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/03-implement.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/04-test.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/05-quality.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/06-review.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/07-commit.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/08-debug.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/09-optimize.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/10-document.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/checklists/index.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/code-quality.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/boundaries.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/concurrency.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/data-structures.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/errors.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/design/modules.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/ffi.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/index.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/language.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/arrow-parquet.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/gix.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/pyo3.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/regex-automata.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/roaring-fst.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/tantivy.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/libraries/zstd.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/naming.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/testing.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/docs/standards/rust/unsafe.md +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/rust-toolchain.toml +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/agentic_smoke.sh +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/bench/bench_concurrent_mixed.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/bench/bench_hosted_adversarial.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/grokmirror-personal.conf +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/grokmirror.conf +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-doctor.sh +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-grok-pull.sh +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/klmcp-ingest.sh +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/post-pull-hook.sh +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/rust_call_graph.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/etc-kernel-lore-mcp-env.sample +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-grokmirror.service +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-grokmirror.timer +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-ingest.path +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-ingest.service +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-mcp.service +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-sync.service +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/scripts/systemd/klmcp-sync.timer +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/bench_blob_read.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/bench_ingest_stages.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/build_git_sidecar.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/build_over.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/doctor.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/ingest.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/bin/reindex.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/embedding.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/error.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/git_sidecar.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/_surface_manifest.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/doctor.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/embed.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/ingest.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cli/sync.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/config.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/cursor.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/embedding.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/errors.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/freshness.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/kwic.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/logging_.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/mapping.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/models.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/observability.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/prompts.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/reader_cache.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/blind_spots.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/coverage_stats.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/resources/templates.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/routes/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/sampling.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/corpus_stats.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/expand_citation.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/explain_patch.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/maintainer_profile.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/message.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/nearest.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch_diff.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/patch_search.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/sampling_tools.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/search.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/series.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/thread.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/kernel_lore_mcp/tools/thread_state.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/maintainers.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/metadata.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/parse.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/path_tier.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/schema.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/state.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/store.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/tid.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/timeout.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/src/trigram.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/bin_ingest.rs +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/conftest.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/fixtures/__init__.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_annotations.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cost_hints.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_coverage_stats.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_cursor.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_embedding_e2e.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_freshness.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_fuzzy_search.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_http_transport.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_ingest_and_reader.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_kwic.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_logging_profile.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_mcp_adversarial.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_path_mentions.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_prompts.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_regex_hosted.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_resource_templates.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_response_format.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_sampling_tools.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_smoke.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_stdio_subprocess.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_surface_manifest.py +0 -0
- {kernel_lore_mcp-0.3.0 → kernel_lore_mcp-0.3.2}/tests/python/test_sync_cli.py +0 -0
- {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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kernel-lore-mcp
|
|
3
|
-
Version: 0.3.
|
|
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.
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
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.
|
|
149
|
+
## Status — v0.3.2 (2026-04-22)
|
|
152
150
|
|
|
153
|
-
Current release: the
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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: **
|
|
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.
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
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.
|
|
114
|
+
## Status — v0.3.2 (2026-04-22)
|
|
117
115
|
|
|
118
|
-
Current release: the
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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: **
|
|
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-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
|
|
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`.
|