boost-skill-cli 1.2.128__tar.gz → 1.2.130__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.128 → boost_skill_cli-1.2.130}/CONTRIBUTING.md +2 -2
- {boost_skill_cli-1.2.128/boost_skill_cli.egg-info → boost_skill_cli-1.2.130}/PKG-INFO +2 -2
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/README.md +1 -1
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/discovery.py +9 -5
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130/boost_skill_cli.egg-info}/PKG-INFO +2 -2
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/design-roadmap.html +2 -2
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/openssf-badge.md +2 -2
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-root-findings.md +13 -3
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +3 -3
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +3 -3
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +3 -3
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap.html +9 -126
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_discovery.py +13 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_launcher_python_floor.py +32 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_marketing_counts.py +43 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitattributes +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitignore +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale.ini +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/DCO +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/LICENSE +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/Makefile +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/codecov.yml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/index.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/README.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/README.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/index.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/noxfile.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/setup.cfg +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/README.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/boost.css +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/boost.js +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/demo.html +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_lost_lock.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/visual_check.mjs +0 -0
|
@@ -120,8 +120,8 @@ list, and neither should be added to it.
|
|
|
120
120
|
|---|---|
|
|
121
121
|
| `make test` | unit + functional suites, **≥90% coverage** (statements + branches) |
|
|
122
122
|
| `make patch-coverage` | changed-line coverage vs `main`, **≥80% of the diff** (PRs) |
|
|
123
|
-
| `bash tests/smoke.sh` |
|
|
124
|
-
| `make bdd` | the Gherkin suite — 11 features,
|
|
123
|
+
| `bash tests/smoke.sh` | 183 end-to-end checks through the real `./boost` shim |
|
|
124
|
+
| `make bdd` | the Gherkin suite — 11 features, 56 scenarios (needs the `[bdd]` extra) |
|
|
125
125
|
| `make mutation` | mutmut over `boost_cli/core`, **≥80% mutants killed** |
|
|
126
126
|
| `ruff check boost_cli tests` | lint, zero findings |
|
|
127
127
|
| `mypy` | type check, zero errors |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.130
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -564,7 +564,7 @@ Four test layers are enforced, and `make check` runs all of them:
|
|
|
564
564
|
| Layer | Gate |
|
|
565
565
|
|---|---|
|
|
566
566
|
| `make test` | ≥90% coverage of `boost_cli`, statements and branches |
|
|
567
|
-
| `make smoke` |
|
|
567
|
+
| `make smoke` | 183 checks through the actual `./boost` shim |
|
|
568
568
|
| `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
|
|
569
569
|
| `make evals` | metric floors on the search ranker, plus no significant regression |
|
|
570
570
|
|
|
@@ -522,7 +522,7 @@ Four test layers are enforced, and `make check` runs all of them:
|
|
|
522
522
|
| Layer | Gate |
|
|
523
523
|
|---|---|
|
|
524
524
|
| `make test` | ≥90% coverage of `boost_cli`, statements and branches |
|
|
525
|
-
| `make smoke` |
|
|
525
|
+
| `make smoke` | 183 checks through the actual `./boost` shim |
|
|
526
526
|
| `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
|
|
527
527
|
| `make evals` | metric floors on the search ranker, plus no significant regression |
|
|
528
528
|
|
|
@@ -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.130'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 130)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1151,13 +1151,17 @@ def cmd_recommend(argv):
|
|
|
1151
1151
|
if used_curated_fallback:
|
|
1152
1152
|
out.info("no stack-specific matches — curated picks instead:")
|
|
1153
1153
|
width = min(max(len(r["entry"]["name"]) for r in shown), 32)
|
|
1154
|
-
|
|
1155
|
-
for
|
|
1154
|
+
reasons = ["because: %s" % ", ".join(sorted(r["because"])) for r in shown]
|
|
1155
|
+
# One description width for every row, from the widest reason. Sized per
|
|
1156
|
+
# row from that row's own `because:` tag, the clip point swung 20 columns
|
|
1157
|
+
# between rows (34-54 at COLUMNS=100) and neither column lined up.
|
|
1158
|
+
desc_w = max(out.term_width() - 2 - width - 2
|
|
1159
|
+
- (max(map(len, reasons)) + 2), 8)
|
|
1160
|
+
for r, because in zip(shown, reasons, strict=True):
|
|
1156
1161
|
e = r["entry"]
|
|
1157
|
-
because = "because: %s" % ", ".join(sorted(r["because"]))
|
|
1158
|
-
desc_w = max(cols - 2 - width - 2 - (len(because) + 2), 8)
|
|
1159
1162
|
name_cell = out.role(out.truncate(e["name"], width).ljust(width), "accent")
|
|
1160
|
-
|
|
1163
|
+
desc = out.truncate(e["description"] or "", desc_w)
|
|
1164
|
+
out.info(name_cell + " " + desc + " " * (desc_w - out.visible_len(desc))
|
|
1161
1165
|
+ " " + out.role(because, "muted"))
|
|
1162
1166
|
if ai.available():
|
|
1163
1167
|
picks = _ai_picks(stack, [r["entry"] for r in ranked[:20]])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.130
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -564,7 +564,7 @@ Four test layers are enforced, and `make check` runs all of them:
|
|
|
564
564
|
| Layer | Gate |
|
|
565
565
|
|---|---|
|
|
566
566
|
| `make test` | ≥90% coverage of `boost_cli`, statements and branches |
|
|
567
|
-
| `make smoke` |
|
|
567
|
+
| `make smoke` | 183 checks through the actual `./boost` shim |
|
|
568
568
|
| `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
|
|
569
569
|
| `make evals` | metric floors on the search ranker, plus no significant regression |
|
|
570
570
|
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
</div>
|
|
204
204
|
<div>
|
|
205
205
|
<dt>Constraints</dt>
|
|
206
|
-
<dd>Every proposal stays <code>zero-dependency</code>, degrades on <code>NO_COLOR</code> / non-TTY, and targets <code>Python ≥ 3.
|
|
206
|
+
<dd>Every proposal stays <code>zero-dependency</code>, degrades on <code>NO_COLOR</code> / non-TTY, and targets <code>Python ≥ 3.12</code>.</dd>
|
|
207
207
|
</div>
|
|
208
208
|
</dl>
|
|
209
209
|
</div>
|
|
@@ -579,7 +579,7 @@ hidden hot-path cost hiding behind the one this card measured.</p>
|
|
|
579
579
|
<footer>
|
|
580
580
|
<div class="wrap">
|
|
581
581
|
<p class="foot-brand"><b>boost</b> — a package manager for AI skills</p>
|
|
582
|
-
<p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.
|
|
582
|
+
<p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.12+ and <code>git</code></p>
|
|
583
583
|
<nav class="foot-links" aria-label="Documentation">
|
|
584
584
|
<a href="index.html">Guide</a>
|
|
585
585
|
<a href="commands.html">Commands</a>
|
|
@@ -120,7 +120,7 @@ Package: [`boost-skill-cli`](https://pypi.org/project/boost-skill-cli/)
|
|
|
120
120
|
|
|
121
121
|
| Criterion | Cat. | Answer | Evidence |
|
|
122
122
|
|---|---|---|---|
|
|
123
|
-
| `test` | MUST | **Met** | Four tiers: `tests/unit`, `tests/functional` (drive the real CLI in-process), `tests/smoke.sh` (
|
|
123
|
+
| `test` | MUST | **Met** | Four tiers: `tests/unit`, `tests/functional` (drive the real CLI in-process), `tests/smoke.sh` (183 end-to-end checks through the `./boost` shim) and a Gherkin BDD suite (11 features, 56 scenarios). |
|
|
124
124
|
| `test_invocation` | SHOULD | **Met** | `make test` — or `nox`, which reproduces the exact CI gate in isolated venvs across every supported interpreter. |
|
|
125
125
|
| `test_most` | SUGGESTED | **Met** | A **90% coverage** gate over statements and branches (`fail_under = 90`), an **80% changed-line** gate on pull requests, and an **80% mutation** gate over `boost_cli/core` — the last of which means coverage cannot be satisfied by tests that merely execute the code without asserting on it. |
|
|
126
126
|
| `test_continuous_integration` | SUGGESTED | **Met** | GitHub Actions runs the full gate on every push and every pull request. |
|
|
@@ -204,7 +204,7 @@ of the security-design document for the full account.
|
|
|
204
204
|
|
|
205
205
|
| Criterion | Cat. | Answer | Evidence |
|
|
206
206
|
|---|---|---|---|
|
|
207
|
-
| `dynamic_analysis` | SUGGESTED | **Met** | [`fuzz.yml`](https://github.com/jonnyeclectic/boost/blob/main/.github/workflows/fuzz.yml) runs `atheris` (libFuzzer for Python) against the parsers over a target matrix, uploading any crashing input as an artifact. Beyond fuzzing, `tests/smoke.sh` drives the real binary end to end through
|
|
207
|
+
| `dynamic_analysis` | SUGGESTED | **Met** | [`fuzz.yml`](https://github.com/jonnyeclectic/boost/blob/main/.github/workflows/fuzz.yml) runs `atheris` (libFuzzer for Python) against the parsers over a target matrix, uploading any crashing input as an artifact. Beyond fuzzing, `tests/smoke.sh` drives the real binary end to end through 183 checks, and the functional suite executes the CLI against a throwaway `$HOME`. |
|
|
208
208
|
| `dynamic_analysis_unsafe` | SUGGESTED | **N/A** | Python is memory-safe; there is no buffer overflow or use-after-free class for a tool like ASan or Valgrind to find. The runtime has no C extension (the optional `[rag]` extra is not on the install path). |
|
|
209
209
|
| `dynamic_analysis_enable_assertions` | SUGGESTED | **Met** | The test suites are assertion-driven and run with assertions enabled (no `-O`), and `pytest` promotes `DeprecationWarning` raised inside `boost_cli` to a hard error, so a latent deprecation fails a run rather than scrolling past. |
|
|
210
210
|
| `dynamic_analysis_fixed` | MUST | **Met** | No medium-or-higher exploitable vulnerability has been found by dynamic analysis. A crashing input found by the fuzzer is uploaded as a workflow artifact and fixed; none is outstanding. |
|
{boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-root-findings.md
RENAMED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: audit-root-findings
|
|
3
3
|
board: code
|
|
4
4
|
section: dx
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: CLI · Bug
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 1
|
|
10
10
|
note: EPIPE exits 120 with stderr noise; `help version` suggests verify; launcher gates at 3.9
|
|
11
11
|
order: 245
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/audit-root-closed
|
|
13
|
+
pr: 827
|
|
14
14
|
title: "boost ROOT: CLI audit findings (2026-08)"
|
|
15
15
|
---
|
|
16
16
|
<b>EPIPE leaks past main's own handler.</b> <code>boost --help | (exec 0<&-; sleep 0.3)</code>
|
|
@@ -45,3 +45,13 @@ fixes touches a COMMANDS row, so <code>docs/commands.html</code> is unaffected.
|
|
|
45
45
|
|
|
46
46
|
<br><br>Found by the 2026-08 CLI audit (clusters <code>broken-pipe-exit</code>,
|
|
47
47
|
<code>help-routing-aliases</code>, <code>launcher-python-floor</code>); repro in the audit log.
|
|
48
|
+
|
|
49
|
+
<br><br><b>Shipped in #827</b> (commit <code>22c9193</code>, batch train-17, 2026-09-08). The card
|
|
50
|
+
was never closed. Re-measured on <code>main</code> at <code>bb1229f</code> on 2026-09-18:
|
|
51
|
+
<code>--help</code>, <code>count</code>, <code>taps</code> and <code>--version</code> piped into
|
|
52
|
+
<code>(exec 0<&-; sleep 0.3)</code> exit 0 with empty stderr, 3/3 runs each (<code>_seal_broken_stdout</code>
|
|
53
|
+
plus <code>_route</code>'s <code>finally</code> flush).
|
|
54
|
+
<code>boost help --help</code>, <code>help version</code> and <code>help help</code> all resolve;
|
|
55
|
+
<code>boost --hepl</code> says <em>“unknown option”</em>, and <code>print_help</code> carries the Options line.
|
|
56
|
+
The launcher gates at <code>(3, 12)</code>, pinned to <code>requires-python</code> by
|
|
57
|
+
<code>tests/unit/test_launcher_python_floor.py</code>.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: recommend-recomputes-its-columns-per-row
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: UX · Bug
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 2
|
|
10
10
|
note: cmd_recommend hand-rolls its rows and computes desc_w = max(cols - 2 - width - 2 - (l…
|
|
11
11
|
order: 226
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/recommend-columns
|
|
13
|
+
pr: 881
|
|
14
14
|
title: <code>boost recommend</code> sizes the description cell per row from that row's <code>because:</code> text, so neither column lines up
|
|
15
15
|
---
|
|
16
16
|
<b>Measured.</b> At COLUMNS=100 the eight <code>boost recommend</code> rows truncate their descriptions at eight per-row widths spanning 34 to 54 columns — a 20-column swing, the widest cell 59% wider than the narrowest — because <code>desc_w</code> is recomputed inside the row loop from that row's own <code>because:</code> tag length (<code>boost_cli/commands/discovery.py:1062</code>); every rendered cell matched the predicted <code>desc_w</code> to the character and every description ended in an ellipsis, so this is column geometry, not natural description length.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: roadmap-boards-advertise-python-39
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Docs
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 2
|
|
10
10
|
note: docs/roadmap.html:17141 and docs/design-roadmap.html:582 both close with Install with…
|
|
11
11
|
order: 228
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/boards-python-floor
|
|
13
|
+
pr: 878
|
|
14
14
|
title: The two roadmap boards' install footers still advertise Python 3.9+, four minor versions under the real floor
|
|
15
15
|
---
|
|
16
16
|
<b>Measured.</b> On stock macOS <code>python3</code> (3.9.6), the exact command in both roadmap footers succeeds silently and installs the wrong software: <code>pip download --no-deps boost-skill-cli</code> exits 0 with no Requires-Python notice and selects boost_skill_cli-1.0.392, because 390 of 557 published releases still declare <code>requires_python: >=3.9</code> — 167 releases behind the current 1.2.103.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: stale-gate-sizes-in-readme-and-contributing
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Docs
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 2
|
|
10
10
|
note: README.md:515 says make smoke is "176 checks" and CONTRIBUTING.md:123 says bash tests…
|
|
11
11
|
order: 235
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/gate-sizes
|
|
13
|
+
pr: 879
|
|
14
14
|
title: The contributor-onboarding gate tables state three wrong suite sizes, and README and CONTRIBUTING disagree with each other
|
|
15
15
|
---
|
|
16
16
|
<b>Measured.</b> One command (<code>make smoke</code> is literally <code>bash tests/smoke.sh</code>, Makefile:48-49) is documented as three different sizes in three files — 176 in README.md:515, 170 in CONTRIBUTING.md:123 and 170 again in docs/openssf-badge.md:123 — while it actually runs 183 checks, a figure that is deterministic and statically derivable as 102 top-level <code>run</code> lines plus 81 <code>--help</code> entries in the CMDS heredoc.
|
|
@@ -2103,41 +2103,9 @@ Nothing else needed correcting: 7 starter registries, 962 items, 11 matches, the
|
|
|
2103
2103
|
</article>
|
|
2104
2104
|
|
|
2105
2105
|
<article class="cap rcard" id="recommend-recomputes-its-columns-per-row">
|
|
2106
|
-
<div class="head"><span class="pill
|
|
2106
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">UX · Bug</span></div>
|
|
2107
2107
|
<h3><code>boost recommend</code> sizes the description cell per row from that row's <code>because:</code> text, so neither column lines up</h3>
|
|
2108
|
-
<p><
|
|
2109
|
-
|
|
2110
|
-
<b>Reproduce it.</b>
|
|
2111
|
-
|
|
2112
|
-
<code>cd <repo></code><br>
|
|
2113
|
-
<code>export HOME=$TMPDIR/audit-dbi-sweep; mkdir -p "$HOME"; export BOOST_HOME=$TMPDIR/eval-home BOOST_NO_AI=1</code><br>
|
|
2114
|
-
<code>COLUMNS=100 ./boost recommend > $TMPDIR/rec.txt 2>&1; cat $TMPDIR/rec.txt</code><br>
|
|
2115
|
-
<code>python3 - <<'PY'</code><br>
|
|
2116
|
-
<code>import re,os</code><br>
|
|
2117
|
-
<code>for line in open(os.environ["TMPDIR"]+"/rec.txt").read().splitlines()[1:]:</code><br>
|
|
2118
|
-
<code> m=re.match(r"^ (\S+)\s+(.*?)\s\sbecause: (.*)$", line)</code><br>
|
|
2119
|
-
<code> if m: print("desc_cell=%3d because_len=%2d row_len=%d %s"%(len(m.group(2)),len("because: "+m.group(3)),len(line),m.group(1)))</code><br>
|
|
2120
|
-
<code>PY</code><br>
|
|
2121
|
-
<code>sed -n '1061,1065p' boost_cli/commands/discovery.py</code><br>
|
|
2122
|
-
<code>sed -n '638,644p' boost_cli/core/output.py</code>
|
|
2123
|
-
|
|
2124
|
-
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
2125
|
-
|
|
2126
|
-
The geometry numbers are all CORRECT — I re-derived every one (cells 46/38/46/42/54/34/46/54, because-lengths 19/27/19/23/11/31/19/11, spread 34..54 = 20 columns, row_len 100 on all 8 rows). Four wording/detail claims are wrong and must not ship as written:
|
|
2127
|
-
|
|
2128
|
-
1. FALSE AS STATED: "<code>recommend</code> is also the one result table in the find group that does not go through the width-aware shared <code>out.table()</code>." <code>cmd_search</code> does not call <code>out.table()</code> either — it calls <code>out.search_layout()</code> at <code>boost_cli/commands/discovery.py:219</code> and renders through <code>SearchLayout</code>. <code>out.table()</code> in the find group is called by <code>cmd_index</code> (:857), <code>cmd_discover</code> (:954), <code>_browse_plain</code> (:1091, used by <code>browse</code>) and <code>cmd_trending</code> (:1925, :1949). The correct claim: <b><code>recommend</code> is the only find-group result renderer that uses neither <code>out.table()</code> nor a frozen <code>SearchLayout</code>.</b>
|
|
2129
|
-
|
|
2130
|
-
2. TITLE OVERSTATES: "so neither column lines up" — and the evidence line "row_len 100 on all 8 — every row is right-flush, nothing is a column" contradicts itself. The <code>because:</code> column's RIGHT edge IS flush (col 100 at COLUMNS=100, col 120 at COLUMNS=120, on all 8 rows). What wanders is (a) the <code>because:</code> column's LEFT edge, 69..89, and (b) the description truncation point, 34..54.
|
|
2131
|
-
|
|
2132
|
-
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
2133
|
-
|
|
2134
|
-
PROVENANCE (I checked; it partly softens the framing and the card should say so). <code>git blame</code> puts line 1062 in ff61dfeb, "fix(search): width-clamp & truncate results — the D05 overflow fix (#33)", whose message states the intent: "clip each description to the remaining terminal width, so every result stays one scannable line <b>with its trailing tag (★ curated / because:) intact</b>." So preserving the trailing tag was deliberate; the per-row recompute is what that intent produced. The defect is drift, not carelessness: <code>search</code> was later rewritten onto the frozen <code>SearchLayout</code> (7f1a9a8d, "feat(ui): one design system across search and browse", #540) whose docstring states the opposite rule, and <code>recommend</code> was left on the 2026-07 scheme. Neither commit message nor any comment claims right-alignment of the reason tag as a design goal for <code>recommend</code>, so nothing in the tree defends the current shape — but a card that calls it an oversight without naming #33's stated intent is overclaiming.
|
|
2135
|
-
|
|
2136
|
-
SCOPE OF MY REPRO. Measured only from the boost repo (detected stack: javascript, python · frameworks: pytest · also: ci) against the shared read-only 20-tap eval corpus at $TMPDIR/eval-home, with BOOST_NO_AI=1 (which suppresses the "AI picks" block — unrelated to the geometry). Which eight rows appear, and therefore the exact cell widths, depend on that corpus and that stack; the geometry itself is deterministic from :1062 and appears whenever the shown rows carry different <code>because:</code> sets.
|
|
2137
|
-
|
|
2138
|
-
<b>Why it is worth doing.</b> <code>recommend</code> is the surface a new user hits before they know any skill names, and its output is a ragged block rather than a scannable list — the description truncation point jumps 20 columns row to row for reasons the reader cannot see (it is the length of the reason tag on the right). Two shipped design items (BOOST-D08, BOOST-D24) made <code>out.table()</code> width-aware for ~28 call sites; this one never adopted it, and the frozen-plan rule that <code>search</code> states in its own docstring is inverted here.
|
|
2139
|
-
|
|
2140
|
-
<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>
|
|
2108
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md">Write-up · recommend-recomputes-its-columns-per-row.md</a></p>
|
|
2141
2109
|
<div class="meta">
|
|
2142
2110
|
<span class="m">Complexity <b>S</b></span>
|
|
2143
2111
|
<span class="m">Impact <b>Low</b></span>
|
|
@@ -2197,40 +2165,9 @@ BLAST RADIUS — do not overstate it in the card. The natural set is NOT wired i
|
|
|
2197
2165
|
</article>
|
|
2198
2166
|
|
|
2199
2167
|
<article class="cap rcard" id="roadmap-boards-advertise-python-39">
|
|
2200
|
-
<div class="head"><span class="pill
|
|
2168
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
|
|
2201
2169
|
<h3>The two roadmap boards' install footers still advertise Python 3.9+, four minor versions under the real floor</h3>
|
|
2202
|
-
<p><
|
|
2203
|
-
|
|
2204
|
-
<b>Reproduce it.</b>
|
|
2205
|
-
|
|
2206
|
-
<code>cd <repo></code><br>
|
|
2207
|
-
<code>for f in docs/*.html; do printf '%-22s %s\n' "$(basename $f)" "$(grep -m1 -n 'foot-note' $f)"; done | grep -o 'Python 3\.[0-9]*+' | sort | uniq -c</code><br>
|
|
2208
|
-
<code>grep -n 'requires Python 3.9' docs/roadmap.html docs/design-roadmap.html</code><br>
|
|
2209
|
-
<code>sed -n '206p' docs/design-roadmap.html</code><br>
|
|
2210
|
-
<code>grep -n 'requires-python' pyproject.toml</code><br>
|
|
2211
|
-
<code>.venv/bin/python scripts/build_roadmap.py --check ; echo "EXIT=$?" # green despite the drift</code>
|
|
2212
|
-
|
|
2213
|
-
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
2214
|
-
|
|
2215
|
-
The documented defect (<code>claim</code> + <code>evidence</code>) reproduces byte-for-byte — every file, line number and count is right: 9 of 11 footers say 3.12+, roadmap.html:17141 and design-roadmap.html:582 say 3.9+, design-roadmap.html:206 says "targets Python ≥ 3.9", pyproject.toml:22 is >=3.12, README.md:54 says 3.12+, and <code>build_roadmap.py --check</code> exits 0. The correction is confined entirely to <code>why_it_matters</code>, which is wrong three times:
|
|
2216
|
-
|
|
2217
|
-
1. WRONG: "the launcher on that interpreter dies with a SyntaxError out of core/workflows.py's match statements." The <code>./boost</code> launcher no longer gates at 3.9 — <code>grep -n '3\.9' boost</code> returns nothing (exit 1), and boost:5, boost:27 and boost:37 all say 3.12. Observed on a PATH holding only Python 3.9.6, the launcher prints <code>boost: Python 3.12+ is required but was not found on PATH / hint: brew install python3</code>. It never selects the 3.9 interpreter.
|
|
2218
|
-
|
|
2219
|
-
2. WRONG even if the gate is bypassed: importing the package on 3.9 does not raise SyntaxError from <code>core/workflows.py</code>'s match statements. It raises <code>ImportError: cannot import name 'UTC' from 'datetime'</code> at <code>boost_cli/core/util.py:15</code>, which fires before workflows.py is reached.
|
|
2220
|
-
|
|
2221
|
-
3. WRONG about the failure being visible at all. The footer's advertised path is <code>pip install boost-skill-cli</code>, not the launcher.
|
|
2222
|
-
|
|
2223
|
-
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
2224
|
-
|
|
2225
|
-
SCOPE OF MY REPRO: everything above was measured on this checkout at the session's HEAD (main, 9b70fc8e) and against live PyPI. No eval corpus or BOOST_HOME was involved — this is a static docs/metadata finding, so the 20-tap corpus caveat does not apply. I did not run a real <code>pip install</code> (only <code>pip download</code>, which exercises the same resolver and version selection without mutating anything).
|
|
2226
|
-
|
|
2227
|
-
NOT CARDED — confirmed independently. I grepped all roadmap item titles, then every item body containing <code>3.9</code> (21 files) and every item body containing <code>footer</code>/<code>foot-note</code> (16 files). None names the docs/*.html install footers or their Python version. Three near misses, all genuinely distinct: - <code>audit-root-findings.md</code> covers the *launcher's* three 3.9 sites and explicitly closes "README already says 3.12+ — no doc change needed"; it never mentions a docs page. - <code>python-floor-moves-to-312.md</code> enumerates pyproject, the CI matrix and telemetry; no docs page. - <code>promote-nav-footer-into-the-shared-style-system.md</code> is about nav/footer *presence and styling*, not their text.
|
|
2228
|
-
|
|
2229
|
-
TRAP FOR THE CARD AUTHOR — do not re-import the SyntaxError claim. The finder took it from <code>docs/roadmap/items/audit-root-findings.md:36-43</code>, which is still <code>status: planned</code> but whose premise is already fixed on disk: that card says the launcher "still gates at Python 3.9" at boost:5/:27/:37, and all three now say 3.12. Anyone who reads that card while writing this one will copy a consequence that no longer happens.
|
|
2230
|
-
|
|
2231
|
-
<b>Why it is worth doing.</b> Both boards are linked from the README ("Roadmap" section, README.md:490-494) and from the Visual Guide nav, so they are landing surfaces a reader can arrive on first. Their footer is the only install instruction on the page, and it tells the reader a Python 3.9 will do. It will not: stock macOS <code>python3</code> IS 3.9, and the launcher on that interpreter dies with a SyntaxError out of core/workflows.py's match statements. The design board's "targets Python ≥ 3.9" also mis-sets the floor for anyone writing a proposal against it.
|
|
2232
|
-
|
|
2233
|
-
<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>
|
|
2170
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/roadmap-boards-advertise-python-39.md">Write-up · roadmap-boards-advertise-python-39.md</a></p>
|
|
2234
2171
|
<div class="meta">
|
|
2235
2172
|
<span class="m">Complexity <b>S</b></span>
|
|
2236
2173
|
<span class="m">Impact <b>Low</b></span>
|
|
@@ -2482,32 +2419,9 @@ NOT ALREADY CARDED — I re-checked independently. The PR 739 card (<code>audit-
|
|
|
2482
2419
|
</article>
|
|
2483
2420
|
|
|
2484
2421
|
<article class="cap rcard" id="stale-gate-sizes-in-readme-and-contributing">
|
|
2485
|
-
<div class="head"><span class="pill
|
|
2422
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
|
|
2486
2423
|
<h3>The contributor-onboarding gate tables state three wrong suite sizes, and README and CONTRIBUTING disagree with each other</h3>
|
|
2487
|
-
<p><
|
|
2488
|
-
|
|
2489
|
-
<b>Reproduce it.</b>
|
|
2490
|
-
|
|
2491
|
-
<code>cd <repo></code><br>
|
|
2492
|
-
<code>sed -n '48,49p' Makefile # make smoke == bash tests/smoke.sh</code><br>
|
|
2493
|
-
<code>bash tests/smoke.sh 2>&1 | tail -1 # == results: 183 passed, 0 failed</code><br>
|
|
2494
|
-
<code>sed -n '515p' README.md # "176 checks"</code><br>
|
|
2495
|
-
<code>sed -n '123,124p' CONTRIBUTING.md # "170 end-to-end checks" ; "11 features, 47 scenarios"</code><br>
|
|
2496
|
-
<code>HOME=$TMPDIR/audit-bdd BOOST_HOME=$TMPDIR/audit-bdd/.boost .venv/bin/behave tests/bdd/features --dry-run 2>&1 | tail -2</code>
|
|
2497
|
-
|
|
2498
|
-
<b>Verification found nothing to correct.</b> Every number, <code>file:line</code> and command output above was independently re-derived and matched exactly.
|
|
2499
|
-
|
|
2500
|
-
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
2501
|
-
|
|
2502
|
-
1. THE FINDING UNDERCOUNTS THE BLAST RADIUS. It names two files; there are three. <code>docs/openssf-badge.md:123</code> carries both stale numbers ("170 end-to-end checks" and "11 features, 47 scenarios") in the row that answers the OpenSSF <code>test</code> MUST criterion. That makes five stale statements across three files, not three across two. The finder's not_carded_check grepped roadmap bodies but never grepped <code>docs/</code>, which is how it missed this. A card that fixes only README and CONTRIBUTING leaves a stale count in the file that argues boost's test coverage to an external badge audit.
|
|
2503
|
-
|
|
2504
|
-
2. TWO ARE DRIFT, ONE WAS WRONG ON DAY ONE — do not write the card as uniform "drift". Re-deriving the count at each blame commit: README's 176 was CORRECT at 3aaf4ba4 (2026-08-28, PR #579) and has since drifted to 183; CONTRIBUTING's 170 was CORRECT at c043bb3f (2026-07-24, PR #233) and was never touched again; CONTRIBUTING's "47 scenarios" was CORRECT at 17bd5003 (2026-07-28, PR #292). But docs/openssf-badge.md's 170 was WRONG WHEN IT WAS WRITTEN — at 560652b1 (2026-08-28, PR #563) the suite already ran 176. It copied CONTRIBUTING's already-stale number rather than measuring. That is the sharper story: the count is not just drifting, it is being propagated by copy from whichever file the author happened to read, which is exactly the failure mode the finding's "no way to tell which is authoritative" line predicts.
|
|
2505
|
-
|
|
2506
|
-
3. 183 IS DETERMINISTIC — a card author must not "correct" it.
|
|
2507
|
-
|
|
2508
|
-
<b>Why it is worth doing.</b> These two tables are the contributor's map of what <code>make check</code> will do to their PR, and a first-time contributor reads whichever file they landed on. Seeing 183 where the doc promised 176 (or 170) is a signal the gate changed under them; worse, the two files disagree, so there is no way to tell which is authoritative without running the suite. The BDD row is the same failure in a suite that is not even in <code>make check</code>, where a wrong size is the only signal a contributor has that scenarios were added.
|
|
2509
|
-
|
|
2510
|
-
<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>CONFIRMED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
|
|
2424
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md">Write-up · stale-gate-sizes-in-readme-and-contributing.md</a></p>
|
|
2511
2425
|
<div class="meta">
|
|
2512
2426
|
<span class="m">Complexity <b>S</b></span>
|
|
2513
2427
|
<span class="m">Impact <b>Low</b></span>
|
|
@@ -6393,40 +6307,9 @@ untouched (no parser changes). Found by the 2026-08 CLI audit (cluster stale-pro
|
|
|
6393
6307
|
</article>
|
|
6394
6308
|
|
|
6395
6309
|
<article class="cap rcard" id="audit-root-findings">
|
|
6396
|
-
<div class="head"><span class="pill
|
|
6310
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
|
|
6397
6311
|
<h3>boost ROOT: CLI audit findings (2026-08)</h3>
|
|
6398
|
-
<p><
|
|
6399
|
-
exits <b>120</b> with <em>“Exception ignored on flushing sys.stdout: BrokenPipeError”</em>
|
|
6400
|
-
— 3/3 runs, and <code>count</code>, <code>taps</code> and <code>--version</code> leak the same way.
|
|
6401
|
-
<code>cli.py:327-331</code> deliberately catches BrokenPipeError and returns 0, but stdout is never
|
|
6402
|
-
flushed inside the try, so any output that fits the stdio buffer raises at interpreter exit — and
|
|
6403
|
-
the <code>--help</code>/<code>--version</code> early returns (<code>cli.py:292-302</code>) sit before
|
|
6404
|
-
the try with no handler at all. Fix: cover the early returns, flush <code>sys.stdout</code> inside the
|
|
6405
|
-
try, and <code>os.dup2</code> a devnull fd over stdout in the handler so the exit flush cannot raise.
|
|
6406
|
-
|
|
6407
|
-
<br><br><b>Help routing rejects main's own aliases.</b> <code>boost help --help</code> →
|
|
6408
|
-
<em>“unknown command: --help / hint: did you mean: heal?”</em> exit 2;
|
|
6409
|
-
<code>boost help version</code> suggests <em>verify</em> while <code>boost version</code> works;
|
|
6410
|
-
even <code>boost help help</code> fails. The aliases live only in <code>cli.main</code>
|
|
6411
|
-
(<code>cli.py:292-302</code>) and <code>print_command_help</code> resolves against COMMANDS alone,
|
|
6412
|
-
then difflib-guesses any token — dash-prefixed ones included. And <code>boost --help</code>
|
|
6413
|
-
documents none of the working global flags (<code>-V</code>/<code>-v</code>/<code>--debug</code>/<code>-q</code>).
|
|
6414
|
-
Fix: short-circuit the aliases in <code>print_command_help</code> before difflib, say
|
|
6415
|
-
<em>unknown option</em> for dash tokens in <code>_unknown</code> (<code>cli.py:231-236</code>), and add
|
|
6416
|
-
one dim Options line under Usage in <code>print_help</code>.
|
|
6417
|
-
|
|
6418
|
-
<br><br><b>The <code>./boost</code> launcher still gates at Python 3.9</b> — tuple
|
|
6419
|
-
(<code>boost:27</code>), hint text (<code>boost:37</code>) and header comment (<code>boost:5</code>) all
|
|
6420
|
-
say 3.9+ while <code>pyproject.toml:22</code> requires <code>>=3.12</code>. On a stock macOS whose
|
|
6421
|
-
only <code>python3</code> is 3.9 the launcher selects it and the user gets a SyntaxError from
|
|
6422
|
-
<code>core/workflows.py</code>'s match statements instead of the friendly hint. The shipped
|
|
6423
|
-
<em>python-floor-moves-to-312</em> item enumerated every floor touchpoint and missed this one. Fix:
|
|
6424
|
-
bump all three sites to 3.12 and add a unit test pinning the launcher's floor to
|
|
6425
|
-
<code>requires-python</code>. README already says 3.12+ — no doc change needed; none of the three
|
|
6426
|
-
fixes touches a COMMANDS row, so <code>docs/commands.html</code> is unaffected.
|
|
6427
|
-
|
|
6428
|
-
<br><br>Found by the 2026-08 CLI audit (clusters <code>broken-pipe-exit</code>,
|
|
6429
|
-
<code>help-routing-aliases</code>, <code>launcher-python-floor</code>); repro in the audit log.</p>
|
|
6312
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/audit-root-findings.md">Write-up · audit-root-findings.md</a></p>
|
|
6430
6313
|
<div class="meta">
|
|
6431
6314
|
<span class="m">Complexity <b>S</b></span>
|
|
6432
6315
|
<span class="m">Impact <b>Low</b></span>
|
|
@@ -8404,7 +8287,7 @@ regressed. Lowering the floor alone just relocates the coin flip.</p>
|
|
|
8404
8287
|
<footer>
|
|
8405
8288
|
<div class="wrap">
|
|
8406
8289
|
<p class="foot-brand"><b>boost</b> — a package manager for AI skills</p>
|
|
8407
|
-
<p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.
|
|
8290
|
+
<p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.12+ and <code>git</code></p>
|
|
8408
8291
|
<nav class="foot-links" aria-label="Documentation">
|
|
8409
8292
|
<a href="index.html">Guide</a>
|
|
8410
8293
|
<a href="commands.html">Commands</a>
|
|
@@ -1131,6 +1131,19 @@ class TestRecommend:
|
|
|
1131
1131
|
assert "because: pytest, python" in r.out
|
|
1132
1132
|
assert "because: javascript, react" in r.out
|
|
1133
1133
|
|
|
1134
|
+
@pytest.mark.parametrize("cols", ["60", "100"])
|
|
1135
|
+
def test_rows_share_one_column_plan(self, boost, stack_tap, react_project,
|
|
1136
|
+
monkeypatch, cols):
|
|
1137
|
+
# The description width used to be sized per row from that row's own
|
|
1138
|
+
# `because:` tag, so the clip point swung row to row and the reason
|
|
1139
|
+
# column started wherever each description happened to end.
|
|
1140
|
+
monkeypatch.setenv("COLUMNS", cols)
|
|
1141
|
+
r = boost("recommend", "--path", react_project)
|
|
1142
|
+
rows = [ln for ln in r.out.splitlines() if "because: " in ln]
|
|
1143
|
+
reasons = {ln.split("because: ")[1] for ln in rows}
|
|
1144
|
+
assert len(rows) >= 2 and len({len(x) for x in reasons}) >= 2, rows
|
|
1145
|
+
assert len({ln.index("because: ") for ln in rows}) == 1, rows
|
|
1146
|
+
|
|
1134
1147
|
def test_json_purity(self, boost, stack_tap, react_project):
|
|
1135
1148
|
r = boost("recommend", "--path", react_project, "--json")
|
|
1136
1149
|
data = json.loads(r.out)
|
{boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_launcher_python_floor.py
RENAMED
|
@@ -46,3 +46,35 @@ class TestLauncherPythonFloor:
|
|
|
46
46
|
major, minor = _requires_python_floor()
|
|
47
47
|
text = LAUNCHER.read_text(encoding="utf-8")
|
|
48
48
|
assert "Python %d.%d+ is required" % (major, minor) in text
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class TestDocsPythonFloor:
|
|
52
|
+
"""The docs' own install lines must name the same floor.
|
|
53
|
+
|
|
54
|
+
Nine of the eleven docs pages' footers moved to 3.12 with the floor; the
|
|
55
|
+
two roadmap boards' footers — hand-authored outside the regions
|
|
56
|
+
`build_roadmap.py` regenerates, so `--check` stayed green — kept saying
|
|
57
|
+
3.9, as did the design board's "targets Python ≥ 3.9". Stock macOS
|
|
58
|
+
`python3` is 3.9, so that is the reader the stale floor misleads.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def test_every_footer_names_requires_python(self):
|
|
62
|
+
major, minor = _requires_python_floor()
|
|
63
|
+
pages = sorted((ROOT / "docs").glob("*.html"))
|
|
64
|
+
footers = {page.name: [ln.strip() for ln in
|
|
65
|
+
page.read_text(encoding="utf-8").splitlines()
|
|
66
|
+
if 'class="foot-note"' in ln]
|
|
67
|
+
for page in pages}
|
|
68
|
+
# One footer per page, found by its class alone — so a page that
|
|
69
|
+
# loses its footer, or rewords it away from "requires Python", fails
|
|
70
|
+
# here rather than dropping out of the scan.
|
|
71
|
+
assert pages and all(len(f) == 1 for f in footers.values()), footers
|
|
72
|
+
stale = {name: f[0] for name, f in footers.items()
|
|
73
|
+
if "requires Python %d.%d+" % (major, minor) not in f[0]}
|
|
74
|
+
assert not stale, stale
|
|
75
|
+
|
|
76
|
+
def test_design_board_targets_the_same_floor(self):
|
|
77
|
+
major, minor = _requires_python_floor()
|
|
78
|
+
text = (ROOT / "docs" / "design-roadmap.html").read_text(encoding="utf-8")
|
|
79
|
+
assert re.findall(r"targets <code>Python ≥ (\d+\.\d+)</code>", text) \
|
|
80
|
+
== ["%d.%d" % (major, minor)]
|
|
@@ -100,6 +100,49 @@ class TestCommandCount:
|
|
|
100
100
|
# test whose formula is a guess is worse than no test.
|
|
101
101
|
|
|
102
102
|
|
|
103
|
+
class TestSuiteSizesAgree:
|
|
104
|
+
"""The smoke and BDD sizes the docs state.
|
|
105
|
+
|
|
106
|
+
They had drifted three ways at once: README said 176 smoke checks,
|
|
107
|
+
CONTRIBUTING and the OpenSSF badge answer 170, the suite ran 183, and the
|
|
108
|
+
badge's 170 was already wrong on the day it was copied in. Per the note
|
|
109
|
+
above, the smoke count is not derived from smoke.sh's shape; what IS
|
|
110
|
+
checkable without a formula is that the docs agree with each other, so a
|
|
111
|
+
reader never has to guess which file is right. The BDD size is
|
|
112
|
+
declarative (one `Scenario:` per scenario), so it is checked outright.
|
|
113
|
+
"""
|
|
114
|
+
|
|
115
|
+
DOCS = ("README.md", "CONTRIBUTING.md", "docs/openssf-badge.md")
|
|
116
|
+
|
|
117
|
+
def _read(self, doc):
|
|
118
|
+
return (ROOT / doc).read_text(encoding="utf-8")
|
|
119
|
+
|
|
120
|
+
def test_every_doc_states_the_same_smoke_size(self):
|
|
121
|
+
sizes = {}
|
|
122
|
+
for doc in self.DOCS:
|
|
123
|
+
for line in self._read(doc).splitlines():
|
|
124
|
+
if "smoke" in line:
|
|
125
|
+
for n in re.findall(r"(\d+) (?:end-to-end )?checks", line):
|
|
126
|
+
sizes.setdefault(int(n), []).append(doc)
|
|
127
|
+
# Every statement, not just every doc: the badge answer states it twice.
|
|
128
|
+
assert sorted(d for docs in sizes.values() for d in docs) == sorted(
|
|
129
|
+
["README.md", "CONTRIBUTING.md"] + ["docs/openssf-badge.md"] * 2)
|
|
130
|
+
assert len(sizes) == 1, "docs disagree on the smoke size: %s" % sizes
|
|
131
|
+
|
|
132
|
+
def test_bdd_size_matches_the_feature_files(self):
|
|
133
|
+
features = sorted((ROOT / "tests" / "bdd" / "features").glob("*.feature"))
|
|
134
|
+
texts = [f.read_text(encoding="utf-8") for f in features]
|
|
135
|
+
# An outline expands to one scenario per Examples row, and `Example:`
|
|
136
|
+
# is Gherkin's synonym for `Scenario:`; this count models neither, so
|
|
137
|
+
# refuse rather than undercount.
|
|
138
|
+
assert not any(re.search(r"^\s*(Scenario Outline|Example):", t, re.M)
|
|
139
|
+
for t in texts)
|
|
140
|
+
scenarios = sum(len(re.findall(r"^\s*Scenario:", t, re.M)) for t in texts)
|
|
141
|
+
stated = [(int(f), int(s)) for doc in self.DOCS for f, s in
|
|
142
|
+
re.findall(r"(\d+) features, (\d+) scenarios", self._read(doc))]
|
|
143
|
+
assert stated and set(stated) == {(len(features), scenarios)}, stated
|
|
144
|
+
|
|
145
|
+
|
|
103
146
|
class TestNoStaleCountsElsewhere:
|
|
104
147
|
@pytest.mark.parametrize("doc", ["README.md", "docs/index.html"])
|
|
105
148
|
def test_no_command_count_is_a_stale_literal(self, doc):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|