boost-skill-cli 1.2.150__tar.gz → 1.2.152__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.150 → boost_skill_cli-1.2.152}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/catalog.py +49 -8
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/dense.py +84 -12
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +5 -3
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +22 -7
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap.html +26 -83
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/semantic-search.md +18 -4
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_corpus.py +400 -103
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/taps-scale.txt +20 -20
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/taps.txt +42 -22
- boost_skill_cli-1.2.152/tests/unit/test_catalog_distinct.py +117 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_corpus_prose.py +26 -5
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_fix_hint.py +159 -6
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_status.py +27 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_corpus.py +422 -8
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_scale_corpus.py +10 -3
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.gitattributes +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.gitignore +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/.vale.ini +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/DCO +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/LICENSE +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/Makefile +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/compact.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/prereq.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/codecov.yml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/index.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/examples/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/index.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/noxfile.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/setup.cfg +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/style/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/style/boost.css +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/style/boost.js +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/style/demo.html +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_hooks_codex.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_identifier_columns.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_keyed_no_store_hint.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_canary_deps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_claude_settings_codex.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_coverage_gate_prose.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_model_unavailable.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_dry_run_parity.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_embed_outranking.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_corpus_bodies.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_query_sets.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_first_run_pointer.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_help_contracts.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_hookhost_codex.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_lighthouse_budgets.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_output_table_drop.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_output_table_whole.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_prereq.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_quickstart_readiness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rag_extra_hint.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_read_text_arg.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_repo_root_guard.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_sdist_contents.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shards_carry_forward.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_sync_lost_lock.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_upstream_path.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.150 → boost_skill_cli-1.2.152}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.152'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 152)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -26,6 +26,7 @@ import operator
|
|
|
26
26
|
import os
|
|
27
27
|
import re
|
|
28
28
|
import sys
|
|
29
|
+
from collections.abc import Iterable
|
|
29
30
|
from pathlib import Path
|
|
30
31
|
|
|
31
32
|
from ..errors import BoostError
|
|
@@ -115,6 +116,49 @@ def _content_digest(name: str, description: str, body: str) -> str:
|
|
|
115
116
|
return hashlib.sha256(text.strip().encode("utf-8", "replace")).hexdigest()[:16]
|
|
116
117
|
|
|
117
118
|
|
|
119
|
+
def content_unique(entries: Iterable[dict]) -> list[dict]:
|
|
120
|
+
"""The first entry of each distinct ``content`` digest, in scan order.
|
|
121
|
+
|
|
122
|
+
An entry carrying no digest is always kept. Two absences are not a match:
|
|
123
|
+
a cache written before ``CACHE_FORMAT`` stamped the field, or an entry
|
|
124
|
+
synthesised without one, says nothing about what that item *is*, and
|
|
125
|
+
collapsing unknowns into each other silently deletes real items.
|
|
126
|
+
|
|
127
|
+
The digest is :func:`_content_digest` — ``name``, ``description`` and the
|
|
128
|
+
frontmatter-stripped body — which is the identity
|
|
129
|
+
:func:`rag.dedupe_by_content` collapses a ranked list on. It is not
|
|
130
|
+
``scripts/measure_registry.py``'s digest, which hashes the body alone with
|
|
131
|
+
agent dotdir tokens normalised so one skill rendered into ``.claude/``,
|
|
132
|
+
``.cursor/`` and ``.gemini/`` counts once. That is the right question for
|
|
133
|
+
``est_items`` and the wrong one here: the gate scores those renders as
|
|
134
|
+
separate competing rows, so a measure that merges them cannot describe the
|
|
135
|
+
corpus it ranks.
|
|
136
|
+
"""
|
|
137
|
+
seen: set[str] = set()
|
|
138
|
+
out: list[dict] = []
|
|
139
|
+
for entry in entries:
|
|
140
|
+
digest = entry.get("content")
|
|
141
|
+
if not digest:
|
|
142
|
+
out.append(entry)
|
|
143
|
+
continue
|
|
144
|
+
if digest in seen:
|
|
145
|
+
continue
|
|
146
|
+
seen.add(digest)
|
|
147
|
+
out.append(entry)
|
|
148
|
+
return out
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def distinct_content(entries: Iterable[dict]) -> int:
|
|
152
|
+
"""How many distinct content identities ``entries`` holds.
|
|
153
|
+
|
|
154
|
+
``len(content_unique(entries))``, and deliberately not
|
|
155
|
+
``len({e["content"] for e in entries})``: the set comprehension collapses
|
|
156
|
+
every entry with no recorded digest into one ``None``, which is the one
|
|
157
|
+
answer :func:`content_unique` exists to refuse.
|
|
158
|
+
"""
|
|
159
|
+
return len(content_unique(entries))
|
|
160
|
+
|
|
161
|
+
|
|
118
162
|
def _entry_category(meta: dict, tap_category: str) -> str:
|
|
119
163
|
"""An item's own category, falling back to its tap's curated category.
|
|
120
164
|
|
|
@@ -406,9 +450,8 @@ def lint_targets(entries: list[dict], tap_root: Path,
|
|
|
406
450
|
"no such name%s in this tap: %s"
|
|
407
451
|
% ("" if len(unknown) == 1 else "s", ", ".join(unknown)),
|
|
408
452
|
hint="run without NAMEs to lint everything in the tap")
|
|
409
|
-
|
|
453
|
+
kept: list[dict] = []
|
|
410
454
|
skipped: list[dict] = []
|
|
411
|
-
seen_content: set = set()
|
|
412
455
|
for entry in entries:
|
|
413
456
|
if wanted and entry["name"] not in wanted:
|
|
414
457
|
continue
|
|
@@ -416,12 +459,10 @@ def lint_targets(entries: list[dict], tap_root: Path,
|
|
|
416
459
|
if kind != KIND_SKILL:
|
|
417
460
|
skipped.append({"name": entry["name"], "kind": kind})
|
|
418
461
|
continue
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
seen_content.add(digest)
|
|
424
|
-
skills.append(entry)
|
|
462
|
+
kept.append(entry)
|
|
463
|
+
# One rule, one implementation: mirrors of one skill lint once, and an
|
|
464
|
+
# entry with no digest is never absorbed into another.
|
|
465
|
+
skills = content_unique(kept)
|
|
425
466
|
|
|
426
467
|
name_counts: dict[str, int] = {}
|
|
427
468
|
for entry in skills:
|
|
@@ -568,10 +568,12 @@ _FIX = {
|
|
|
568
568
|
# instead: with it in force, this build goes through the paid API.
|
|
569
569
|
"no-store": "build it: `boost reindex --dense`",
|
|
570
570
|
"version-changed": "rebuild it: `boost reindex --dense --force`",
|
|
571
|
-
# Only right when the live space is the one the user wants.
|
|
572
|
-
#
|
|
573
|
-
#
|
|
574
|
-
#
|
|
571
|
+
# Only right when the live space is the one the user wants. Two kinds of
|
|
572
|
+
# store land here without wanting it: one built through a paid provider
|
|
573
|
+
# that has merely lost its key, and one the local model built on a machine
|
|
574
|
+
# that has since exported a key. For both this row is the bill the guards
|
|
575
|
+
# in `fix_hint` exist to prevent, so it answers from the status dict —
|
|
576
|
+
# `_restore_built_space` and `_restore_local_space` — before reaching here.
|
|
575
577
|
"provider-changed": "rebuild it: `boost reindex --dense --force`",
|
|
576
578
|
"model-changed": "rebuild it: `boost reindex --dense --force`",
|
|
577
579
|
"dim-changed": "rebuild it: `boost reindex --dense --force`",
|
|
@@ -664,6 +666,49 @@ def _restore_built_space(built: str, env: str) -> str | None:
|
|
|
664
666
|
return None
|
|
665
667
|
|
|
666
668
|
|
|
669
|
+
def _restore_local_space() -> str | None:
|
|
670
|
+
"""How to put the *local* model back in front of a key, or None.
|
|
671
|
+
|
|
672
|
+
The mirror of :func:`_restore_built_space`, and the expensive direction.
|
|
673
|
+
A store the local model built is displaced by exactly the mechanism that
|
|
674
|
+
displaces a keyed one — a provider `embed.provider` prefers appears on the
|
|
675
|
+
machine — and it is the common case rather than the exotic one: `boost
|
|
676
|
+
quickstart` imports the published shards, those are keyless 384-d local
|
|
677
|
+
vectors by policy, so the default on-ramp leaves every user one `export`
|
|
678
|
+
away from this.
|
|
679
|
+
|
|
680
|
+
Separate from :func:`_restore_built_space` rather than a fourth branch in
|
|
681
|
+
it, because the predicate is different in two ways:
|
|
682
|
+
|
|
683
|
+
* **`unset` is only right advice when the local model is installed.**
|
|
684
|
+
Dropping the one key in force on a partial ``[rag]`` install sends
|
|
685
|
+
`embed.provider` to ``None`` and the ladder to ``no-key`` — advice that
|
|
686
|
+
switches off the only backend that was working. :func:`free_shard_path`
|
|
687
|
+
guards the same way and for the same reason; ``local_installed`` rather
|
|
688
|
+
than ``local_available`` because wording a hint must not import an ONNX
|
|
689
|
+
runtime.
|
|
690
|
+
* **There is no ``export`` half.** Local has no key, so the two-fact shape
|
|
691
|
+
collapses to one, and the sentence has to say what is being put back —
|
|
692
|
+
the local model, not "the store's own key", which a keyless store does
|
|
693
|
+
not have.
|
|
694
|
+
|
|
695
|
+
None when nothing outranks local, which through :func:`status` means the
|
|
696
|
+
store is not displaced at all. :func:`fix_hint` is a pure function of its
|
|
697
|
+
arguments, though, so the case is reachable by a caller and answered.
|
|
698
|
+
"""
|
|
699
|
+
if not embed.local_installed():
|
|
700
|
+
return None
|
|
701
|
+
# `outranking` reads the one preference order there is. Local is not in
|
|
702
|
+
# `KEY_ENV`, and its docstring is explicit that a name outside the table
|
|
703
|
+
# is outranked by every key in force — which is the semantics wanted here:
|
|
704
|
+
# dropping `VOYAGE_API_KEY` alone falls through to `OPENAI_API_KEY`, no
|
|
705
|
+
# nearer the local space than the key it replaced.
|
|
706
|
+
drop = embed.outranking("local")
|
|
707
|
+
if not drop:
|
|
708
|
+
return None
|
|
709
|
+
return "`unset %s` puts the local model back in front" % " ".join(drop)
|
|
710
|
+
|
|
711
|
+
|
|
667
712
|
def fix_hint(reason: str, status: dict | None = None) -> str:
|
|
668
713
|
"""The single next action for a `status()` reason, or a safe default.
|
|
669
714
|
|
|
@@ -686,6 +731,17 @@ def fix_hint(reason: str, status: dict | None = None) -> str:
|
|
|
686
731
|
``built_provider`` is what separates a store worth reviving from an
|
|
687
732
|
unfinished install with nothing to revive.
|
|
688
733
|
|
|
734
|
+
``built_provider`` is also read for the mirror case, which is the one most
|
|
735
|
+
users can reach: a store the **local** model built, on a machine that has
|
|
736
|
+
since exported a key. `boost quickstart` imports keyless 384-d shards, so
|
|
737
|
+
that is the default shape, and one `export` for an unrelated tool takes
|
|
738
|
+
semantic search off. `_restore_local_space` answers it with the `unset`
|
|
739
|
+
that is free, where the table would sell a re-embed through the very API
|
|
740
|
+
whose key caused the problem. Only ``local`` and the names in
|
|
741
|
+
:data:`embed.KEY_ENV` are admitted — a blank ``built_provider`` is not a
|
|
742
|
+
store to revive, and `embed.outranking` would answer for it with every
|
|
743
|
+
key on the machine.
|
|
744
|
+
|
|
689
745
|
The two remedies differ in their tail, because the cost differs. Under
|
|
690
746
|
``no-key`` the local model is missing, so the alternative is installing it
|
|
691
747
|
— which is what re-embeds everything. Under ``provider-changed`` a
|
|
@@ -719,23 +775,39 @@ def fix_hint(reason: str, status: dict | None = None) -> str:
|
|
|
719
775
|
built = status.get("built_provider") or ""
|
|
720
776
|
env = embed.KEY_ENV.get(built)
|
|
721
777
|
# `chunks` guards the unfinished-install case: without vectors on disk
|
|
722
|
-
# there is nothing
|
|
723
|
-
# step. A store built by the local model has no env var and correctly
|
|
724
|
-
# falls through — that user does need the package back.
|
|
778
|
+
# there is nothing to revive, and "build it" is the real next step.
|
|
725
779
|
count = status.get("chunks")
|
|
726
780
|
# `None` is "a store is here and never recorded its total" — a legacy
|
|
727
781
|
# store, not an unfinished one. Only a *known* zero means there are no
|
|
728
782
|
# vectors to revive; reading unknown as zero would send exactly the
|
|
729
783
|
# user this branch exists to protect to the re-embed-everything answer.
|
|
730
|
-
|
|
784
|
+
#
|
|
785
|
+
# `env or built == "local"` is the admission test, and it is spelled
|
|
786
|
+
# out rather than "has a recorded provider" on purpose: `outranking`
|
|
787
|
+
# answers for a name outside `KEY_ENV` with *every* key in force, so a
|
|
788
|
+
# store whose meta records no provider — `""` here, from a legacy
|
|
789
|
+
# cache or a synthesised status — would be handed `unset` over the
|
|
790
|
+
# machine's entire keyring on the strength of a blank field.
|
|
791
|
+
if (env or built == "local") and (count is None or count > 0):
|
|
731
792
|
n = (f"{int(count):,} vector{'' if count == 1 else 's'}"
|
|
732
793
|
if count else "vectors")
|
|
733
794
|
if reason == "no-key":
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
795
|
+
if env:
|
|
796
|
+
return ("set the key it was built with: `export %s=...` — "
|
|
797
|
+
"reinstalling the extra swaps in the local model "
|
|
798
|
+
"and forces all %s to be re-embedded" % (env, n))
|
|
799
|
+
# Local-built, and the model it was built with is what went
|
|
800
|
+
# missing. The table's row would be nearly right and ends in
|
|
801
|
+
# the one suggestion that is wrong for this store: setting a
|
|
802
|
+
# key displaces it into another space, and with the local
|
|
803
|
+
# backend still absent the next status is `provider-changed`
|
|
804
|
+
# with nothing to unset back to — the full re-embed.
|
|
805
|
+
return ("reinstall the extra: `%s` — it is the model all %s "
|
|
806
|
+
"were built with, and a key instead re-embeds them"
|
|
807
|
+
% (install_extra(), n))
|
|
737
808
|
live = status.get("provider")
|
|
738
|
-
restore = _restore_built_space(built, env)
|
|
809
|
+
restore = (_restore_built_space(built, env) if env
|
|
810
|
+
else _restore_local_space())
|
|
739
811
|
if restore:
|
|
740
812
|
# Names the live space rather than "the local model": the
|
|
741
813
|
# provider that displaced this store is whatever `provider()`
|
|
@@ -903,6 +903,7 @@ tests/unit/test_builtin.py
|
|
|
903
903
|
tests/unit/test_canary_deps.py
|
|
904
904
|
tests/unit/test_capabilities.py
|
|
905
905
|
tests/unit/test_catalog.py
|
|
906
|
+
tests/unit/test_catalog_distinct.py
|
|
906
907
|
tests/unit/test_catalog_keyword_words.py
|
|
907
908
|
tests/unit/test_catalogbundle.py
|
|
908
909
|
tests/unit/test_chat.py
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: dense-local-built-store-displaced-by-a-key
|
|
3
3
|
board: code
|
|
4
|
-
section:
|
|
5
|
-
status:
|
|
4
|
+
section: shipped
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Retrieval eval
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
10
|
note: Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.
|
|
11
11
|
order: 353
|
|
12
|
+
owner: loop/dense-local-displaced
|
|
13
|
+
pr: 990
|
|
12
14
|
title: A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free
|
|
13
15
|
---
|
|
14
16
|
<b>The mirror of #989, and the expensive direction.</b> #989 taught <code>fix_hint</code> that a store built with an API key can be displaced two ways, and to name the <code>export</code> or the <code>unset</code> that restores it. A store built by the <b>local</b> model is displaced by exactly the same mechanism — a key the resolver prefers appears on the machine — and gets none of it: the branch is gated on <code>env = embed.KEY_ENV.get(built)</code> being truthy, and <code>local</code> has no env var, so it falls through to the table.
|
|
@@ -34,4 +36,4 @@ title: A locally built vector store displaced by a new API key is told to re-emb
|
|
|
34
36
|
|
|
35
37
|
Two more things fall out of that. The sentence needs a third variant — "puts the store's own key back in front" is false for a store that has no key; it is the local model being put back in front. And the admission test must be <code>built in embed.KEY_ENV or built == "local"</code>, never "has a recorded provider": <code>embed.outranking("")</code> returns <b>every</b> set key, so a store whose meta records no provider would be told to unset the machine's entire keyring on the strength of a blank field.
|
|
36
38
|
|
|
37
|
-
<b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and <code>docs/semantic-search.md</code>
|
|
39
|
+
<b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and #990 removes the qualifier <code>docs/semantic-search.md</code> was carrying in the meantime.
|
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: eval-corpus-counted-by-the-method-the-repo-disavows
|
|
3
3
|
board: code
|
|
4
|
-
section:
|
|
5
|
-
status:
|
|
4
|
+
section: shipped
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Retrieval eval
|
|
7
7
|
complexity: L
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
|
-
note:
|
|
10
|
+
note: taps.txt rows gained a distinct-content count and the gate gained a second ceiling. The raw count stays — BM25 indexes without de-duplicating, so the copies really are documents — but sickn33 is 61.8% of the rows and 35.7% of the content, and only one number was being floored.
|
|
11
11
|
order: 208
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/eval-corpus-distinct-count
|
|
13
|
+
pr: 992
|
|
14
14
|
title: The eval corpus's size and its concentration ceiling are counted with <code>len(scan_dir)</code> — the measure <code>measure_registry.py</code> exists to say is wrong — so 44.7% of the gate's corpus is vendored …
|
|
15
15
|
---
|
|
16
|
-
<b>
|
|
16
|
+
<b>SHIPPED.</b> taps.txt rows gained a fourth field — the distinct-content count — and the concentration gate became two ceilings instead of one.
|
|
17
|
+
|
|
18
|
+
<code>anthropics/skills 3b3fad9… 20 20</code><br>
|
|
19
|
+
<code>sickn33/antigravity-awesome-skills 782f684… 6634 2117</code>
|
|
20
|
+
|
|
21
|
+
<code>MAX_SHARE</code> is now <code>MAX_ROW_SHARE</code> (0.65) and is joined by <code>MAX_CONTENT_SHARE</code> (0.40), and both are checked on every <code>--ensure</code>, <code>--relock</code>, <code>--refresh</code> and <code>--audit</code>. At the current pins: sickn33 is <b>61.8% of the rows and 35.7% of the content</b>, and affaan-m/ECC is <b>15.1% of rows and 26.7% of content</b> — the two orderings differ, which is the whole reason there are two numbers. The corpus is 10,731 rows over 5,938 distinct items, so the rows overstate it <b>1.81x</b>, and taps.txt now says so in its own generated size block.
|
|
22
|
+
|
|
23
|
+
<b>The raw count was kept, deliberately.</b> This card's title reads as "the raw count is wrong", and the fix is not to replace it. <code>rag.build</code> indexes <code>catalog.all_entries()</code> with <b>no</b> de-duplication, so a registry vendoring the same skill sixty-eight times really does occupy sixty-eight of the documents BM25 ranks a query against: the raw count is the honest number for the DRIFT check and for "BM25 scored N documents". What was missing was the second number, not a correction to the first. Hence two fields and two ceilings rather than one replaced.
|
|
24
|
+
|
|
25
|
+
<b>The identity is <code>catalog._content_digest</code>, not <code>measure_registry.py</code>'s.</b> Two new helpers in <code>boost_cli/core/catalog.py</code> — <code>content_unique()</code> and <code>distinct_content()</code> — collapse on <code>entry["content"]</code>, the digest over name + description + body already stamped at scan time and already what <code>rag.dedupe_by_content</code> uses. <code>measure_registry.py</code>'s digest hashes the body <em>alone</em> with agent-dotdir tokens normalised, which is right for <code>est_items</code> (one skill rendered into five agents' directories is one item) and wrong here (two different skills with the same body are two documents in the index). The card's premise that these are the same rule is what <code>measure_registry.py</code>'s docstring claims and is not true; the gate now uses the one that matches what it scores.
|
|
26
|
+
|
|
27
|
+
<b>An unsatisfiable ceiling is not a strict one.</b> A ceiling of <em>c</em> cannot be met by fewer than <code>1/c</code> repositories, because the smallest possible top share is <code>1/N</code> — two repos cannot get below 50%, so a 40% content ceiling would refuse every two-repo corpus however it was balanced, and the only remedy it could print ("add breadth") is the only thing that could ever clear it. <code>check_concentration</code> therefore does not judge a corpus below that floor. The shipped list has twenty repos against a floor of three, so the real gate is untouched; what it buys is that a fixture corpus can exercise the same code path.
|
|
28
|
+
|
|
29
|
+
<b>Not regenerated: <code>tests/eval/baseline.json</code>.</b> No pin moved and the indexed corpus is byte-identical, so the scores are unchanged — regenerating it would have been noise in the diff and a claim that something had been re-measured.
|
|
30
|
+
|
|
31
|
+
<b>Measured.</b> Two tools in this repo, run on the same clone at the same pinned SHA, give item counts 3.16x apart — <code>scripts/measure_registry.py</code> says <code>est_items=2100</code> while <code>scripts/eval_corpus.py --ensure</code> records <code>6634 entries</code> — and the tool that is right is the one the eval gate does not use: measure_registry.py's own docstring (lines 6-11) states that <code>len(catalog.scan_dir(repo))</code> is not the measurement, "the same rule the eval gate's ranked list uses". <code>eval_corpus.py</code> was still <code>counts[repo] = len(entries)</code>, and <code>MAX_SHARE = 0.65</code> ratcheted on that number inside CI's required <code>lint</code> job — so 975 extra vendored copies from one stranger's repository, containing zero new content, turn every open pull request red.
|
|
17
32
|
|
|
18
33
|
<b>Reproduce it.</b>
|
|
19
34
|
|
|
@@ -33,7 +48,7 @@ title: The eval corpus's size and its concentration ceiling are counted with <co
|
|
|
33
48
|
|
|
34
49
|
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
35
50
|
|
|
36
|
-
1. MATERIALLY WRONG — "The vendoring is 60 <code>plugins/agentic-bundle-*/</code> directories". There are 58 <code>agentic-bundle-*</code> dirs (60 <code>plugins/*</code> dirs total), and they hold only 449 of the 6,634 entries (6.8%; median 8 entries each). The 3.13x inflation is two FULL CATALOG MIRRORS: <code>plugins/agentic-awesome-skills-claude</code> (2,049 entries) and <code>plugins/agentic-awesome-skills</code> (2,027) = 4,076 entries, digest-identical to <code>skills/</code> (2,107 entries, all distinct). This reframes the ceiling scenario: "one more bundle render... adds ~2,117 entries" is impossible — a bundle is ~8-10 entries. The correct unit is "one more per-agent mirror", ~2,049 entries -> 67.9%, still over 65%. Sharper still: only
|
|
51
|
+
1. MATERIALLY WRONG — "The vendoring is 60 <code>plugins/agentic-bundle-*/</code> directories". There are 58 <code>agentic-bundle-*</code> dirs (60 <code>plugins/*</code> dirs total), and they hold only 449 of the 6,634 entries (6.8%; median 8 entries each). The 3.13x inflation is two FULL CATALOG MIRRORS: <code>plugins/agentic-awesome-skills-claude</code> (2,049 entries) and <code>plugins/agentic-awesome-skills</code> (2,027) = 4,076 entries, digest-identical to <code>skills/</code> (2,107 entries, all distinct). This reframes the ceiling scenario: "one more bundle render... adds ~2,117 entries" is impossible — a bundle is ~8-10 entries. The correct unit is "one more per-agent mirror", ~2,049 entries -> 67.9%, still over 65%. Sharper still: only 975 extra vendored sickn33 entries are needed to cross the ceiling (< half a mirror) — 6634+975 of 10731+975 is 65.001%, and 974 is 64.998%. The conclusion survives; the unit does not — and the correct unit is exactly the pattern the <code>est-items</code> card already documents.
|
|
37
52
|
|
|
38
53
|
2. "Read all 318 titles from <code>grep -h '^title:' docs/roadmap/items/*.md</code>" — there are 432 items / 432 title lines today (verified identical to origin/main except one unrelated file). The not-carded sweep was run over a smaller set than exists.
|
|
39
54
|
|
|
@@ -140,9 +140,9 @@
|
|
|
140
140
|
<section class="block reveal">
|
|
141
141
|
<div class="stats">
|
|
142
142
|
<!-- ROADMAP:stats -->
|
|
143
|
-
<div class="stat"><b>
|
|
143
|
+
<div class="stat"><b>24</b><span>Shipped</span></div>
|
|
144
144
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
145
|
-
<div class="stat"><b>
|
|
145
|
+
<div class="stat"><b>77</b><span>Planned</span></div>
|
|
146
146
|
<div class="stat"><b>505</b><span>Loop finds</span></div>
|
|
147
147
|
<!-- /ROADMAP:stats -->
|
|
148
148
|
</div>
|
|
@@ -408,6 +408,18 @@
|
|
|
408
408
|
</div>
|
|
409
409
|
</article>
|
|
410
410
|
|
|
411
|
+
<article class="cap rcard" id="eval-corpus-counted-by-the-method-the-repo-disavows">
|
|
412
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
413
|
+
<h3>The eval corpus's size and its concentration ceiling are counted with <code>len(scan_dir)</code> — the measure <code>measure_registry.py</code> exists to say is wrong — so 44.7% of the gate's corpus is vendored …</h3>
|
|
414
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md">Write-up · eval-corpus-counted-by-the-method-the-repo-disavows.md</a></p>
|
|
415
|
+
<div class="meta">
|
|
416
|
+
<span class="m">Complexity <b>L</b></span>
|
|
417
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
418
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
419
|
+
<span class="m">taps.txt rows gained a distinct-content count and the gate gained a second ceiling. The raw count stays — BM25 indexes without de-duplicating, so the copies really are documents — but sickn33 is 61.8% of the rows and 35.7% of the content, and only one number was being floored.</span>
|
|
420
|
+
</div>
|
|
421
|
+
</article>
|
|
422
|
+
|
|
411
423
|
<article class="cap rcard" id="install-cannot-tell-a-skill-needs-another-one">
|
|
412
424
|
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Install · Research</span></div>
|
|
413
425
|
<h3>Research: how <code>boost install</code> could tell that a skill needs something else installed first</h3>
|
|
@@ -419,6 +431,18 @@
|
|
|
419
431
|
<span class="m">The premise was wrong — boost has always followed <code>requires:</code>. It is the narrowest spelling in the ecosystem (101 values); <code>skills:</code> and <code>dependencies:</code> carry 2,388 more and were invisible.</span>
|
|
420
432
|
</div>
|
|
421
433
|
</article>
|
|
434
|
+
|
|
435
|
+
<article class="cap rcard" id="dense-local-built-store-displaced-by-a-key">
|
|
436
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
437
|
+
<h3>A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free</h3>
|
|
438
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md">Write-up · dense-local-built-store-displaced-by-a-key.md</a></p>
|
|
439
|
+
<div class="meta">
|
|
440
|
+
<span class="m">Complexity <b>S</b></span>
|
|
441
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
442
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
443
|
+
<span class="m">Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.</span>
|
|
444
|
+
</div>
|
|
445
|
+
</article>
|
|
422
446
|
<!-- /ROADMAP:cards -->
|
|
423
447
|
|
|
424
448
|
</div>
|
|
@@ -1136,52 +1160,6 @@ space before trusting a number in it.</p>
|
|
|
1136
1160
|
</div>
|
|
1137
1161
|
</article>
|
|
1138
1162
|
|
|
1139
|
-
<article class="cap rcard" id="eval-corpus-counted-by-the-method-the-repo-disavows">
|
|
1140
|
-
<div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
1141
|
-
<h3>The eval corpus's size and its concentration ceiling are counted with <code>len(scan_dir)</code> — the measure <code>measure_registry.py</code> exists to say is wrong — so 44.7% of the gate's corpus is vendored …</h3>
|
|
1142
|
-
<p><b>Measured.</b> Two tools in this repo, run on the same clone at the same pinned SHA, give item counts 3.16x apart — <code>scripts/measure_registry.py</code> says <code>est_items=2100</code> while <code>scripts/eval_corpus.py --ensure</code> records <code>6634 entries</code> — and the tool that is right is the one the eval gate does not use: measure_registry.py's own docstring (lines 6-11) states that <code>len(catalog.scan_dir(repo))</code> is not the measurement, "the same rule the eval gate's ranked list uses". <code>eval_corpus.py:299</code> is still <code>counts[repo] = len(entries)</code>, and <code>MAX_SHARE = 0.65</code> (line 113) ratchets on that number inside CI's required <code>lint</code> job — so 976 extra vendored copies from one stranger's repository, containing zero new content, turn every open pull request red.
|
|
1143
|
-
|
|
1144
|
-
<b>Reproduce it.</b>
|
|
1145
|
-
|
|
1146
|
-
<code>cd <repo></code><br>
|
|
1147
|
-
<code>export HOME=$TMPDIR/audit-corpus-verify && mkdir -p "$HOME" && export BOOST_HOME=$HOME/.boost</code><br>
|
|
1148
|
-
<code>.venv/bin/python scripts/eval_corpus.py --ensure # -> "corpus: 10731 entries"; "concentration: ... 61.8%"</code><br>
|
|
1149
|
-
<code>.venv/bin/python scripts/measure_registry.py "$BOOST_HOME/repos/sickn33__antigravity-awesome-skills" # -> est_items=2100</code><br>
|
|
1150
|
-
<code>.venv/bin/python - <<'PY'</code><br>
|
|
1151
|
-
<code>import json, pathlib, collections, os</code><br>
|
|
1152
|
-
<code>home=pathlib.Path(os.environ["BOOST_HOME"]); ents=[]</code><br>
|
|
1153
|
-
<code>for f in sorted((home/"cache").glob("*.json")):</code><br>
|
|
1154
|
-
<code> if f.stem.startswith("rag_"): continue</code><br>
|
|
1155
|
-
<code> d=json.loads(f.read_text())</code><br>
|
|
1156
|
-
<code> for e in d["skills"]: e["_tap"]=d["tap"]; ents.append(e)</code><br>
|
|
1157
|
-
<code>alld={e["content"] for e in ents}</code><br>
|
|
1158
|
-
…
|
|
1159
|
-
|
|
1160
|
-
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
1161
|
-
|
|
1162
|
-
1. MATERIALLY WRONG — "The vendoring is 60 <code>plugins/agentic-bundle-*/</code> directories". There are 58 <code>agentic-bundle-*</code> dirs (60 <code>plugins/*</code> dirs total), and they hold only 449 of the 6,634 entries (6.8%; median 8 entries each). The 3.13x inflation is two FULL CATALOG MIRRORS: <code>plugins/agentic-awesome-skills-claude</code> (2,049 entries) and <code>plugins/agentic-awesome-skills</code> (2,027) = 4,076 entries, digest-identical to <code>skills/</code> (2,107 entries, all distinct). This reframes the ceiling scenario: "one more bundle render... adds ~2,117 entries" is impossible — a bundle is ~8-10 entries. The correct unit is "one more per-agent mirror", ~2,049 entries -> 67.9%, still over 65%. Sharper still: only 976 extra vendored sickn33 entries are needed to cross the ceiling (< half a mirror). The conclusion survives; the unit does not — and the correct unit is exactly the pattern the <code>est-items</code> card already documents.
|
|
1163
|
-
|
|
1164
|
-
2. "Read all 318 titles from <code>grep -h '^title:' docs/roadmap/items/*.md</code>" — there are 432 items / 432 title lines today (verified identical to origin/main except one unrelated file). The not-carded sweep was run over a smaller set than exists.
|
|
1165
|
-
|
|
1166
|
-
3. "Every one of them... none measures distinct content" is wrong.
|
|
1167
|
-
|
|
1168
|
-
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
1169
|
-
|
|
1170
|
-
SCOPE OF MY REPRO — what I actually settled, and what I did not. - I materialised the corpus at the CURRENT taps.txt pins in my own disposable HOME and reproduced every headline number independently. The pre-refresh figures (10,152 / 5,790 / 62.1% / 34.5% / 3.16x) I took from the SHARED read-only eval-home at $TMPDIR/eval-home, which is still at the older pins — a read-only census, no writes. - The repo checkout was on a peer session's branch <code>loop/missing-json</code>, not <code>main</code>. I diffed every file this finding touches (scripts/eval_corpus.py, tests/eval/taps.txt, boost_cli/core/rag.py, .github/workflows/eval-corpus-refresh.yml, all of docs/roadmap/items/) against origin/main: identical except one unrelated roadmap item. The verification holds against main (origin/main af4bdbfd). - I could NOT isolate the causal mechanism of the 22 rank changes. The finding asserts "BM25 statistics (N and document frequency), not slot consumption". My data is CONSISTENT with that — <code>dedupe_by_content</code> does run over the full pool before k (rag.py:1053, confirmed), and recall@k is bit-identical while the rank-sensitive metrics move — but I did not separate idf from avgdl, nor rule out that a different byte-identical copy survives dedupe and carries a different <code>grade_key</code>. Write it as "consistent with", not "confirmed".
|
|
1171
|
-
|
|
1172
|
-
WHY HIGH RATHER THAN MEDIUM. The metric movement alone cannot fail anything: hit@1 +0.011, MRR +0.010, nDCG +0.008 against 0.06-0.10 of headroom over the floors. The severity is the ratchet's teeth, which the finder never traced.
|
|
1173
|
-
|
|
1174
|
-
<b>Why it is worth doing.</b> <code>MAX_SHARE</code> is the only shipped guard against the gate's corpus becoming one publisher's house style, and it is measured on a quantity a third party can inflate by ~3x without publishing a single new skill — so it can fire on a repo contributing a third of the content, and cannot fire on a repo that dominates the content without vendoring. The same raw count is the headline everywhere (<code>10,152 entries</code> / <code>62%</code>) and is what the monthly refresh PR reports as growth, overstating real content growth 4x.
|
|
1175
|
-
|
|
1176
|
-
<em>Found by an automated audit of retrieval/eval quality, the search & browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
|
|
1177
|
-
<div class="meta">
|
|
1178
|
-
<span class="m">Complexity <b>L</b></span>
|
|
1179
|
-
<span class="m hi">Impact <b>High</b></span>
|
|
1180
|
-
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
1181
|
-
<span class="m">scripts/eval_corpus.py counts a repo's contribution as len(entries) from a raw scan (…</span>
|
|
1182
|
-
</div>
|
|
1183
|
-
</article>
|
|
1184
|
-
|
|
1185
1163
|
<article class="cap rcard" id="eval-corpus-duplication-is-intra-tap-not-mirrors">
|
|
1186
1164
|
<div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
1187
1165
|
<h3>The corpus's 65.6% duplication is 99.93% inside a single tap, so the required gate never once exercises the cross-tap trust ordering dedup exists for — 0 swaps in 264,735 comparisons</h3>
|
|
@@ -2171,41 +2149,6 @@ instead of on a user's machine.</p>
|
|
|
2171
2149
|
<span class="m">Two functions built the same `mcp add` command line, one had never heard of agy, and both got Gemini wrong…</span>
|
|
2172
2150
|
</div>
|
|
2173
2151
|
</article>
|
|
2174
|
-
|
|
2175
|
-
<article class="cap rcard" id="dense-local-built-store-displaced-by-a-key">
|
|
2176
|
-
<div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
2177
|
-
<h3>A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free</h3>
|
|
2178
|
-
<p><b>The mirror of #989, and the expensive direction.</b> #989 taught <code>fix_hint</code> that a store built with an API key can be displaced two ways, and to name the <code>export</code> or the <code>unset</code> that restores it. A store built by the <b>local</b> model is displaced by exactly the same mechanism — a key the resolver prefers appears on the machine — and gets none of it: the branch is gated on <code>env = embed.KEY_ENV.get(built)</code> being truthy, and <code>local</code> has no env var, so it falls through to the table.
|
|
2179
|
-
|
|
2180
|
-
<b>Measured.</b> Two stores of 645,592 chunks, same machine, only <code>VOYAGE_API_KEY</code> set. Verbatim, through the real <code>dense.status()</code> ladder:
|
|
2181
|
-
|
|
2182
|
-
<code>##### store built with 'local', live key = VOYAGE</code><br>
|
|
2183
|
-
<code> status reason : provider-changed</code><br>
|
|
2184
|
-
<code> outranking('local') : ('VOYAGE_API_KEY',)</code><br>
|
|
2185
|
-
<code> DOCTOR | ! semantic search silently off — 645592-chunk vector store built with</code><br>
|
|
2186
|
-
<code> DOCTOR | rebuild it: `boost reindex --dense --force`</code><br>
|
|
2187
|
-
<br>
|
|
2188
|
-
<code>##### store built with 'openai', live key = VOYAGE</code><br>
|
|
2189
|
-
<code> status reason : provider-changed</code><br>
|
|
2190
|
-
<code> DOCTOR | set the key it was built with: `export OPENAI_API_KEY=...`, then</code><br>
|
|
2191
|
-
<code> DOCTOR | `unset VOYAGE_API_KEY` puts it back in front — or …</code>
|
|
2192
|
-
|
|
2193
|
-
<code>embed.outranking('local')</code> already computes the answer — <code>unset VOYAGE_API_KEY</code> — and restores that store instantly and for nothing. The line boost actually prints re-embeds 645,592 chunks through a metered API.
|
|
2194
|
-
|
|
2195
|
-
<b>Why it is not a corner case.</b> <code>boost quickstart</code> imports the published vector shards, and those are keyless: <code>BAAI/bge-small-en-v1.5</code> at 384 dimensions, built by the local model. So the default on-ramp leaves every user with a local-built store, and the first time one of them exports a Voyage or OpenAI key for anything at all, semantic search goes quiet and doctor bills them to get it back.
|
|
2196
|
-
|
|
2197
|
-
<b>The constraint any fix has to clear</b>, and the reason this is a separate card rather than a line in #989: <code>unset</code> is only the right advice for a local-built store <b>if the local model is installed</b>. On a partial <code>[rag]</code> install, unsetting the one key in force sends <code>provider()</code> to <code>None</code> and the ladder to <code>no-key</code> — the advice would switch off the only thing making search work. So the predicate needs to ask whether the local model is there — and the one to ask is <code>embed.local_installed()</code>, not <code>embed.local_available()</code>: <code>local_available</code> answers by importing the ONNX runtime, which is right for a caller about to embed and wrong for one about to word a sentence. <code>dense.free_shard_path</code>, the sibling that words the other keyed-machine hint, already uses <code>local_installed</code> for exactly that reason. Either way it is a check the key-built branches do not need.
|
|
2198
|
-
|
|
2199
|
-
Two more things fall out of that. The sentence needs a third variant — "puts the store's own key back in front" is false for a store that has no key; it is the local model being put back in front. And the admission test must be <code>built in embed.KEY_ENV or built == "local"</code>, never "has a recorded provider": <code>embed.outranking("")</code> returns <b>every</b> set key, so a store whose meta records no provider would be told to unset the machine's entire keyring on the strength of a blank field.
|
|
2200
|
-
|
|
2201
|
-
<b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and <code>docs/semantic-search.md</code> carries a qualifier pointing at this card until it lands.</p>
|
|
2202
|
-
<div class="meta">
|
|
2203
|
-
<span class="m">Complexity <b>S</b></span>
|
|
2204
|
-
<span class="m hi">Impact <b>High</b></span>
|
|
2205
|
-
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
2206
|
-
<span class="m">Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.</span>
|
|
2207
|
-
</div>
|
|
2208
|
-
</article>
|
|
2209
2152
|
<!-- /ROADMAP:cards -->
|
|
2210
2153
|
|
|
2211
2154
|
</div>
|
|
@@ -146,6 +146,12 @@ A key buys a larger embedding model. Nothing else changes.
|
|
|
146
146
|
Set one and boost prefers it automatically, re-embedding on your next
|
|
147
147
|
`boost reindex --dense`. Voyage wins if both are set.
|
|
148
148
|
|
|
149
|
+
If you came in through `boost quickstart`, your vectors are the keyless local
|
|
150
|
+
ones, and exporting a key is what takes them out of service — boost prefers
|
|
151
|
+
the key, and nothing it has on disk is in that key's space. `boost doctor`
|
|
152
|
+
names the `unset` that puts them back, so this is recoverable for free rather
|
|
153
|
+
than at the price of a re-embed.
|
|
154
|
+
|
|
149
155
|
Be deliberate about this, because switching providers is not free. Vectors are
|
|
150
156
|
only meaningful inside the embedding space that produced them, so changing
|
|
151
157
|
provider or model invalidates every vector you have and forces a full re-embed.
|
|
@@ -187,6 +193,7 @@ deliberately no vectors, for the same reason.
|
|
|
187
193
|
| store is empty | `boost reindex --dense --force` |
|
|
188
194
|
| version, model or dimension changed | `boost reindex --dense --force` |
|
|
189
195
|
| provider changed, and a store built with a key | put that key back in force. The rebuild is offered as the alternative, and it re-embeds everything |
|
|
196
|
+
| provider changed, and a store built by the local model | `unset` the keys in front of it. Free, and instant |
|
|
190
197
|
| no key, and a store built with one | set the key it was built with. Reinstalling the extra swaps in the local model and forces a full re-embed |
|
|
191
198
|
|
|
192
199
|
Those last two rows are the ones worth reading twice, and the first of them is
|
|
@@ -208,10 +215,17 @@ its own provider, and doctor names whichever applies:
|
|
|
208
215
|
Both can be true at once, and then doctor names both steps. Running only the
|
|
209
216
|
export would leave the resolver exactly where it was.
|
|
210
217
|
|
|
211
|
-
A store built by the **local** model is displaced the same way
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
218
|
+
A store built by the **local** model is displaced the same way, and it is the
|
|
219
|
+
case most people can reach: `boost quickstart` imports keyless vectors, so
|
|
220
|
+
exporting a key for anything at all takes semantic search off. Doctor answers
|
|
221
|
+
that one with the `unset` too — every key in front of local, since dropping
|
|
222
|
+
`VOYAGE_API_KEY` alone falls through to `OPENAI_API_KEY`, which is no nearer
|
|
223
|
+
the local space. There is no `export` half, because a local store has no key
|
|
224
|
+
of its own.
|
|
225
|
+
|
|
226
|
+
The one time doctor withholds that advice is when the local model is not
|
|
227
|
+
installed. Dropping your only key there would leave no provider at all, so
|
|
228
|
+
the rebuild really is the way out, and that is what it says.
|
|
215
229
|
|
|
216
230
|
If you would rather move to the live provider than restore the old one,
|
|
217
231
|
`boost reindex --dense --force` is the command, and doctor names the space it
|