boost-skill-cli 1.0.337__tar.gz → 1.0.338__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.
- {boost_skill_cli-1.0.337/boost_skill_cli.egg-info → boost_skill_cli-1.0.338}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/rag.py +20 -5
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- boost_skill_cli-1.0.338/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +49 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap.html +46 -1
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_rag.py +8 -3
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_rag_fusion.py +92 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.gitattributes +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.gitignore +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/.vale.ini +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/LICENSE +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/Makefile +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/codecov.yml +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/index.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/examples/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/index.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/noxfile.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/setup.cfg +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/style/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/style/boost.css +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/style/boost.js +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/style/demo.html +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.338'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 338)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -674,11 +674,22 @@ def retrieve(query: str, k: int = 60, kind: Optional[str] = None,
|
|
|
674
674
|
return dedupe_by_content(hits, k)
|
|
675
675
|
|
|
676
676
|
|
|
677
|
-
def rerank(query: str, hits: List[Hit], limit: int = 10
|
|
678
|
-
|
|
677
|
+
def rerank(query: str, hits: List[Hit], limit: int = 10,
|
|
678
|
+
engine: str = "BM25 full-content") -> Tuple[List[Hit], str]:
|
|
679
|
+
"""Reorder the shortlist with the LLM bridge; degrade to ``engine`` order.
|
|
680
|
+
|
|
681
|
+
``engine`` is the label from whichever retrieval actually produced ``hits``.
|
|
682
|
+
Both degrade paths below return it rather than a hard-coded string: this
|
|
683
|
+
function does not know how the shortlist was built, and guessing was wrong
|
|
684
|
+
for every user whose dense store worked. Naming a specific wrong engine is
|
|
685
|
+
worse than naming none — the label is the only signal about which engine
|
|
686
|
+
answered, so a confident "BM25 full-content" sent debugging somewhere else.
|
|
687
|
+
|
|
688
|
+
The default keeps direct callers unchanged; ``search`` passes the real one.
|
|
689
|
+
"""
|
|
679
690
|
top = hits[:max(limit, 15)]
|
|
680
691
|
if not ai.available():
|
|
681
|
-
return hits[:limit],
|
|
692
|
+
return hits[:limit], engine
|
|
682
693
|
listing = "\n".join(
|
|
683
694
|
"- %s [%s]: %s" % (h["entry"]["name"], h["entry"].get("kind", "skill"),
|
|
684
695
|
(h["snippet"] or h["entry"].get("description", ""))[:180])
|
|
@@ -691,7 +702,9 @@ def rerank(query: str, hits: List[Hit], limit: int = 10) -> Tuple[List[Hit], str
|
|
|
691
702
|
max_tokens=400)
|
|
692
703
|
order = _json_array(reply)
|
|
693
704
|
if not order:
|
|
694
|
-
|
|
705
|
+
# The model answered but not with a JSON array, so the ordering falls
|
|
706
|
+
# back to whatever retrieval produced — and so must the label.
|
|
707
|
+
return hits[:limit], engine
|
|
695
708
|
by_name = {h["entry"]["name"]: h for h in hits}
|
|
696
709
|
picked = [by_name[str(n)] for n in order if str(n) in by_name]
|
|
697
710
|
rest = [h for h in hits if h["entry"]["name"]
|
|
@@ -832,7 +845,9 @@ def search(query: str, limit: int = 10, kind: Optional[str] = None,
|
|
|
832
845
|
if hits is None:
|
|
833
846
|
return None
|
|
834
847
|
if smart:
|
|
835
|
-
|
|
848
|
+
# Hand the retrieval label down rather than dropping it: when the
|
|
849
|
+
# rerank degrades, this is the only thing that knows what actually ran.
|
|
850
|
+
return rerank(query, hits, limit, engine=engine)
|
|
836
851
|
return hits[:limit], engine
|
|
837
852
|
|
|
838
853
|
|
|
@@ -303,6 +303,7 @@ docs/roadmap/items/required-checks-config-drift.md
|
|
|
303
303
|
docs/roadmap/items/retrieval-quality-eval-harness.md
|
|
304
304
|
docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md
|
|
305
305
|
docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md
|
|
306
|
+
docs/roadmap/items/roadmap-page-weight-grows-without-bound.md
|
|
306
307
|
docs/roadmap/items/robust-tag-argument-parsing.md
|
|
307
308
|
docs/roadmap/items/ruff-016-widens-the-default-rule-set.md
|
|
308
309
|
docs/roadmap/items/rule-install-native-materialization.md
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: roadmap-page-weight-grows-without-bound
|
|
3
|
+
board: code
|
|
4
|
+
section: docsite
|
|
5
|
+
status: planned
|
|
6
|
+
category: Docs · Performance
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: 302 KB to 410 KB in one session; 164 shipped cards render in full
|
|
11
|
+
order: 76
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: <code>roadmap.html</code> grew 36% in one session and nothing bounds it
|
|
15
|
+
---
|
|
16
|
+
The generated board is <b>407.6 KB, of which 404.7 KB is markup</b> — 189
|
|
17
|
+
<code><article></code> cards rendered eagerly into one DOM. Measured across this session's
|
|
18
|
+
merges it went <b>301.6 KB → 409.9 KB, a 36% rise</b>, monotonically increasing with
|
|
19
|
+
every card documented.
|
|
20
|
+
|
|
21
|
+
<b>The mechanism is that shipped work never stops costing.</b> Sizing the sections: <code>shipped</code>
|
|
22
|
+
17.6 KB / 16 cards, <code>next</code> 1.1 KB / 1, <code>planned</code>
|
|
23
|
+
<b>383.0 KB / 172</b> — but 164 of those 172 carry a <code>shipped</code> pill. They are finished
|
|
24
|
+
items grouped under their original section, each still rendering its full body, and those bodies grow
|
|
25
|
+
because closing an item well means recording what was measured and what turned out to be wrong. The
|
|
26
|
+
board is now mostly an archive that every visitor downloads in full.
|
|
27
|
+
|
|
28
|
+
<b>This is NOT what failed <code>lighthouse</code> on <code>#386</code>, and that is worth stating
|
|
29
|
+
because the correlation is seductive.</b> <code>#388</code> passed the same gate at
|
|
30
|
+
<b>409.9 KB</b> — very slightly <em>larger</em> than <code>#386</code>'s 409.8 KB, which
|
|
31
|
+
failed. A bigger page scoring better rules out page weight as that failure's cause; it was runner
|
|
32
|
+
variance, exactly as <code>lighthouse.yml</code>'s own comment predicts ("a single sample dips into
|
|
33
|
+
the 80s under runner load, which the median absorbs"). The performance floor is
|
|
34
|
+
<code>minScore 0.85</code> against a normal score of ~99–100, so there is real headroom today.
|
|
35
|
+
|
|
36
|
+
<b>The case for doing it anyway is the trend, not the current number.</b> At roughly +6 KB per
|
|
37
|
+
merged card the page crosses 500 KB within a few working sessions, and DOM size is precisely
|
|
38
|
+
what Lighthouse's performance category penalises — so this becomes the cause eventually even though
|
|
39
|
+
it is not the cause now.
|
|
40
|
+
|
|
41
|
+
<b>Likely levers, cheapest first.</b> Collapse shipped card bodies behind
|
|
42
|
+
<code><details></code> so the text ships but does not render — that alone addresses the
|
|
43
|
+
383 KB block and keeps every word searchable in the source. Failing that, render shipped items
|
|
44
|
+
as one-line entries linking to their item file, or paginate by section. All three live in
|
|
45
|
+
<code>scripts/build_roadmap.py</code>; none require touching an item file, which matters because the
|
|
46
|
+
item files are the merge-conflict-free part of this design.
|
|
47
|
+
|
|
48
|
+
<b>Do not raise the Lighthouse floor to fix this.</b> The floor is calibrated and honest; a page that
|
|
49
|
+
outgrows it should be made smaller, not re-graded.
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
112
112
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
113
113
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
114
|
-
<div class="stat"><b>
|
|
114
|
+
<div class="stat"><b>190</b><span>Loop finds</span></div>
|
|
115
115
|
<!-- /ROADMAP:stats -->
|
|
116
116
|
</div>
|
|
117
117
|
</section>
|
|
@@ -5215,6 +5215,51 @@ so they were green on CI and red on any machine that had installed it.</p>
|
|
|
5215
5215
|
<span class="m">silent BM25-only is the default outcome</span>
|
|
5216
5216
|
</div>
|
|
5217
5217
|
</article>
|
|
5218
|
+
|
|
5219
|
+
<article class="cap rcard" id="roadmap-page-weight-grows-without-bound">
|
|
5220
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Docs · Performance</span></div>
|
|
5221
|
+
<h3><code>roadmap.html</code> grew 36% in one session and nothing bounds it</h3>
|
|
5222
|
+
<p>The generated board is <b>407.6 KB, of which 404.7 KB is markup</b> — 189
|
|
5223
|
+
<code><article></code> cards rendered eagerly into one DOM. Measured across this session's
|
|
5224
|
+
merges it went <b>301.6 KB → 409.9 KB, a 36% rise</b>, monotonically increasing with
|
|
5225
|
+
every card documented.
|
|
5226
|
+
|
|
5227
|
+
<b>The mechanism is that shipped work never stops costing.</b> Sizing the sections: <code>shipped</code>
|
|
5228
|
+
17.6 KB / 16 cards, <code>next</code> 1.1 KB / 1, <code>planned</code>
|
|
5229
|
+
<b>383.0 KB / 172</b> — but 164 of those 172 carry a <code>shipped</code> pill. They are finished
|
|
5230
|
+
items grouped under their original section, each still rendering its full body, and those bodies grow
|
|
5231
|
+
because closing an item well means recording what was measured and what turned out to be wrong. The
|
|
5232
|
+
board is now mostly an archive that every visitor downloads in full.
|
|
5233
|
+
|
|
5234
|
+
<b>This is NOT what failed <code>lighthouse</code> on <code>#386</code>, and that is worth stating
|
|
5235
|
+
because the correlation is seductive.</b> <code>#388</code> passed the same gate at
|
|
5236
|
+
<b>409.9 KB</b> — very slightly <em>larger</em> than <code>#386</code>'s 409.8 KB, which
|
|
5237
|
+
failed. A bigger page scoring better rules out page weight as that failure's cause; it was runner
|
|
5238
|
+
variance, exactly as <code>lighthouse.yml</code>'s own comment predicts ("a single sample dips into
|
|
5239
|
+
the 80s under runner load, which the median absorbs"). The performance floor is
|
|
5240
|
+
<code>minScore 0.85</code> against a normal score of ~99–100, so there is real headroom today.
|
|
5241
|
+
|
|
5242
|
+
<b>The case for doing it anyway is the trend, not the current number.</b> At roughly +6 KB per
|
|
5243
|
+
merged card the page crosses 500 KB within a few working sessions, and DOM size is precisely
|
|
5244
|
+
what Lighthouse's performance category penalises — so this becomes the cause eventually even though
|
|
5245
|
+
it is not the cause now.
|
|
5246
|
+
|
|
5247
|
+
<b>Likely levers, cheapest first.</b> Collapse shipped card bodies behind
|
|
5248
|
+
<code><details></code> so the text ships but does not render — that alone addresses the
|
|
5249
|
+
383 KB block and keeps every word searchable in the source. Failing that, render shipped items
|
|
5250
|
+
as one-line entries linking to their item file, or paginate by section. All three live in
|
|
5251
|
+
<code>scripts/build_roadmap.py</code>; none require touching an item file, which matters because the
|
|
5252
|
+
item files are the merge-conflict-free part of this design.
|
|
5253
|
+
|
|
5254
|
+
<b>Do not raise the Lighthouse floor to fix this.</b> The floor is calibrated and honest; a page that
|
|
5255
|
+
outgrows it should be made smaller, not re-graded.</p>
|
|
5256
|
+
<div class="meta">
|
|
5257
|
+
<span class="m">Complexity <b>M</b></span>
|
|
5258
|
+
<span class="m">Impact <b>Med</b></span>
|
|
5259
|
+
<span class="m">Wow <b class="wow">★★</b></span>
|
|
5260
|
+
<span class="m">302 KB to 410 KB in one session; 164 shipped cards render in full</span>
|
|
5261
|
+
</div>
|
|
5262
|
+
</article>
|
|
5218
5263
|
<!-- /ROADMAP:cards -->
|
|
5219
5264
|
|
|
5220
5265
|
</div>
|
|
@@ -965,18 +965,23 @@ class TestSearchForwarding:
|
|
|
965
965
|
rag.search("q", limit=1, smart=False)
|
|
966
966
|
assert cap["k"] == 60 # max(60, 4)
|
|
967
967
|
|
|
968
|
-
def
|
|
968
|
+
def test_forwards_query_limit_and_engine_to_rerank(self, sandbox, monkeypatch):
|
|
969
|
+
# `engine` joined the signature so a degraded rerank can report what
|
|
970
|
+
# actually retrieved instead of assuming BM25; asserted here because
|
|
971
|
+
# dropping it again would be silent — search would still return a
|
|
972
|
+
# plausible label, just the wrong one.
|
|
969
973
|
self._ready_index()
|
|
970
974
|
monkeypatch.setattr(rag, "retrieve", lambda *a, **k: [_hit("a", 1.0)])
|
|
971
975
|
cap = {}
|
|
972
976
|
|
|
973
|
-
def spyr(query, hits, limit=10):
|
|
974
|
-
cap.update(query=query, limit=limit)
|
|
977
|
+
def spyr(query, hits, limit=10, engine="BM25 full-content"):
|
|
978
|
+
cap.update(query=query, limit=limit, engine=engine)
|
|
975
979
|
return ([], "x")
|
|
976
980
|
monkeypatch.setattr(rag, "rerank", spyr)
|
|
977
981
|
rag.search("theq", limit=5) # smart defaults to True
|
|
978
982
|
assert cap["query"] == "theq"
|
|
979
983
|
assert cap["limit"] == 5
|
|
984
|
+
assert cap["engine"] == "BM25 full-content" # what this index is
|
|
980
985
|
|
|
981
986
|
|
|
982
987
|
class TestIndexPath:
|
|
@@ -209,3 +209,95 @@ class TestRetrieveAnyFuses:
|
|
|
209
209
|
rag.retrieve_any("q", kind="rule", entries=ents)
|
|
210
210
|
assert ("bm25", "rule", ents) in seen
|
|
211
211
|
assert ("dense", "rule", ents) in seen
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class TestRerankPreservesTheEngineLabel:
|
|
215
|
+
"""The engine that actually retrieved must survive the rerank stage.
|
|
216
|
+
|
|
217
|
+
``rerank`` hard-coded ``"BM25 full-content"`` on both of its degrade paths,
|
|
218
|
+
and ``search`` discards ``retrieve_any``'s label whenever ``smart`` is on —
|
|
219
|
+
which is the default, and what the MCP ``boost_search`` tool uses. So a user
|
|
220
|
+
whose dense store and fusion were working perfectly, but who had no
|
|
221
|
+
``ANTHROPIC_API_KEY``, was told they were on BM25.
|
|
222
|
+
|
|
223
|
+
That is the same class of silent misreport the dense-status work existed to
|
|
224
|
+
kill: the label is the only signal a user has about which engine answered,
|
|
225
|
+
and a wrong one sends the investigation somewhere else entirely. Worse here
|
|
226
|
+
than a missing label, because it names a specific wrong engine confidently.
|
|
227
|
+
"""
|
|
228
|
+
|
|
229
|
+
@staticmethod
|
|
230
|
+
def _hits():
|
|
231
|
+
return [_hit("a", 2.0), _hit("b", 1.0)]
|
|
232
|
+
|
|
233
|
+
def test_no_ai_reports_the_engine_that_retrieved(self, monkeypatch):
|
|
234
|
+
# THE regression. Fusion ran, the LLM was absent, and the old code
|
|
235
|
+
# answered "BM25 full-content" — naming an engine that did not rank
|
|
236
|
+
# these hits alone.
|
|
237
|
+
monkeypatch.setattr(rag.ai, "available", lambda: False)
|
|
238
|
+
_out, label = rag.rerank("q", self._hits(), limit=5,
|
|
239
|
+
engine="hybrid RRF (BM25 + dense)")
|
|
240
|
+
assert label == "hybrid RRF (BM25 + dense)"
|
|
241
|
+
|
|
242
|
+
def test_no_ai_reports_dense_when_dense_retrieved(self, monkeypatch):
|
|
243
|
+
monkeypatch.setattr(rag.ai, "available", lambda: True)
|
|
244
|
+
monkeypatch.setattr(rag.ai, "ask", lambda *_a, **_k: "not json at all")
|
|
245
|
+
_out, label = rag.rerank("q", self._hits(), limit=5,
|
|
246
|
+
engine="dense vectors")
|
|
247
|
+
assert label == "dense vectors"
|
|
248
|
+
|
|
249
|
+
def test_an_unparseable_reply_keeps_the_engine_too(self, monkeypatch):
|
|
250
|
+
# The second degrade path: the model answered, but not with a JSON
|
|
251
|
+
# array. Ordering falls back, so the label must fall back with it.
|
|
252
|
+
monkeypatch.setattr(rag.ai, "available", lambda: True)
|
|
253
|
+
monkeypatch.setattr(rag.ai, "ask", lambda *_a, **_k: "sorry, I can't")
|
|
254
|
+
_out, label = rag.rerank("q", self._hits(), limit=5,
|
|
255
|
+
engine="hybrid RRF (BM25 + dense)")
|
|
256
|
+
assert label == "hybrid RRF (BM25 + dense)"
|
|
257
|
+
|
|
258
|
+
def test_a_successful_rerank_still_says_claude(self, monkeypatch):
|
|
259
|
+
# The LLM really did decide the order here, so crediting the retrieval
|
|
260
|
+
# engine instead would be the same bug pointing the other way.
|
|
261
|
+
monkeypatch.setattr(rag.ai, "available", lambda: True)
|
|
262
|
+
monkeypatch.setattr(rag.ai, "ask", lambda *_a, **_k: '["b", "a"]')
|
|
263
|
+
out, label = rag.rerank("q", self._hits(), limit=5,
|
|
264
|
+
engine="hybrid RRF (BM25 + dense)")
|
|
265
|
+
assert _names(out) == ["b", "a"]
|
|
266
|
+
assert label == "Claude relevance"
|
|
267
|
+
|
|
268
|
+
def test_the_default_keeps_existing_callers_honest(self, monkeypatch):
|
|
269
|
+
# Back-compat: an omitted engine still reads "BM25 full-content", so
|
|
270
|
+
# this is additive for anything that calls rerank directly.
|
|
271
|
+
monkeypatch.setattr(rag.ai, "available", lambda: False)
|
|
272
|
+
_out, label = rag.rerank("q", self._hits(), limit=5)
|
|
273
|
+
assert label == "BM25 full-content"
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
class TestSearchReportsTheTruthEndToEnd:
|
|
277
|
+
"""`search` is where the label is chosen, so the bug is only really fixed
|
|
278
|
+
if it survives the whole path an MCP call takes."""
|
|
279
|
+
|
|
280
|
+
@staticmethod
|
|
281
|
+
def _wire(monkeypatch, engine_hits, ai_ok):
|
|
282
|
+
from boost_cli.core import dense as dense_mod
|
|
283
|
+
monkeypatch.setattr(rag, "ready", lambda: True)
|
|
284
|
+
monkeypatch.setattr(rag, "retrieve", lambda *_a, **_k: list(engine_hits))
|
|
285
|
+
monkeypatch.setattr(dense_mod, "ready", lambda: True)
|
|
286
|
+
monkeypatch.setattr(dense_mod, "retrieve", lambda *_a, **_k: list(engine_hits))
|
|
287
|
+
monkeypatch.setattr(rag.ai, "available", lambda: ai_ok)
|
|
288
|
+
|
|
289
|
+
def test_fused_retrieval_without_a_key_is_not_called_bm25(self, monkeypatch):
|
|
290
|
+
# Exactly the MCP boost_search path: smart defaults on, no key.
|
|
291
|
+
self._wire(monkeypatch, [_hit("a"), _hit("b")], ai_ok=False)
|
|
292
|
+
result = rag.search("q", limit=5)
|
|
293
|
+
assert result is not None
|
|
294
|
+
_hits, label = result
|
|
295
|
+
assert label != "BM25 full-content"
|
|
296
|
+
assert "dense" in label, label
|
|
297
|
+
|
|
298
|
+
def test_smart_off_is_unaffected(self, monkeypatch):
|
|
299
|
+
self._wire(monkeypatch, [_hit("a")], ai_ok=True)
|
|
300
|
+
result = rag.search("q", limit=5, smart=False)
|
|
301
|
+
assert result is not None
|
|
302
|
+
_hits, label = result
|
|
303
|
+
assert "dense" in label, label
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.337 → boost_skill_cli-1.0.338}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|