boost-skill-cli 1.2.56__tar.gz → 1.2.57__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.56 → boost_skill_cli-1.2.57}/CLAUDE.md +14 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/Makefile +12 -1
- {boost_skill_cli-1.2.56/boost_skill_cli.egg-info → boost_skill_cli-1.2.57}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/tool-call-eval-tier.md +2 -1
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap.html +1 -1
- boost_skill_cli-1.2.57/scripts/eval_tools.py +339 -0
- boost_skill_cli-1.2.57/tests/eval/tool_calls.jsonl +32 -0
- boost_skill_cli-1.2.57/tests/unit/test_eval_tools.py +290 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.gitattributes +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.gitignore +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/.vale.ini +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/DCO +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/LICENSE +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/codecov.yml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/index.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/examples/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/index.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/noxfile.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/setup.cfg +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/style/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/style/boost.css +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/style/boost.js +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/style/demo.html +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.56 → boost_skill_cli-1.2.57}/tests/visual/visual_check.mjs +0 -0
|
@@ -105,6 +105,20 @@ opt-in evals stay out of `check` and all degrade cleanly:
|
|
|
105
105
|
the `[eval]` extra **and** a judge key (`OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`
|
|
106
106
|
with `langchain-anthropic`) plus boost AI to generate the explanations.
|
|
107
107
|
|
|
108
|
+
- `make eval-tools` — Tier 3 tool-call **behaviour**. Every tier above grades
|
|
109
|
+
what boost returns *once it is asked*; this grades whether it is asked, which
|
|
110
|
+
is the step they all depend on — a gate flooring recall@k at 0.78 reports
|
|
111
|
+
nothing when retrieval was never invoked. It scores **two** numbers and
|
|
112
|
+
gating on one would be the same hole `eval` had before hit@1: a floor on a
|
|
113
|
+
should-call prompt set, and a **ceiling on a should-not-call set** drawn from
|
|
114
|
+
the shipped skip list, because call rate alone rewards making the tool
|
|
115
|
+
descriptions maximally assertive — the capture `core/mcp.py` is written to
|
|
116
|
+
avoid. Rates carry a Wilson interval over N runs and floors are judged
|
|
117
|
+
against the bound, not the point estimate: at 3/3 the normal approximation
|
|
118
|
+
claims [1.00, 1.00] and would let a wording regression hide behind one lucky
|
|
119
|
+
run. Drives a real host, so it is opt-in, out of `check`, and degrades
|
|
120
|
+
cleanly when `claude` is not on `PATH`.
|
|
121
|
+
|
|
108
122
|
The `[eval]` extra (`pip install -e '.[eval]'`) carries `ranx` + `ragas`; nothing
|
|
109
123
|
in it is ever imported by the CLI or the required gate. It pins the langchain 0.3
|
|
110
124
|
stack because ragas 0.2.x breaks against langchain ≥1.0 — an isolated cost of the
|
|
@@ -10,7 +10,7 @@ PYTEST := $(VENV)/bin/pytest
|
|
|
10
10
|
# pinned taps out of the developer's real ~/.boost.
|
|
11
11
|
EVAL_HOME := $(CURDIR)/.eval-home
|
|
12
12
|
|
|
13
|
-
.PHONY: venv test unit functional smoke coverage patch-coverage mutation lint check demo carousel clean-test eval eval-ai eval-rec eval-stats eval-explain evals evals-baseline evals-golden evals-online audit dist-check bdd bench bench-cli fuzz post-deploy
|
|
13
|
+
.PHONY: venv test unit functional smoke coverage patch-coverage mutation lint check demo carousel clean-test eval eval-ai eval-rec eval-stats eval-explain eval-tools evals evals-baseline evals-golden evals-online audit dist-check bdd bench bench-cli fuzz post-deploy
|
|
14
14
|
|
|
15
15
|
# Every tool comes from a hash-pinned requirements/*.txt — the same files CI
|
|
16
16
|
# installs (see scripts/lock_toolchain.py). pip enforces the hashes, so a dev
|
|
@@ -165,6 +165,17 @@ eval-explain:
|
|
|
165
165
|
PYTHON=$(PY) BOOST_HOME=$(EVAL_HOME) bash scripts/ensure_eval_corpus.sh
|
|
166
166
|
BOOST_HOME=$(EVAL_HOME) $(PY) scripts/eval_explain.py --fail-under 0.80
|
|
167
167
|
|
|
168
|
+
# Tier 3: tool-call BEHAVIOUR — does an agent call boost's tools when it
|
|
169
|
+
# should, and stay away when it should not. Tiers 1 and 2 grade what boost
|
|
170
|
+
# returns once it is asked; this grades whether it is asked, which is the step
|
|
171
|
+
# everything downstream depends on. Two numbers, never one: a floor on the
|
|
172
|
+
# should-call half AND a ceiling on the should-not-call half, because scoring
|
|
173
|
+
# call rate alone rewards an assertive surface — the capture core/mcp.py is
|
|
174
|
+
# written to avoid. Drives a real host and spends real tokens, so it is opt-in
|
|
175
|
+
# and OUT of `check`; degrades cleanly when no host is on PATH.
|
|
176
|
+
eval-tools:
|
|
177
|
+
$(PY) scripts/eval_tools.py --runs 3
|
|
178
|
+
|
|
168
179
|
# Retrieval-quality gate over the HERMETIC golden set: recall@5/@10, MRR, and
|
|
169
180
|
# nDCG@5/@10 with graded (3/2/1) relevance, plus a paired-bootstrap regression
|
|
170
181
|
# test against the committed evals/baseline.json. Part of `check` and required
|
|
@@ -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.57'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 57)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -542,6 +542,7 @@ scripts/eval_gate.py
|
|
|
542
542
|
scripts/eval_recommend.py
|
|
543
543
|
scripts/eval_retrieval.py
|
|
544
544
|
scripts/eval_stats_summary.py
|
|
545
|
+
scripts/eval_tools.py
|
|
545
546
|
scripts/import_budget.py
|
|
546
547
|
scripts/lock_toolchain.py
|
|
547
548
|
scripts/measure_registry.py
|
|
@@ -588,6 +589,7 @@ tests/eval/golden.jsonl
|
|
|
588
589
|
tests/eval/recommend.jsonl
|
|
589
590
|
tests/eval/taps-scale.txt
|
|
590
591
|
tests/eval/taps.txt
|
|
592
|
+
tests/eval/tool_calls.jsonl
|
|
591
593
|
tests/functional/test_bmad_all_hosts.py
|
|
592
594
|
tests/functional/test_capabilities_policy.py
|
|
593
595
|
tests/functional/test_cli_adapt.py
|
|
@@ -711,6 +713,7 @@ tests/unit/test_eval_gate.py
|
|
|
711
713
|
tests/unit/test_eval_grading.py
|
|
712
714
|
tests/unit/test_eval_metrics.py
|
|
713
715
|
tests/unit/test_eval_stats_summary.py
|
|
716
|
+
tests/unit/test_eval_tools.py
|
|
714
717
|
tests/unit/test_failure_alerting_covers_unattended.py
|
|
715
718
|
tests/unit/test_faithfulness.py
|
|
716
719
|
tests/unit/test_frontmatter.py
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
id: tool-call-eval-tier
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: inflight
|
|
6
6
|
category: Quality · Eval
|
|
7
7
|
complexity: L
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
10
|
note: boost floors four retrieval metrics and measures whether an agent ever calls the tools zero times
|
|
11
|
+
owner: feat/tool-call-eval
|
|
11
12
|
order: 96
|
|
12
13
|
title: a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions
|
|
13
14
|
---
|
|
@@ -814,7 +814,7 @@ an oversight.</p></details>
|
|
|
814
814
|
</article>
|
|
815
815
|
|
|
816
816
|
<article class="cap rcard" id="tool-call-eval-tier">
|
|
817
|
-
<div class="head"><span class="pill
|
|
817
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Quality · Eval</span></div>
|
|
818
818
|
<h3>a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions</h3>
|
|
819
819
|
<p>boost's required gate floors <b>four</b> retrieval metrics — recall@k ≥ 0.78, hit@1 ≥ 0.40,
|
|
820
820
|
MRR ≥ 0.52, nDCG@k ≥ 0.58 — over a 91-query golden set and a 10,152-entry corpus, every
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright the boost contributors.
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
"""Tier 3: does an agent CALL boost's tools when it should — and stay away when
|
|
5
|
+
it should not.
|
|
6
|
+
|
|
7
|
+
Tiers 1 and 2 grade what boost returns *once it is asked*: recall@k, hit@1, MRR
|
|
8
|
+
and nDCG over a 91-query golden set. Nothing measured whether an agent asks,
|
|
9
|
+
and that is the step everything downstream depends on. A gate flooring
|
|
10
|
+
recall@k at 0.78 reports nothing when retrieval is never invoked.
|
|
11
|
+
|
|
12
|
+
TWO NUMBERS, NEVER ONE. A tier that scores call rate alone rewards making the
|
|
13
|
+
tool descriptions maximally assertive, which is precisely the capture
|
|
14
|
+
`core/mcp.py` is written to avoid — and boost already learned this one tier
|
|
15
|
+
down: flooring recall without hit@1 passed a ranker that found the answer every
|
|
16
|
+
time and never ranked it first. So the set has two halves, and this reports a
|
|
17
|
+
floor on the should-call half AND a ceiling on the should-not-call half. One
|
|
18
|
+
number without the other is an incentive to ship the thing boost refuses to be.
|
|
19
|
+
|
|
20
|
+
PER HOST, NEVER AVERAGED. The registered hosts do not see the same boost text:
|
|
21
|
+
Claude Code puts server `instructions` in the system prompt, and Gemini CLI
|
|
22
|
+
never delivers them in interactive mode at all. One averaged score would hide a
|
|
23
|
+
host where the guidance is simply absent, and would credit or blame wording for
|
|
24
|
+
a delivery failure.
|
|
25
|
+
|
|
26
|
+
AN INTERVAL, NOT A VERDICT PER RUN. The outcome is stochastic, so a single
|
|
27
|
+
replay cannot tell a wording regression from a sampling wobble. Every rate is
|
|
28
|
+
reported with a Wilson score interval over N runs, and a floor is judged
|
|
29
|
+
against the interval bound rather than the point estimate.
|
|
30
|
+
|
|
31
|
+
WHAT THIS MEASURES, AND THE CONFOUND TO CONTROL FOR. The host reads more than
|
|
32
|
+
the MCP tool descriptions: an installed boost RULE is standing instructions in
|
|
33
|
+
the agent's own context file, and `boost-first` says in as many words to call
|
|
34
|
+
these tools. A run on a machine where that rule is installed is measuring
|
|
35
|
+
rule + descriptions, and attributing the result to wording alone would be
|
|
36
|
+
wrong. `--report-context` prints what was in scope so a number is never read
|
|
37
|
+
without it; compare hosts and wordings only across runs with the same answer.
|
|
38
|
+
|
|
39
|
+
FIRST REAL RUN, and it is why the ceiling exists. Four prompts, one run each,
|
|
40
|
+
against Claude Code on a machine with the `boost-first` rule installed:
|
|
41
|
+
should-call 1/1, should-NOT-call **3/3**. The host called boost for "What is
|
|
42
|
+
the difference between a Python list and a tuple?" — a question, which boost's
|
|
43
|
+
own skip list excuses by name. A call-rate-only tier would have reported a
|
|
44
|
+
perfect 1.00 and called it a triumph.
|
|
45
|
+
|
|
46
|
+
Opt-in and key-gated like the other Tier 2/3 evals — it drives a real host and
|
|
47
|
+
spends real tokens, so it must NOT join the required `check` gate, and it
|
|
48
|
+
degrades cleanly when no host is reachable.
|
|
49
|
+
|
|
50
|
+
Usage:
|
|
51
|
+
python3 scripts/eval_tools.py --dry-run # show the plan, call nothing
|
|
52
|
+
python3 scripts/eval_tools.py --runs 3 # 3 runs per prompt
|
|
53
|
+
python3 scripts/eval_tools.py --floor-call 0.60 --ceiling-false-call 0.20
|
|
54
|
+
"""
|
|
55
|
+
from __future__ import annotations
|
|
56
|
+
|
|
57
|
+
import argparse
|
|
58
|
+
import json
|
|
59
|
+
import math
|
|
60
|
+
import os
|
|
61
|
+
import shutil
|
|
62
|
+
import subprocess
|
|
63
|
+
import sys
|
|
64
|
+
from pathlib import Path
|
|
65
|
+
|
|
66
|
+
ROOT = Path(__file__).resolve().parent.parent
|
|
67
|
+
DEFAULT_SET = ROOT / "tests" / "eval" / "tool_calls.jsonl"
|
|
68
|
+
|
|
69
|
+
#: Tool names that count as "the agent asked boost". Prefixed forms are matched
|
|
70
|
+
#: too — hosts namespace MCP tools differently (`mcp__boost__boost_search`,
|
|
71
|
+
#: `mcp_boost_boost_search`), and matching the bare suffix keeps one list
|
|
72
|
+
#: correct across all of them.
|
|
73
|
+
BOOST_TOOLS = ("boost_search", "boost_list", "boost_info", "boost_read",
|
|
74
|
+
"boost_install", "boost_doctor", "boost_discover_github")
|
|
75
|
+
|
|
76
|
+
#: Only these count as *consulting the shelf*. `boost_install` is downstream of
|
|
77
|
+
#: a decision already made, and scoring it as a check would let a run that
|
|
78
|
+
#: installed without looking count as a success.
|
|
79
|
+
CONSULT_TOOLS = ("boost_search", "boost_list", "boost_info", "boost_read")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# ----------------------------------------------------------------- data
|
|
83
|
+
|
|
84
|
+
def load_set(path: Path) -> list[dict]:
|
|
85
|
+
"""Rows from the JSONL prompt set. `#` comments and blank lines allowed."""
|
|
86
|
+
rows: list[dict] = []
|
|
87
|
+
for line in path.read_text(encoding="utf-8").splitlines():
|
|
88
|
+
line = line.strip()
|
|
89
|
+
if not line or line.startswith("#"):
|
|
90
|
+
continue
|
|
91
|
+
rows.append(json.loads(line))
|
|
92
|
+
if not rows:
|
|
93
|
+
raise SystemExit("no prompts in %s" % path)
|
|
94
|
+
bad = [r["id"] for r in rows if r.get("expect") not in ("call", "no-call")]
|
|
95
|
+
if bad:
|
|
96
|
+
raise SystemExit("rows with no usable `expect`: %s" % ", ".join(bad))
|
|
97
|
+
ids = [r["id"] for r in rows]
|
|
98
|
+
dupes = sorted({i for i in ids if ids.count(i) > 1})
|
|
99
|
+
if dupes:
|
|
100
|
+
raise SystemExit("duplicate row ids: %s" % ", ".join(dupes))
|
|
101
|
+
return rows
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def halves(rows: list[dict]) -> tuple[list[dict], list[dict]]:
|
|
105
|
+
"""``(should_call, should_not_call)``.
|
|
106
|
+
|
|
107
|
+
Both must be non-empty: a set with one half is the single-number failure
|
|
108
|
+
this whole tier exists to refuse, so it is an error rather than a warning.
|
|
109
|
+
"""
|
|
110
|
+
call = [r for r in rows if r["expect"] == "call"]
|
|
111
|
+
no_call = [r for r in rows if r["expect"] == "no-call"]
|
|
112
|
+
if not call or not no_call:
|
|
113
|
+
raise SystemExit(
|
|
114
|
+
"the prompt set needs BOTH halves — %d should-call, %d should-not-call. "
|
|
115
|
+
"Scoring one direction rewards an assertive surface, which is the "
|
|
116
|
+
"capture this tier exists to detect." % (len(call), len(no_call)))
|
|
117
|
+
return call, no_call
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# -------------------------------------------------------------- scoring
|
|
121
|
+
|
|
122
|
+
def wilson(k: int, n: int, z: float = 1.96) -> tuple[float, float]:
|
|
123
|
+
"""Wilson score interval for ``k`` successes in ``n`` trials.
|
|
124
|
+
|
|
125
|
+
Wilson rather than the textbook normal approximation because this tier runs
|
|
126
|
+
small N by design (a live host call is seconds and money). At n=3, k=3 the
|
|
127
|
+
normal interval is [1.0, 1.0] — it claims certainty from three samples,
|
|
128
|
+
which would let a wording regression hide behind a lucky run. Wilson gives
|
|
129
|
+
[0.44, 1.0] there and stays inside [0, 1] at the edges.
|
|
130
|
+
|
|
131
|
+
``n == 0`` returns ``(0.0, 1.0)``: no evidence is the widest interval, not
|
|
132
|
+
a score of zero.
|
|
133
|
+
"""
|
|
134
|
+
if n <= 0:
|
|
135
|
+
return 0.0, 1.0
|
|
136
|
+
p = k / n
|
|
137
|
+
d = 1 + z * z / n
|
|
138
|
+
centre = (p + z * z / (2 * n)) / d
|
|
139
|
+
half = z * math.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) / d
|
|
140
|
+
return max(0.0, centre - half), min(1.0, centre + half)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def rate(observations: list[bool]) -> dict:
|
|
144
|
+
"""``{k, n, rate, lo, hi}`` for a list of per-run booleans."""
|
|
145
|
+
k, n = sum(1 for o in observations if o), len(observations)
|
|
146
|
+
lo, hi = wilson(k, n)
|
|
147
|
+
return {"k": k, "n": n, "rate": (k / n) if n else 0.0, "lo": lo, "hi": hi}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def score_host(rows: list[dict], observed: dict[str, list[bool]]) -> dict:
|
|
151
|
+
"""Per-host metrics from ``{row_id: [called?, ...]}``.
|
|
152
|
+
|
|
153
|
+
Rows with no observations are reported as ``skipped`` rather than counted
|
|
154
|
+
as failures — a host that could not be reached must not read as a host that
|
|
155
|
+
declined to call.
|
|
156
|
+
"""
|
|
157
|
+
call_rows, no_call_rows = halves(rows)
|
|
158
|
+
|
|
159
|
+
def seen(rs: list[dict]) -> list[bool]:
|
|
160
|
+
return [o for r in rs for o in observed.get(r["id"], [])]
|
|
161
|
+
|
|
162
|
+
skipped = sorted(r["id"] for r in rows if not observed.get(r["id"]))
|
|
163
|
+
return {
|
|
164
|
+
"call_rate": rate(seen(call_rows)),
|
|
165
|
+
"false_call_rate": rate(seen(no_call_rows)),
|
|
166
|
+
"skipped": skipped,
|
|
167
|
+
"per_row": {r["id"]: rate(observed.get(r["id"], [])) for r in rows},
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def verdict(metrics: dict, floor_call: float, ceiling_false: float) -> list[str]:
|
|
172
|
+
"""Failure reasons, empty when the host passes both directions.
|
|
173
|
+
|
|
174
|
+
Judged against the INTERVAL, not the point estimate: the floor must clear
|
|
175
|
+
the lower bound and the ceiling must clear the upper bound. With small N a
|
|
176
|
+
point estimate of 0.67 from two of three runs is indistinguishable from
|
|
177
|
+
noise, and gating on it would make the tier itself flaky.
|
|
178
|
+
"""
|
|
179
|
+
out = []
|
|
180
|
+
c, f = metrics["call_rate"], metrics["false_call_rate"]
|
|
181
|
+
if c["n"] == 0:
|
|
182
|
+
out.append("no should-call observations")
|
|
183
|
+
elif c["lo"] < floor_call:
|
|
184
|
+
out.append("call rate %.2f [%.2f-%.2f] under floor %.2f (%d/%d)"
|
|
185
|
+
% (c["rate"], c["lo"], c["hi"], floor_call, c["k"], c["n"]))
|
|
186
|
+
if f["n"] and f["hi"] > ceiling_false:
|
|
187
|
+
out.append("false-call rate %.2f [%.2f-%.2f] over ceiling %.2f (%d/%d)"
|
|
188
|
+
% (f["rate"], f["lo"], f["hi"], ceiling_false, f["k"], f["n"]))
|
|
189
|
+
return out
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
# ----------------------------------------------------------------- probe
|
|
193
|
+
|
|
194
|
+
def called_boost(events: str) -> bool:
|
|
195
|
+
"""Did this run's event stream contain a boost CONSULT tool call?
|
|
196
|
+
|
|
197
|
+
Reads the host's own stream rather than the model's prose: an agent that
|
|
198
|
+
says "let me check boost" and does not is a miss, and one that calls
|
|
199
|
+
without narrating is a hit. Substring matching on the bare tool name covers
|
|
200
|
+
every host's namespacing (`mcp__boost__boost_search`, `mcp_boost_…`).
|
|
201
|
+
"""
|
|
202
|
+
return any(name in events for name in CONSULT_TOOLS)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def claude_available() -> bool:
|
|
206
|
+
return shutil.which("claude") is not None
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def run_claude(prompt: str, timeout: int) -> str | None:
|
|
210
|
+
"""One `claude -p` run, returning its raw event stream (or None).
|
|
211
|
+
|
|
212
|
+
`--output-format stream-json` is what makes the probe honest: it emits a
|
|
213
|
+
`tool_use` block per call, so the observation is the host's record of what
|
|
214
|
+
happened rather than the model's account of it.
|
|
215
|
+
"""
|
|
216
|
+
cmd = ["claude", "-p", prompt, "--output-format", "stream-json",
|
|
217
|
+
"--verbose", "--max-turns", "2"]
|
|
218
|
+
try:
|
|
219
|
+
proc = subprocess.run(cmd, capture_output=True, text=True,
|
|
220
|
+
timeout=timeout)
|
|
221
|
+
except (subprocess.TimeoutExpired, OSError):
|
|
222
|
+
return None
|
|
223
|
+
# A non-zero exit with output still carries the events we care about; only
|
|
224
|
+
# a silent failure is unusable.
|
|
225
|
+
return proc.stdout or None
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
# ------------------------------------------------------------------ cli
|
|
229
|
+
|
|
230
|
+
def _print_context() -> None:
|
|
231
|
+
"""Name the installed RULES, because they are part of what is being scored.
|
|
232
|
+
|
|
233
|
+
A rule is standing instructions in the agent's own context file, and
|
|
234
|
+
boost's own `boost-first` rule tells the agent to call these tools. A rate
|
|
235
|
+
measured with it installed is a rate for rule + descriptions; reading it as
|
|
236
|
+
a verdict on the descriptions alone is the mistake this line exists to
|
|
237
|
+
prevent. Printed, never subtracted — the honest move is to say what was in
|
|
238
|
+
scope, not to guess at its share.
|
|
239
|
+
"""
|
|
240
|
+
try:
|
|
241
|
+
from boost_cli.core import lockfile
|
|
242
|
+
rules = sorted(lockfile.all_installed().get("rule") or {})
|
|
243
|
+
except Exception: # a context note must never fail the run it annotates
|
|
244
|
+
print("context: could not read the lock file")
|
|
245
|
+
return
|
|
246
|
+
print("context: %d rule(s) installed and in scope for every prompt%s"
|
|
247
|
+
% (len(rules), (" — " + ", ".join(rules)) if rules else ""))
|
|
248
|
+
if rules:
|
|
249
|
+
print(" these are standing instructions; the rates below are "
|
|
250
|
+
"for rule + descriptions, not descriptions alone.")
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def _report(host: str, rows: list[dict], metrics: dict,
|
|
254
|
+
reasons: list[str]) -> None:
|
|
255
|
+
c, f = metrics["call_rate"], metrics["false_call_rate"]
|
|
256
|
+
print("\n== %s ==" % host)
|
|
257
|
+
print(" should-call %d/%d = %.2f [%.2f-%.2f]"
|
|
258
|
+
% (c["k"], c["n"], c["rate"], c["lo"], c["hi"]))
|
|
259
|
+
print(" should-NOT-call %d/%d = %.2f [%.2f-%.2f] (lower is better)"
|
|
260
|
+
% (f["k"], f["n"], f["rate"], f["lo"], f["hi"]))
|
|
261
|
+
if metrics["skipped"]:
|
|
262
|
+
print(" skipped (no observations): %s" % ", ".join(metrics["skipped"]))
|
|
263
|
+
for r in rows:
|
|
264
|
+
m = metrics["per_row"][r["id"]]
|
|
265
|
+
if not m["n"]:
|
|
266
|
+
continue
|
|
267
|
+
want = "call" if r["expect"] == "call" else "no-call"
|
|
268
|
+
ok = (m["k"] == m["n"]) if r["expect"] == "call" else (m["k"] == 0)
|
|
269
|
+
print(" %-24s want %-8s got %d/%d %s"
|
|
270
|
+
% (r["id"], want, m["k"], m["n"], "" if ok else "<-"))
|
|
271
|
+
for reason in reasons:
|
|
272
|
+
print(" FAIL: %s" % reason)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def main(argv: list[str] | None = None) -> int:
|
|
276
|
+
p = argparse.ArgumentParser(
|
|
277
|
+
prog="eval_tools.py",
|
|
278
|
+
description="Tier 3: tool-call behaviour, floored in both directions")
|
|
279
|
+
p.add_argument("--set", type=Path, default=DEFAULT_SET)
|
|
280
|
+
p.add_argument("--runs", type=int, default=1,
|
|
281
|
+
help="runs per prompt; more narrows the interval")
|
|
282
|
+
p.add_argument("--timeout", type=int, default=120)
|
|
283
|
+
p.add_argument("--floor-call", type=float, default=0.60,
|
|
284
|
+
help="lower bound of the should-call rate must clear this")
|
|
285
|
+
p.add_argument("--ceiling-false-call", type=float, default=0.20,
|
|
286
|
+
help="upper bound of the should-NOT-call rate must stay under")
|
|
287
|
+
p.add_argument("--dry-run", action="store_true",
|
|
288
|
+
help="print the plan and the halves; call no host")
|
|
289
|
+
p.add_argument("--json", action="store_true")
|
|
290
|
+
p.add_argument("--report-context", action="store_true", default=True,
|
|
291
|
+
help="name the installed rules in scope (default on); a "
|
|
292
|
+
"rate read without them is not attributable to wording")
|
|
293
|
+
args = p.parse_args(argv)
|
|
294
|
+
|
|
295
|
+
rows = load_set(args.set)
|
|
296
|
+
call_rows, no_call_rows = halves(rows)
|
|
297
|
+
if args.dry_run:
|
|
298
|
+
print("%d prompts: %d should-call, %d should-NOT-call, %d run(s) each"
|
|
299
|
+
% (len(rows), len(call_rows), len(no_call_rows), args.runs))
|
|
300
|
+
print("floor(call) >= %.2f ceiling(false-call) <= %.2f"
|
|
301
|
+
% (args.floor_call, args.ceiling_false_call))
|
|
302
|
+
for r in rows:
|
|
303
|
+
print(" %-24s %-8s %s" % (r["id"], r["expect"], r["prompt"][:56]))
|
|
304
|
+
return 0
|
|
305
|
+
|
|
306
|
+
if not claude_available():
|
|
307
|
+
# Degrade the way every other opt-in eval does: say what is missing and
|
|
308
|
+
# exit 0, so a contributor without a host is not handed a red build for
|
|
309
|
+
# a tier that is deliberately outside `check`.
|
|
310
|
+
print("no host available — this tier drives the `claude` CLI and it is "
|
|
311
|
+
"not on PATH. Install it, or run with --dry-run.")
|
|
312
|
+
return 0
|
|
313
|
+
if os.environ.get("BOOST_NO_AI"):
|
|
314
|
+
print("BOOST_NO_AI is set — refusing to spend tokens.")
|
|
315
|
+
return 0
|
|
316
|
+
|
|
317
|
+
if args.report_context:
|
|
318
|
+
_print_context()
|
|
319
|
+
|
|
320
|
+
observed: dict[str, list[bool]] = {}
|
|
321
|
+
for r in rows:
|
|
322
|
+
for _ in range(max(1, args.runs)):
|
|
323
|
+
events = run_claude(r["prompt"], args.timeout)
|
|
324
|
+
if events is None:
|
|
325
|
+
continue
|
|
326
|
+
observed.setdefault(r["id"], []).append(called_boost(events))
|
|
327
|
+
|
|
328
|
+
metrics = score_host(rows, observed)
|
|
329
|
+
reasons = verdict(metrics, args.floor_call, args.ceiling_false_call)
|
|
330
|
+
if args.json:
|
|
331
|
+
print(json.dumps({"host": "claude-code", "metrics": metrics,
|
|
332
|
+
"failures": reasons}, indent=2))
|
|
333
|
+
else:
|
|
334
|
+
_report("claude-code", rows, metrics, reasons)
|
|
335
|
+
return 1 if reasons else 0
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
if __name__ == "__main__":
|
|
339
|
+
sys.exit(main())
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Tier 3 tool-call behaviour set. One JSON object per line; `#` comments allowed.
|
|
2
|
+
#
|
|
3
|
+
# TWO HALVES, and the second is what makes the first honest. A tier that scores
|
|
4
|
+
# call rate alone rewards making boost maximally assertive — the exact capture
|
|
5
|
+
# `core/mcp.py`'s INSTRUCTIONS are written to avoid, and the same hole boost
|
|
6
|
+
# already found one tier down when it floored recall without hit@1.
|
|
7
|
+
#
|
|
8
|
+
# expect: "call" the request carries a signal boost's own text names --
|
|
9
|
+
# more than one file, or something outliving the session
|
|
10
|
+
# expect: "no-call" drawn from the SHIPPED skip list: "a question, a
|
|
11
|
+
# one-line edit, or a command you were just handed"
|
|
12
|
+
#
|
|
13
|
+
# `signals` records WHICH shipped trigger the row is exercising, so a failing
|
|
14
|
+
# row names the sentence to argue with rather than just a number. Keep every
|
|
15
|
+
# prompt free of the word "boost" and of any tool name: naming the tool tests
|
|
16
|
+
# obedience, not judgement, and would score a surface that never persuades.
|
|
17
|
+
{"id": "call-new-subsystem", "expect": "call", "signals": ["new subsystem", "outlives the session"], "prompt": "I'm adding a background job queue to this Python service. Set up the worker, the retry policy and the dead-letter handling."}
|
|
18
|
+
{"id": "call-ci-job", "expect": "call", "signals": ["a CI job", "outlives the session"], "prompt": "Add a GitHub Actions workflow that runs our tests on every pull request and blocks merge when they fail."}
|
|
19
|
+
{"id": "call-convention", "expect": "call", "signals": ["a convention", "outlives the session"], "prompt": "We want conventional commit messages enforced across the team from now on. Set that up."}
|
|
20
|
+
{"id": "call-code-review", "expect": "call", "signals": ["nameable task"], "prompt": "Set up a code review process for this repo."}
|
|
21
|
+
{"id": "call-dependency-choice", "expect": "call", "signals": ["a dependency", "architecture decision"], "prompt": "Pick an ORM for this new FastAPI service and wire up the first model and migration."}
|
|
22
|
+
{"id": "call-flaky-tests", "expect": "call", "signals": ["nameable task", "more than one file"], "prompt": "Our test suite fails maybe one run in five, different tests each time. Track it down and fix it."}
|
|
23
|
+
{"id": "call-linter-config", "expect": "call", "signals": ["environment and tooling config", "outlives the session"], "prompt": "Configure linting and formatting for this TypeScript monorepo so everyone gets the same result."}
|
|
24
|
+
{"id": "call-migration", "expect": "call", "signals": ["nameable task", "more than one file"], "prompt": "Write a database migration that splits the users table into users and profiles, with a backfill."}
|
|
25
|
+
{"id": "no-call-question", "expect": "no-call", "signals": ["a question"], "prompt": "What is the difference between a Python list and a tuple?"}
|
|
26
|
+
{"id": "no-call-one-line", "expect": "no-call", "signals": ["a one-line edit"], "prompt": "In README.md, change the word 'reciept' to 'receipt'."}
|
|
27
|
+
{"id": "no-call-handed-command", "expect": "no-call", "signals": ["a command you were just handed"], "prompt": "Run `git status` and tell me what branch I'm on."}
|
|
28
|
+
{"id": "no-call-explain-code", "expect": "no-call", "signals": ["a question"], "prompt": "Explain what this regex does: ^(?=.*[A-Z])(?=.*\\d).{8,}$"}
|
|
29
|
+
{"id": "no-call-arithmetic", "expect": "no-call", "signals": ["a question"], "prompt": "If a request takes 240 ms and we make 12 of them in parallel across 4 workers, roughly how long does the batch take?"}
|
|
30
|
+
{"id": "no-call-rename-var", "expect": "no-call", "signals": ["a one-line edit"], "prompt": "Rename the variable `tmp` to `buffer` on line 42 of parser.py."}
|
|
31
|
+
{"id": "no-call-read-file", "expect": "no-call", "signals": ["a command you were just handed"], "prompt": "Show me the first 20 lines of pyproject.toml."}
|
|
32
|
+
{"id": "no-call-typo-commit", "expect": "no-call", "signals": ["a one-line edit"], "prompt": "Fix the typo in the docstring of `parse_args` — it says 'arguemnts'."}
|