boost-skill-cli 1.2.107__tar.gz → 1.2.109__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.2.107/boost_skill_cli.egg-info → boost_skill_cli-1.2.109}/PKG-INFO +6 -3
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/README.md +5 -2
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/configuration.py +20 -3
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/discovery.py +29 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/rag.py +123 -15
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109/boost_skill_cli.egg-info}/PKG-INFO +6 -3
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/SOURCES.txt +7 -0
- boost_skill_cli-1.2.109/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +42 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +13 -2
- boost_skill_cli-1.2.109/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +36 -0
- boost_skill_cli-1.2.109/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +44 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-the-keyword-index.md +26 -1
- boost_skill_cli-1.2.109/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +41 -0
- boost_skill_cli-1.2.109/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +55 -0
- boost_skill_cli-1.2.109/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +42 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap.html +202 -35
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_discovery.py +41 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_compact.py +45 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag.py +8 -8
- boost_skill_cli-1.2.109/tests/unit/test_rag_completeness.py +255 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitattributes +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitignore +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale.ini +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/DCO +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/LICENSE +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/Makefile +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/codecov.yml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/index.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/README.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/README.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/index.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/noxfile.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/setup.cfg +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/README.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/boost.css +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/boost.js +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/demo.html +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/visual_check.mjs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.109
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -217,8 +217,11 @@ refused rather than silently picking one.
|
|
|
217
217
|
|
|
218
218
|
Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
|
|
219
219
|
it fetches vectors for, and `boost update` skips a pinned tap rather than moving
|
|
220
|
-
it out from under them (`--force` moves it anyway and drops the pin).
|
|
221
|
-
|
|
220
|
+
it out from under them (`--force` moves it anyway and drops the pin). A pinned
|
|
221
|
+
tap with *no* clone is not skipped — there is nothing to hold still, so it is
|
|
222
|
+
cloned and checked out at its pin; if that pin cannot be reached the clone is
|
|
223
|
+
removed rather than left on HEAD with a pin that no longer describes it, and
|
|
224
|
+
`compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
|
|
222
225
|
imports it; if none does, it says so instead of leaving stale vectors looking
|
|
223
226
|
fresh. `boost search` never refreshes taps behind your back, and never checks
|
|
224
227
|
the manifest either — acting on that answer means moving taps and downloading
|
|
@@ -175,8 +175,11 @@ refused rather than silently picking one.
|
|
|
175
175
|
|
|
176
176
|
Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
|
|
177
177
|
it fetches vectors for, and `boost update` skips a pinned tap rather than moving
|
|
178
|
-
it out from under them (`--force` moves it anyway and drops the pin).
|
|
179
|
-
|
|
178
|
+
it out from under them (`--force` moves it anyway and drops the pin). A pinned
|
|
179
|
+
tap with *no* clone is not skipped — there is nothing to hold still, so it is
|
|
180
|
+
cloned and checked out at its pin; if that pin cannot be reached the clone is
|
|
181
|
+
removed rather than left on HEAD with a pin that no longer describes it, and
|
|
182
|
+
`compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
|
|
180
183
|
imports it; if none does, it says so instead of leaving stale vectors looking
|
|
181
184
|
fresh. `boost search` never refreshes taps behind your back, and never checks
|
|
182
185
|
the manifest either — acting on that answer means moving taps and downloading
|
|
@@ -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.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.109'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 109)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -370,9 +370,26 @@ def cmd_compact(argv) -> int:
|
|
|
370
370
|
# other — nothing about `--reclone` consults the pin — so
|
|
371
371
|
# without this the clone silently lands on HEAD while
|
|
372
372
|
# config.json, the catalog cache and `boost taps` keep
|
|
373
|
-
# naming the old commit.
|
|
374
|
-
|
|
375
|
-
|
|
373
|
+
# naming the old commit.
|
|
374
|
+
try:
|
|
375
|
+
gitutil.checkout_commit(tap.path, tap.pin)
|
|
376
|
+
except BoostError:
|
|
377
|
+
# `--reclone` removed the clone before making this
|
|
378
|
+
# one, so the pinned tree is already gone and there is
|
|
379
|
+
# nothing to fall back to. Letting the `except` below
|
|
380
|
+
# warn and carry on would leave a clone sitting on
|
|
381
|
+
# HEAD with the old pin still recorded beside it, and
|
|
382
|
+
# the next `update` reads `is_cloned` true plus a pin
|
|
383
|
+
# and answers "pinned at <sha> (skipped)" — forever,
|
|
384
|
+
# for a tree that is not on that commit. Remove it
|
|
385
|
+
# instead: `doctor` names a tap with no clone (`! tap
|
|
386
|
+
# <x> not cloned`, exit 1) and `update` re-clones it
|
|
387
|
+
# back onto its pin, so the tap ends in a state
|
|
388
|
+
# something reports and something repairs.
|
|
389
|
+
# `registry.update` takes the same exit on the same
|
|
390
|
+
# failure; this is the path that gets there first.
|
|
391
|
+
util.rmtree(tap.path)
|
|
392
|
+
raise
|
|
376
393
|
# The re-clone can change what's on disk even when the byte
|
|
377
394
|
# count doesn't (a pinned tap's tree is identical, but the
|
|
378
395
|
# cache's recorded commit and mtime are now stale either way).
|
|
@@ -573,6 +573,35 @@ def cmd_reindex(argv):
|
|
|
573
573
|
% (len(stats["reused"]),
|
|
574
574
|
"" if len(stats["reused"]) == 1 else "s",
|
|
575
575
|
", ".join(stats["reindexed"]) or "none"), "muted"))
|
|
576
|
+
# The line that was missing. `boost catalog --import` restores catalogues
|
|
577
|
+
# with no repositories cloned, so every entry indexes from its frontmatter
|
|
578
|
+
# and the count above reads exactly as it does for a full corpus. Say what
|
|
579
|
+
# the index actually holds, in the share of TEXT rather than of documents —
|
|
580
|
+
# a document share reads 100% until it reads 0%.
|
|
581
|
+
#
|
|
582
|
+
# The share quoted is of the tokens THIS INDEX holds, and the sentence says
|
|
583
|
+
# so. It used to read "this index holds N% of the searchable text", which
|
|
584
|
+
# is a share of the corpus — a number nothing here can compute, because the
|
|
585
|
+
# bodies that were never read have no token count to compare against. Since
|
|
586
|
+
# a body runs about an order of magnitude longer than the metadata standing
|
|
587
|
+
# in for it, that reading overstated badly in exactly the partly-cloned case
|
|
588
|
+
# this warning exists for: a half-cloned index announced itself as 94%
|
|
589
|
+
# complete, and one unreadable file among a thousand rendered as "100.0% of
|
|
590
|
+
# the searchable text" inside a warning about missing text.
|
|
591
|
+
if stats["metadata_only"]:
|
|
592
|
+
share = rag.index_completeness() or {}
|
|
593
|
+
tokens = share.get("tokens") or 0
|
|
594
|
+
meta_tokens = share.get("metadata_only_tokens") or 0
|
|
595
|
+
# No tokens at all means nothing but metadata got as far as the index,
|
|
596
|
+
# so 100% is the honest reading rather than a division to protect.
|
|
597
|
+
meta_pct = (100.0 * meta_tokens / tokens) if tokens else 100.0
|
|
598
|
+
out.warn("%d of %d indexed items have no body text — their registries "
|
|
599
|
+
"are not cloned here, so only their catalog metadata was "
|
|
600
|
+
"indexed, and that metadata is %.1f%% of everything this "
|
|
601
|
+
"index holds. Clone them with `boost update`, then re-run "
|
|
602
|
+
"`boost reindex --force` to index their bodies."
|
|
603
|
+
% (stats["metadata_only"], stats["docs"], meta_pct),
|
|
604
|
+
wrap=True)
|
|
576
605
|
if args.dense:
|
|
577
606
|
if dense_stats is None:
|
|
578
607
|
out.warn("dense index skipped — %s" % embed.fallback_note(),
|
|
@@ -51,7 +51,7 @@ from . import ai, catalog, config, frontmatter, gitutil, paths, registry, util
|
|
|
51
51
|
# reach the entries spelling it that way. `build` reuses a tap only when
|
|
52
52
|
# `_load_raw` returned an index, and a version mismatch returns None — so the
|
|
53
53
|
# bump re-indexes every tap rather than half of them.
|
|
54
|
-
INDEX_VERSION =
|
|
54
|
+
INDEX_VERSION = 9
|
|
55
55
|
ENGINE = "bm25"
|
|
56
56
|
|
|
57
57
|
# Chunking defaults (documented in docs/rag-architecture.md §4).
|
|
@@ -294,23 +294,51 @@ def entry_path(entry: dict, tap_paths: dict[str, Path] | None = None
|
|
|
294
294
|
return Path(base) / rel
|
|
295
295
|
|
|
296
296
|
|
|
297
|
-
def
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
297
|
+
def read_body_full(entry: dict, tap_paths: dict[str, Path] | None = None
|
|
298
|
+
) -> tuple[str, bool]:
|
|
299
|
+
"""Return ``(text, has_body)`` — the searchable text, and whether it is
|
|
300
|
+
actually the item's body rather than its catalog metadata standing in.
|
|
301
|
+
|
|
302
|
+
The degradation itself is unchanged and deliberate: a tap whose clone is
|
|
303
|
+
absent still contributes its name and description, because a smaller index
|
|
304
|
+
beats no index. What was missing is that it happened *silently*.
|
|
305
|
+
``boost catalog --import`` restores catalogues with zero repositories
|
|
306
|
+
cloned, so every entry takes this path, and the index it produces is not
|
|
307
|
+
the full-content index the ``evals`` gate floors — it is a frontmatter
|
|
308
|
+
index wearing the same file name. Measured over 3,015 real entries,
|
|
309
|
+
indexed with and then without their clones: 3,041,326 tokens against
|
|
310
|
+
182,507, or **6.0%** of the searchable text, with nothing in the output
|
|
311
|
+
saying so.
|
|
312
|
+
|
|
313
|
+
``has_body`` is False in both degrade cases, and they are one answer on
|
|
314
|
+
purpose: whether the entry names no file or names one that cannot be read,
|
|
315
|
+
the document carries only metadata, which is the thing a caller needs to
|
|
316
|
+
know. :func:`build` counts them and :func:`index_completeness` reports the
|
|
317
|
+
share.
|
|
303
318
|
"""
|
|
304
319
|
header = "%s\n%s" % (entry.get("name", ""), entry.get("description", ""))
|
|
305
320
|
src = entry_path(entry, tap_paths)
|
|
306
321
|
if src is None:
|
|
307
|
-
return header.strip()
|
|
322
|
+
return header.strip(), False
|
|
308
323
|
try:
|
|
309
324
|
text = src.read_text(encoding="utf-8", errors="replace")
|
|
310
325
|
except OSError:
|
|
311
|
-
return header.strip()
|
|
326
|
+
return header.strip(), False
|
|
312
327
|
_meta, body = frontmatter.parse(text)
|
|
313
|
-
return ("%s\n%s" % (header, body)).strip()
|
|
328
|
+
return ("%s\n%s" % (header, body)).strip(), True
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
def read_body(entry: dict, tap_paths: dict[str, Path] | None = None) -> str:
|
|
332
|
+
"""An item's searchable text: name + description + prose body.
|
|
333
|
+
|
|
334
|
+
The frontmatter is stripped (reusing ``frontmatter.parse``); the name and
|
|
335
|
+
description are prepended so short items keep keyword parity with the old
|
|
336
|
+
search. Missing files degrade to just the catalog metadata — ask
|
|
337
|
+
:func:`read_body_full` when you need to know that it happened. This
|
|
338
|
+
signature is load-bearing: ``dense`` and ``boost_langchain`` both call it
|
|
339
|
+
and several tests monkeypatch it.
|
|
340
|
+
"""
|
|
341
|
+
return read_body_full(entry, tap_paths)[0]
|
|
314
342
|
|
|
315
343
|
|
|
316
344
|
# ----------------------------------------------------------------- build
|
|
@@ -349,7 +377,7 @@ def _make_docs(entries: list[dict], tap_paths: dict[str, Path]) -> list[dict]:
|
|
|
349
377
|
"""
|
|
350
378
|
docs: list[dict] = []
|
|
351
379
|
for e in entries:
|
|
352
|
-
body =
|
|
380
|
+
body, has_body = read_body_full(e, tap_paths)
|
|
353
381
|
# The scanner already hashed this exact text (`catalog._content_digest`
|
|
354
382
|
# assembles name + description + body, the same string `read_body`
|
|
355
383
|
# returns), so an entry from a current cache hands the value over. The
|
|
@@ -365,6 +393,13 @@ def _make_docs(entries: list[dict], tap_paths: dict[str, Path]) -> list[dict]:
|
|
|
365
393
|
docs.append({
|
|
366
394
|
"n": e["name"], "t": e["tap"], "f": e["skill_md"], "h": digest,
|
|
367
395
|
"k": e.get("kind", "skill"),
|
|
396
|
+
# Written only when the body is MISSING, so a fully cloned corpus
|
|
397
|
+
# pays nothing for the flag — which matters on an index measured at
|
|
398
|
+
# 43.7 MB. Absence therefore means "has a body", and that reading
|
|
399
|
+
# is only safe because INDEX_VERSION moved with it: `_load_raw`
|
|
400
|
+
# rejects any other version outright, so no document written before
|
|
401
|
+
# this change can be misread as complete.
|
|
402
|
+
**({"m": 1} if not has_body else {}),
|
|
368
403
|
"c": 0, "l": sum(tf.values()),
|
|
369
404
|
"snip": body[:SNIP_STORE].strip(), # windowed at retrieve time
|
|
370
405
|
"tf": dict(tf), # noqa: FURB123 tf is a defaultdict; .copy() would keep the factory
|
|
@@ -428,7 +463,7 @@ def build(entries: list[dict] | None = None, force: bool = False) -> dict:
|
|
|
428
463
|
if old is not None and reused_safe:
|
|
429
464
|
docs = _kept_docs(old, reused_safe) + docs
|
|
430
465
|
|
|
431
|
-
_save(docs, commits)
|
|
466
|
+
saved = _save(docs, commits)
|
|
432
467
|
reindexed = sorted({e["tap"] for e in fresh})
|
|
433
468
|
# `reindexed` names taps by their real name ("owner/repo"); `reused_safe`
|
|
434
469
|
# is keyed by the safe name ("owner__repo") that `_tap_commits` uses to
|
|
@@ -446,6 +481,10 @@ def build(entries: list[dict] | None = None, force: bool = False) -> dict:
|
|
|
446
481
|
"taps": len(commits),
|
|
447
482
|
"reindexed": reindexed,
|
|
448
483
|
"reused": reused,
|
|
484
|
+
# Counted over every document written, reused ones included — an
|
|
485
|
+
# incremental build that reported only what it re-indexed would say
|
|
486
|
+
# zero on the run after a bundle import.
|
|
487
|
+
"metadata_only": saved["metadata_only"],
|
|
449
488
|
}
|
|
450
489
|
|
|
451
490
|
|
|
@@ -640,17 +679,38 @@ def _all_postings() -> dict[str, list[list[int]]]:
|
|
|
640
679
|
return dict(out) # noqa: FURB123 out is a defaultdict; .copy() would keep the factory
|
|
641
680
|
|
|
642
681
|
|
|
643
|
-
def _save(docs: list[dict], commits: dict[str, str]) ->
|
|
682
|
+
def _save(docs: list[dict], commits: dict[str, str]) -> dict:
|
|
683
|
+
"""Persist the index and return the ``stats`` block it wrote.
|
|
684
|
+
|
|
685
|
+
Returning the stats rather than recomputing them in :func:`build` keeps one
|
|
686
|
+
definition of "how much of this index is real body text": the totals are
|
|
687
|
+
summed here, over the same documents that are being written.
|
|
688
|
+
"""
|
|
644
689
|
postings: dict[str, list[list[int]]] = defaultdict(list)
|
|
645
690
|
meta_docs: list[dict] = []
|
|
646
691
|
total_len = 0
|
|
692
|
+
metadata_only = 0
|
|
693
|
+
metadata_only_len = 0
|
|
647
694
|
for doc_id, d in enumerate(docs):
|
|
648
695
|
for term, tf in d["tf"].items():
|
|
649
696
|
postings[term].append([doc_id, tf])
|
|
650
697
|
total_len += d["l"]
|
|
698
|
+
# `.get`, because a document reused from the previous index carries
|
|
699
|
+
# whatever it was written with, and a hand-built one (several tests)
|
|
700
|
+
# carries nothing. Absence is "has a body" — see `_make_docs`.
|
|
701
|
+
bodyless = bool(d.get("m"))
|
|
702
|
+
if bodyless:
|
|
703
|
+
metadata_only += 1
|
|
704
|
+
metadata_only_len += d["l"]
|
|
651
705
|
meta_docs.append({"n": d["n"], "t": d["t"], "f": d["f"], "k": d["k"],
|
|
652
706
|
"h": d.get("h", ""),
|
|
707
|
+
**({"m": 1} if bodyless else {}),
|
|
653
708
|
"c": d["c"], "l": d["l"], "snip": d["snip"]})
|
|
709
|
+
stats: dict = {"docs": len(docs),
|
|
710
|
+
"avg_len": (total_len / len(docs)) if docs else 0.0,
|
|
711
|
+
"tokens": total_len,
|
|
712
|
+
"metadata_only": metadata_only,
|
|
713
|
+
"metadata_only_tokens": metadata_only_len}
|
|
654
714
|
payload = {
|
|
655
715
|
"version": INDEX_VERSION,
|
|
656
716
|
"engine": ENGINE,
|
|
@@ -658,8 +718,7 @@ def _save(docs: list[dict], commits: dict[str, str]) -> None:
|
|
|
658
718
|
"commits": commits,
|
|
659
719
|
"params": {"chunk_chars": CHUNK_CHARS, "overlap": OVERLAP,
|
|
660
720
|
"k1": K1, "b": B},
|
|
661
|
-
"stats":
|
|
662
|
-
"avg_len": (total_len / len(docs)) if docs else 0.0},
|
|
721
|
+
"stats": stats,
|
|
663
722
|
"docs": meta_docs,
|
|
664
723
|
}
|
|
665
724
|
paths.ensure_dirs()
|
|
@@ -671,6 +730,7 @@ def _save(docs: list[dict], commits: dict[str, str]) -> None:
|
|
|
671
730
|
# Drop the mtime-keyed cache so a reindex is visible to an immediately
|
|
672
731
|
# following query even when the filesystem mtime granularity is coarse.
|
|
673
732
|
_CACHE.pop(str(p), None)
|
|
733
|
+
return stats
|
|
674
734
|
|
|
675
735
|
|
|
676
736
|
def _now() -> str:
|
|
@@ -718,6 +778,54 @@ def ready() -> bool:
|
|
|
718
778
|
return bool(raw and raw.get("docs") and postings_path().exists())
|
|
719
779
|
|
|
720
780
|
|
|
781
|
+
def index_completeness() -> dict | None:
|
|
782
|
+
"""How much of the index on disk is the corpus, and how much is its labels.
|
|
783
|
+
|
|
784
|
+
Returns ``None`` when there is no readable index — the same answer
|
|
785
|
+
:func:`_load_raw` gives, rather than a zeroed dict, because "no index" and
|
|
786
|
+
"an index carrying no bodies" are different situations with different
|
|
787
|
+
remedies and must not render alike.
|
|
788
|
+
|
|
789
|
+
``body_share`` is a share of **tokens**, not of documents, and that is the
|
|
790
|
+
whole point. An entry whose body is missing still produces a document, so a
|
|
791
|
+
document share sits at 1.0 until the moment it drops to 0.0 and tells a
|
|
792
|
+
partially-cloned machine nothing.
|
|
793
|
+
|
|
794
|
+
It describes **this index**, not the corpus behind it: the fraction of the
|
|
795
|
+
tokens actually indexed that came from a document carrying a body. The
|
|
796
|
+
share of the *corpus's* text that made it in is a different number, and it
|
|
797
|
+
is not computable here — the bodies that were never read have no token
|
|
798
|
+
count to compare against, by construction. An earlier version of this
|
|
799
|
+
docstring claimed the value "reproduces the measurement the roadmap card
|
|
800
|
+
made by hand ... or 6.0% of the searchable text". It does not: for that
|
|
801
|
+
input every token indexed came from metadata, so it returns **0.0**. The
|
|
802
|
+
two move in opposite directions, and because a body runs about an order of
|
|
803
|
+
magnitude longer than the metadata standing in for it, presenting this as
|
|
804
|
+
corpus completeness overstates a half-cloned machine badly. Callers must
|
|
805
|
+
say which share they are quoting; :func:`cmd_reindex` quotes
|
|
806
|
+
``metadata_only_tokens / tokens`` and names it.
|
|
807
|
+
|
|
808
|
+
Reads the persisted totals rather than re-deriving them, so asking is a
|
|
809
|
+
stat plus a cached parse — nothing walks the corpus.
|
|
810
|
+
"""
|
|
811
|
+
raw = _load_raw()
|
|
812
|
+
if raw is None:
|
|
813
|
+
return None
|
|
814
|
+
stats = raw.get("stats") or {}
|
|
815
|
+
tokens = int(stats.get("tokens") or 0)
|
|
816
|
+
metadata_only_tokens = int(stats.get("metadata_only_tokens") or 0)
|
|
817
|
+
return {
|
|
818
|
+
"docs": int(stats.get("docs") or 0),
|
|
819
|
+
"metadata_only": int(stats.get("metadata_only") or 0),
|
|
820
|
+
"tokens": tokens,
|
|
821
|
+
"metadata_only_tokens": metadata_only_tokens,
|
|
822
|
+
# Guarded on `tokens`, not on `docs`: an index of documents that all
|
|
823
|
+
# tokenized to nothing would divide by zero, and 0.0 is the honest
|
|
824
|
+
# answer there — no body text is present.
|
|
825
|
+
"body_share": (1.0 - metadata_only_tokens / tokens) if tokens else 0.0,
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
|
|
721
829
|
def stale() -> bool:
|
|
722
830
|
"""True when the index no longer reflects the taps on disk.
|
|
723
831
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.109
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -217,8 +217,11 @@ refused rather than silently picking one.
|
|
|
217
217
|
|
|
218
218
|
Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
|
|
219
219
|
it fetches vectors for, and `boost update` skips a pinned tap rather than moving
|
|
220
|
-
it out from under them (`--force` moves it anyway and drops the pin).
|
|
221
|
-
|
|
220
|
+
it out from under them (`--force` moves it anyway and drops the pin). A pinned
|
|
221
|
+
tap with *no* clone is not skipped — there is nothing to hold still, so it is
|
|
222
|
+
cloned and checked out at its pin; if that pin cannot be reached the clone is
|
|
223
|
+
removed rather than left on HEAD with a pin that no longer describes it, and
|
|
224
|
+
`compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
|
|
222
225
|
imports it; if none does, it says so instead of leaving stale vectors looking
|
|
223
226
|
fresh. `boost search` never refreshes taps behind your back, and never checks
|
|
224
227
|
the manifest either — acting on that answer means moving taps and downloading
|
|
@@ -207,6 +207,7 @@ docs/roadmap/items/BOOST-D24.md
|
|
|
207
207
|
docs/roadmap/items/BOOST-D25.md
|
|
208
208
|
docs/roadmap/items/BOOST-D26.md
|
|
209
209
|
docs/roadmap/items/BOOST-D27.md
|
|
210
|
+
docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md
|
|
210
211
|
docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md
|
|
211
212
|
docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md
|
|
212
213
|
docs/roadmap/items/actionlint-skips-shellcheck-silently.md
|
|
@@ -357,6 +358,7 @@ docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md
|
|
|
357
358
|
docs/roadmap/items/cold-search-reads-the-whole-catalogue.md
|
|
358
359
|
docs/roadmap/items/command-carousel-page.md
|
|
359
360
|
docs/roadmap/items/command-reference-docs-site.md
|
|
361
|
+
docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md
|
|
360
362
|
docs/roadmap/items/completions-complete-only-command-names.md
|
|
361
363
|
docs/roadmap/items/completions-install-could-eat-your-rc-file.md
|
|
362
364
|
docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
|
|
@@ -455,6 +457,7 @@ docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md
|
|
|
455
457
|
docs/roadmap/items/layering-guard-import-linter.md
|
|
456
458
|
docs/roadmap/items/license-compliance-scanning.md
|
|
457
459
|
docs/roadmap/items/lighthouse-ci-on-the-pages-site.md
|
|
460
|
+
docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md
|
|
458
461
|
docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md
|
|
459
462
|
docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md
|
|
460
463
|
docs/roadmap/items/list-rules-and-workflows.md
|
|
@@ -548,10 +551,12 @@ docs/roadmap/items/ranx-significance-monitor.md
|
|
|
548
551
|
docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md
|
|
549
552
|
docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md
|
|
550
553
|
docs/roadmap/items/readme-prune-and-search-guide.md
|
|
554
|
+
docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md
|
|
551
555
|
docs/roadmap/items/recommend-recomputes-its-columns-per-row.md
|
|
552
556
|
docs/roadmap/items/reconcile-the-theme-drift.md
|
|
553
557
|
docs/roadmap/items/refresh-strands-the-natural-set-baseline.md
|
|
554
558
|
docs/roadmap/items/refresh-the-marketing-surface.md
|
|
559
|
+
docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md
|
|
555
560
|
docs/roadmap/items/rel-time-tests-race-the-wall-clock.md
|
|
556
561
|
docs/roadmap/items/release-verifies-the-wrong-commit.md
|
|
557
562
|
docs/roadmap/items/relicence-apache-2.md
|
|
@@ -624,6 +629,7 @@ docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md
|
|
|
624
629
|
docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md
|
|
625
630
|
docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md
|
|
626
631
|
docs/roadmap/items/taps-check-out-freight-they-never-index.md
|
|
632
|
+
docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md
|
|
627
633
|
docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md
|
|
628
634
|
docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md
|
|
629
635
|
docs/roadmap/items/the-shard-job-that-could-not-finish.md
|
|
@@ -956,6 +962,7 @@ tests/unit/test_projectlock.py
|
|
|
956
962
|
tests/unit/test_provenance.py
|
|
957
963
|
tests/unit/test_publish_golden_dataset.py
|
|
958
964
|
tests/unit/test_rag.py
|
|
965
|
+
tests/unit/test_rag_completeness.py
|
|
959
966
|
tests/unit/test_rag_fastpath.py
|
|
960
967
|
tests/unit/test_rag_fusion.py
|
|
961
968
|
tests/unit/test_registries_fresh.py
|
boost_skill_cli-1.2.109/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: a-new-shipped-card-always-404s-its-own-write-up-link
|
|
3
|
+
board: code
|
|
4
|
+
section: pipeline
|
|
5
|
+
status: planned
|
|
6
|
+
category: CI · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Medium
|
|
9
|
+
wow: 3
|
|
10
|
+
note: the links check goes red on every correct PR that files a new card as shipped, and green again on merge
|
|
11
|
+
order: 313
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: "A new card filed as <code>shipped</code> always 404s its own write-up link"
|
|
15
|
+
---
|
|
16
|
+
<code>build_roadmap.py</code> renders a settled card's body as a link to the item file on
|
|
17
|
+
<b><code>main</code></b> — <code>ITEMS_URL</code> (line 206) is
|
|
18
|
+
<code>https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items</code>, and
|
|
19
|
+
<code>_body_html</code> emits it for any status in <code>_SETTLED</code>. The
|
|
20
|
+
<code>links</code> job runs on <code>pull_request</code> over
|
|
21
|
+
<code>docs/*.html</code>. So a PR that files a <em>new</em> card at
|
|
22
|
+
<code>status: shipped</code> renders a link to a file that does not exist on
|
|
23
|
+
<code>main</code> yet, and lychee rejects it 404 — on a PR where nothing is wrong.
|
|
24
|
+
It goes green by itself the moment the PR merges.
|
|
25
|
+
|
|
26
|
+
Observed on PR <code>#845</code>, whose 22 required checks were all green:
|
|
27
|
+
<em>“[404] <…/blob/main/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md> (at 4125:54) | Rejected status code: 404 Not Found”</em>.
|
|
28
|
+
The mechanism is deterministic from the three sources above rather than inferred from that
|
|
29
|
+
one run: any new item file whose first committed status is settled hits it. Cards that were
|
|
30
|
+
already on <code>main</code> and merely change status do not, which is why this went
|
|
31
|
+
unnoticed — the usual shape is claim-then-ship across two PRs.
|
|
32
|
+
|
|
33
|
+
It matters because the remedy people reach for is the wrong one: either the card gets
|
|
34
|
+
filed at a status that misdescribes it to keep CI quiet, or a check that is right about
|
|
35
|
+
everything else gets learned as noise. <code>links</code> is advisory rather than
|
|
36
|
+
required, which caps the damage and is also what lets it rot unnoticed. Options, cheapest
|
|
37
|
+
first: resolve the link against the <em>head</em> ref in CI
|
|
38
|
+
(<code>GITHUB_HEAD_REF</code>) and <code>main</code> elsewhere; or let lychee treat a
|
|
39
|
+
<code>blob/main</code> URL whose path exists in the working tree as satisfied; or link the
|
|
40
|
+
raw file relatively and accept that GitHub Pages serves <code>.md</code> as a download
|
|
41
|
+
rather than rendered Markdown — which is the reason the absolute URL was chosen, so
|
|
42
|
+
that one is a trade, not a fix.
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
id: audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co
|
|
3
3
|
board: code
|
|
4
4
|
section: internals
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Safety · Bug
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 2
|
|
10
|
-
note:
|
|
10
|
+
note: three broken paths, three PRs claiming it, and one residual that took a second item to finish
|
|
11
11
|
order: 216
|
|
12
12
|
owner: loop/tap-pin-integrity
|
|
13
13
|
pr: 725
|
|
@@ -43,3 +43,14 @@ size-only report at <code>configuration.py:288-292</code> is what hid the move.
|
|
|
43
43
|
pinned-tap paragraph (lines 176-178) and its <code>compact --reclone</code> line (274); regenerate
|
|
44
44
|
<code>docs/commands.html</code> only if the <code>--force</code> help string changes. Found by the
|
|
45
45
|
2026-08 CLI audit (cluster <code>pinned-tap-integrity</code>); repro in the audit log.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
<b>Closed 2026-09-10.</b> <code>#725</code> landed the <code>registry.update</code> half
|
|
49
|
+
(both the <code>--force</code> unpin and the re-clone of a pinned tap whose clone had
|
|
50
|
+
vanished, with <code>tests/unit/test_tap_pins.py</code> covering each). The
|
|
51
|
+
<code>compact --reclone</code> half landed in two pieces: the pin checkout, the
|
|
52
|
+
<code>catalog.rebuild_tap</code> and the size-independent report came with
|
|
53
|
+
<code>#725</code>; the unresolvable-pin guard was left behind when three PRs claimed this
|
|
54
|
+
one item and only one could merge, and is its own card —
|
|
55
|
+
<code>reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin</code>. All three paths
|
|
56
|
+
named above are now closed, and README's pinned-tap paragraph says what the code does.
|
boost_skill_cli-1.2.109/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: compact-answers-a-named-tap-with-a-global-all-clear
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: planned
|
|
6
|
+
category: CLI · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Medium
|
|
9
|
+
wow: 2
|
|
10
|
+
note: boost compact <tap> on an uncloned tap prints a green "no cloned taps to compact" and exits 0
|
|
11
|
+
order: 311
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: "<code>compact <tap></code> answers a question about one tap with a global all-clear"
|
|
15
|
+
---
|
|
16
|
+
<code>cmd_compact</code> resolves its named taps and then filters
|
|
17
|
+
(<code>taps = [t for t in taps if t.is_cloned]</code>). A tap that is configured but has
|
|
18
|
+
no clone falls out of that list silently, so the empty-list branch fires and prints
|
|
19
|
+
<em>“✓ no cloned taps to compact”</em> with exit 0 — a green,
|
|
20
|
+
plural, global-sounding all-clear in answer to a question about one specific tap, which
|
|
21
|
+
it never names.
|
|
22
|
+
|
|
23
|
+
Reproduced on a scratch <code>BOOST_HOME</code>: tap a repo, delete its clone directory,
|
|
24
|
+
then <code>boost compact <that-tap></code> → <code>rc=0</code>,
|
|
25
|
+
<em>“✓ no cloned taps to compact”</em>. Meanwhile
|
|
26
|
+
<code>boost doctor</code> exits 1 on the same machine and says
|
|
27
|
+
<em>“! tap <x> not cloned — run <code>boost update</code>”</em>,
|
|
28
|
+
so the information exists and this command is the one that withholds it.
|
|
29
|
+
|
|
30
|
+
This contradicts the convention <code>registry.update</code> states in its own docstring:
|
|
31
|
+
<em>“A named tap still raises. <code>boost update sometap</code> is a request about
|
|
32
|
+
that one tap, so its failure is the answer to the question asked.”</em> The sweep
|
|
33
|
+
form is right to stay quiet; the named form is not. Fix: when <code>args.tap</code> named
|
|
34
|
+
taps and the filter dropped some, say which and why, and point at
|
|
35
|
+
<code>boost update</code> the way <code>doctor</code> does — and do not report
|
|
36
|
+
success for a tap nothing was done to.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: lighthouse-flips-on-byte-identical-input
|
|
3
|
+
board: code
|
|
4
|
+
section: docsite
|
|
5
|
+
status: planned
|
|
6
|
+
category: CI · Bug
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: the same roadmap.html scored 0.78 and passed, then 0.78 and failed — the gate now decides on runner noise
|
|
11
|
+
order: 314
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: The performance gate flips on byte-identical input
|
|
15
|
+
---
|
|
16
|
+
<code>lighthouse</code> asserts <code>categories.performance ≥ 0.80</code> on
|
|
17
|
+
<code>docs/roadmap.html</code>. That page now scores <b>0.76–0.78</b>, so the
|
|
18
|
+
assertion is decided by whichever way runner timing falls, not by the page. <b>Two commits
|
|
19
|
+
on one branch, whose <code>docs/roadmap.html</code> is byte-identical
|
|
20
|
+
(<code>sha256 42bdc4f7…</code>, 784,560 bytes both), got opposite verdicts</b>
|
|
21
|
+
— <code>c75f4a9f</code> failed, <code>037a2468</code> passed, 60 seconds apart. The
|
|
22
|
+
same oscillation is visible on other branches in the run history:
|
|
23
|
+
<code>loop/missing-json</code> failed at <code>2a5231cb</code> and passed at
|
|
24
|
+
<code>1c949b7d</code>; <code>loop/audit-retrieval-search-onboarding</code> failed twice
|
|
25
|
+
then passed.
|
|
26
|
+
|
|
27
|
+
Three earlier cards closed real findings here —
|
|
28
|
+
<code>lighthouse-ci-on-the-pages-site</code> installed the budgets,
|
|
29
|
+
<code>lighthouse-scored-a-page-nobody-is-served</code> fixed a harness sending 3.27x the
|
|
30
|
+
bytes Pages sends, and <code>roadmap-page-weight-grows-without-bound</code> found it was
|
|
31
|
+
<em>never the bytes</em> but 705 ms of <code>styleLayout</code>, and bought headroom
|
|
32
|
+
by letting 55.5% of elements skip it. That headroom has since been spent: the board was
|
|
33
|
+
407.6 KB when that card was written and is <b>787 KB</b> now. So this is not a
|
|
34
|
+
re-file of any of them — it is what happens after their fix, and the symptom is
|
|
35
|
+
different in kind: a gate that cannot decide rather than a page that is slow.
|
|
36
|
+
|
|
37
|
+
Why it matters more than two hundredths of a score: a check that fails on input it just
|
|
38
|
+
passed is a check people learn to re-run rather than read, and the next real regression
|
|
39
|
+
arrives looking exactly like the last false one. <code>lighthouse</code> is advisory, not
|
|
40
|
+
required, which is what has let it drift this far unnoticed. Fix — decide which
|
|
41
|
+
guarantee is wanted, then make the gate express it: assert the median of the three runs
|
|
42
|
+
rather than the worst, or floor at a value the page actually clears and put a separate
|
|
43
|
+
bound on the growth that is eating the margin, so the number that moves is the one being
|
|
44
|
+
regressed. Lowering the floor alone just relocates the coin flip.
|
{boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-the-keyword-index.md
RENAMED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
id: publish-the-keyword-index
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: inflight
|
|
6
6
|
category: Search · Performance
|
|
7
7
|
complexity: L
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
10
|
note: every machine rebuilds 697 MB of index for a corpus that is byte-identical on all of them
|
|
11
11
|
order: 99
|
|
12
|
+
owner: loop/keyword-index-completeness
|
|
12
13
|
title: publish the keyword index the way vectors are published
|
|
13
14
|
---
|
|
14
15
|
Dense vectors are built once in CI and downloaded. The BM25 index is not:
|
|
@@ -66,3 +67,27 @@ as a match.
|
|
|
66
67
|
<a href="#shrink-the-published-index">shrink-the-published-index</a>. This card should not ship
|
|
67
68
|
until that one has an answer, because publishing 697 MB per refresh to save 65 s of CPU
|
|
68
69
|
is not obviously the right trade, and at the compressed sizes measured there it clearly is.
|
|
70
|
+
|
|
71
|
+
<b>Partly landed, and deliberately still <code>inflight</code> — 2026-09-10.</b> What shipped is
|
|
72
|
+
the half that needed no size decision: <b>the index now records what it is</b>.
|
|
73
|
+
<code>read_body_full</code> returns the text and whether it contains the item's body,
|
|
74
|
+
<code>build()</code> reports <code>metadata_only</code> over every document written (reused ones
|
|
75
|
+
included, or an incremental build reports zero on the run after a bundle import),
|
|
76
|
+
<code>index_completeness()</code> reads the share back off disk, and <code>boost reindex</code>
|
|
77
|
+
says it out loud instead of reporting the same confident count for a 6% index. The share is of
|
|
78
|
+
<b>tokens</b>, not documents: a bodyless entry still produces a document, so a document share sits
|
|
79
|
+
at 1.0 until it drops to 0.0. <code>INDEX_VERSION</code> moved to <b>9</b>, because the flag is
|
|
80
|
+
written only when a body is missing and absence may only be read as "complete" once no older
|
|
81
|
+
document can survive.
|
|
82
|
+
|
|
83
|
+
<b>What did NOT land:</b> <code>rag.export_shard</code> / <code>rag.import_shard</code>, the
|
|
84
|
+
per-registry assets, and the <code>manifest.json</code> rows — the publishing pipeline itself.
|
|
85
|
+
That half is what the payload-size question governs, and
|
|
86
|
+
<a href="#shrink-the-published-index">shrink-the-published-index</a> still has no answer: its claim
|
|
87
|
+
is <b>stale</b>, not active — branch <code>loop/shrink-postings-index</code> was last touched
|
|
88
|
+
2026-09-02, carries one commit, has no pull request, and is 394 commits behind
|
|
89
|
+
<code>main</code>. Someone should un-claim it. One structural finding for whoever takes it: doc
|
|
90
|
+
ids are positional (<code>_save</code> does <code>enumerate(docs)</code>), so the card's
|
|
91
|
+
"merge by offsetting <code>doc_id</code>" is sound as written — and the shard format should
|
|
92
|
+
serialize <em>logical</em> postings (digest → term → tf) rather than the SQLite layout, so the
|
|
93
|
+
interning that branch was attempting cannot invalidate a published shard.
|