boost-skill-cli 1.2.152__tar.gz → 1.2.153__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.152 → boost_skill_cli-1.2.153}/CLAUDE.md +18 -3
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/Makefile +8 -3
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +11 -5
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +1 -1
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap.html +14 -53
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_corpus_prose.py +215 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitattributes +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitignore +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale.ini +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/DCO +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/LICENSE +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/compact.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/prereq.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/codecov.yml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/index.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/index.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/noxfile.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/setup.cfg +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/boost.css +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/boost.js +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/demo.html +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks_codex.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_identifier_columns.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_keyed_no_store_hint.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_canary_deps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog_distinct.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_claude_settings_codex.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_coverage_gate_prose.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_model_unavailable.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dry_run_parity.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_outranking.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_corpus_bodies.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_query_sets.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_first_run_pointer.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_help_contracts.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hookhost_codex.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_lighthouse_budgets.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output_table_drop.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output_table_whole.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_prereq.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_quickstart_readiness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_extra_hint.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_read_text_arg.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_repo_root_guard.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sdist_contents.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_carry_forward.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_lost_lock.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_upstream_path.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/visual_check.mjs +0 -0
|
@@ -122,9 +122,24 @@ collapse and homonyms do not. Relevance is still decided by name (or by content
|
|
|
122
122
|
class when a golden row pins an `exemplar`), so the sets can migrate a row at a
|
|
123
123
|
time.
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
The floors are fixed absolute values, and the uniform "~10%" margin this file
|
|
126
|
+
claimed from 170d52c0 (2026-07-31) onward was never one of them. They sit under
|
|
127
|
+
their measured values (7.2% / 17.3% / 14.3% / 11.5%), recall@k the tightest —
|
|
128
|
+
loose enough that upstream drift can't flake the build, tight enough to catch a
|
|
129
|
+
collapse, but a 2.39x spread rather than one number, and the tightest of them
|
|
130
|
+
is worth 5.5 queries of 91. The spread is the design working, not drifting: the
|
|
131
|
+
monthly refresh re-measures the row and deliberately leaves the floors where
|
|
132
|
+
they are, so every refresh that improves a metric widens that metric's margin.
|
|
133
|
+
Floors are re-stated after a refresh, never re-derived — a floor that follows
|
|
134
|
+
its own measurement ratchets down with the corpus and ends up measuring the
|
|
135
|
+
corpus. `test_corpus_prose.py` holds every margin above to `baseline.json`, to
|
|
136
|
+
`golden.jsonl` and to the argv of the `Makefile`'s own `eval` recipe — read
|
|
137
|
+
through `eval_retrieval.build_parser()` rather than matched, because the
|
|
138
|
+
tightest floor is `--fail-under` and not a `--floor`, and because a tab-indented
|
|
139
|
+
comment is argv to a regex and a no-op to make. So a refresh that moves the row
|
|
140
|
+
fails the build until someone writes the new margin down and looks at it.
|
|
141
|
+
Regression-vs-baseline stays relaxed (`--regression-eps 1`), so the absolute
|
|
142
|
+
floors are the real gate.
|
|
128
143
|
|
|
129
144
|
**Every row of `taps.txt` pins a commit SHA**, and `scripts/eval_corpus.py`
|
|
130
145
|
checks each clone out at it — most of the corpus is one third-party repo, so an
|
|
@@ -127,9 +127,14 @@ dist-check:
|
|
|
127
127
|
# which is what tests/eval/baseline.json records at the current pins. The
|
|
128
128
|
# second set is what a real user sees, so flooring against the first was
|
|
129
129
|
# measuring the corpus rather than the retrieval — three of the four old floors
|
|
130
|
-
# fail outright once the corpus is realistic.
|
|
131
|
-
#
|
|
132
|
-
#
|
|
130
|
+
# fail outright once the corpus is realistic. The four floors sit a margin
|
|
131
|
+
# under their measured values (7.2% / 17.3% / 14.3% / 11.5%), recall@k the
|
|
132
|
+
# tightest at 5.5 queries of 91: loose enough that a query or two cannot flake
|
|
133
|
+
# the build, tight enough that a collapse fails it. That margin is not uniform
|
|
134
|
+
# and never was -- it is a 2.39x spread, because the row moves with every
|
|
135
|
+
# monthly refresh and the floors deliberately do not. So it is quoted rather
|
|
136
|
+
# than asserted, and tests/unit/test_corpus_prose.py fails until the new
|
|
137
|
+
# spread is written here. Regression-vs-baseline stays relaxed
|
|
133
138
|
# (--regression-eps 1); the absolute floors are the real gate. (It was relaxed
|
|
134
139
|
# while the corpus tracked upstream HEAD. tests/eval/taps.txt pins a commit per
|
|
135
140
|
# row now, so that is no longer the reason.)
|
|
@@ -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.153'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 153)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: eval-floor-calibration-stale-after-pin-refresh
|
|
3
3
|
board: code
|
|
4
|
-
section:
|
|
5
|
-
status:
|
|
4
|
+
section: shipped
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Retrieval eval
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 3
|
|
10
10
|
note: CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…
|
|
11
11
|
order: 210
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/eval-floor-calibration
|
|
13
|
+
pr: "993"
|
|
14
14
|
title: The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%
|
|
15
15
|
---
|
|
16
16
|
<b>Measured.</b> The required gate's recall floor has 5.52 queries of headroom out of 91 ((0.8407 - 0.78) x 91), against the 6.55 that CLAUDE.md's published 0.852 implies — one golden query of margin the documentation says exists and does not, because commit cbc0a58b re-baselined the corpus to 10,731 entries and left CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852.
|
|
@@ -32,7 +32,7 @@ title: The 2026-09-01 pin refresh moved the corpus and re-baselined it, but noth
|
|
|
32
32
|
|
|
33
33
|
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
34
34
|
|
|
35
|
-
1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.
|
|
35
|
+
1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.3% / 14.4% / 12.4%, a 1.60x spread. (This line first read 9.6% / 15.4% / 14.3% / 12.4%; recomputing from 170d52c0's own <code>baseline.json</code> and <code>Makefile</code> gives 9.5796 / 15.3488 / 14.3831 / 12.4408, so two digits were transposed.) The spread widened twice and by two different mechanisms, only one of which is a refresh: 1.60x at 170d52c0, 1.82x at d8da2e71 — <em>de-duplicate the ranked list by body, not by name</em>, a ranker correctness fix (#411) — and 2.39x at the 2026-09-01 refresh cbc0a58b. Correct statement: "the floors were never uniformly ~10% under, and nothing since has narrowed the spread."
|
|
36
36
|
|
|
37
37
|
2. "not the 6.60 the documented number implies" — 6.60 matches nothing. CLAUDE.md's published 0.852 gives (0.852-0.78) x 91 = 6.55 queries; the unrounded pre-refresh baseline 0.8406... gives 6.52. Use 6.55. (The optimism is therefore ~1.03 queries, not 1.1.)
|
|
38
38
|
|
|
@@ -53,3 +53,9 @@ SCOPE LIMIT #2: the shared $TMPDIR/eval-home is materialised at the PRE-refresh
|
|
|
53
53
|
<b>Why it is worth doing.</b> The "~10% under" statement is the entire published justification for where the four floors sit — CLAUDE.md calls it "loose enough that upstream drift can't flake the build, tight enough to catch a collapse." That is a claim about a margin, and the margin now differs 2.4x across the four metrics with recall the tightest at 5.52 queries out of 91. Because the monthly refresh re-baselines but never re-derives or re-states the floors, and prompts a human only when the refreshed corpus FAILS, every future passing refresh decays the calibration further with no signal at all.
|
|
54
54
|
|
|
55
55
|
<em>Found by an automated audit of retrieval/eval quality, the search & browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em>
|
|
56
|
+
|
|
57
|
+
<b>What the fix turned out to be, and what the card got wrong about scope.</b> Half of this card was already fixed when it was picked up. The figure half — "CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852" — is stale: <code>tests/unit/test_corpus_prose.py</code> now holds every one of those figures to <code>taps.txt</code>'s own rows and to <code>baseline.json</code>, so CLAUDE.md reads 10,731 and 0.841 / 0.484 / 0.607 / 0.655 and cannot drift again. The card's line references (CLAUDE.md:67,84) no longer point at anything. What survived is the card's own stated core, and it is the harder half: the <em>characterisation</em> "~10% under" was prose, was false the day it was written, and no mechanism touched it.
|
|
58
|
+
|
|
59
|
+
<b>The remedy is the card's own, not the one the finding's wording invites.</b> No floor moves and no headroom gate is added — a floor that follows its own measurement ends up measuring the corpus, which is exactly what 170d52c0 warned about. Instead the true margin is written down at measured precision (7.2% / 17.3% / 14.3% / 11.5%, a 2.39x spread, recall@k binding at 5.5 queries of 91) and held by the <code>QUOTED</code> mechanism that already holds the figures beside it. A refresh that moves the row now fails the build until a human restates the margin and looks at it — which is the signal the card says is missing, without touching the gate it says not to touch.
|
|
60
|
+
|
|
61
|
+
<b>Why the required set drifted and the advisory set did not.</b> The contrast is the tell. <code>make eval-natural</code>'s floors really are ~10% under (11.1 / 12.5 / 11.4 / 11.2, a 1.12x spread) because <code>tests/unit/test_eval_corpus.py</code> moves them with the row in both directions. The required set, where the claim actually matters, had no such mechanism — so the one place the margin was load-bearing is the one place nothing checked it.
|
|
@@ -52,6 +52,6 @@ WHY Med, NOT High — two facts I verified that cap the blast radius: 1. CI cann
|
|
|
52
52
|
|
|
53
53
|
SCOPE LIMITS OF MY REPRO — a card author must not blur these: - I measured the FULLY-missing case. The "half-materialised tap tree" phrasing in <code>why_it_matters</code> was NOT measured by me; degradation is presumably proportional but is unverified.
|
|
54
54
|
|
|
55
|
-
<b>Why it is worth doing.</b> The gate whose whole job is to say "retrieval still works over a real corpus" returns a confident, better-than-baseline PASS over a corpus that is name+description only — 95% of its text absent. A developer who reclaims the 265 MB <code>repos/</code> tree, or whose tap tree is half-materialised, gets four green floors that attest to nothing, and the greener number makes the loss look like an improvement rather than a defect. Every downstream floor calibration
|
|
55
|
+
<b>Why it is worth doing.</b> The gate whose whole job is to say "retrieval still works over a real corpus" returns a confident, better-than-baseline PASS over a corpus that is name+description only — 95% of its text absent. A developer who reclaims the 265 MB <code>repos/</code> tree, or whose tap tree is half-materialised, gets four green floors that attest to nothing, and the greener number makes the loss look like an improvement rather than a defect. Every downstream floor calibration is stated against 0.473/0.605/0.657, which the body-less run clears by 48%/33%/25% instead. (This line quoted CLAUDE.md's "each floor sits ~10% under its measured value" as the live convention. That sentence was retired in PR #993: the margins were never uniform — 7.2% / 17.3% / 14.3% / 11.5% at the current pins — and CLAUDE.md now quotes all four and holds them.)
|
|
56
56
|
|
|
57
57
|
<em>Found by an automated audit of retrieval/eval quality, the search & browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em>
|
|
@@ -140,9 +140,9 @@
|
|
|
140
140
|
<section class="block reveal">
|
|
141
141
|
<div class="stats">
|
|
142
142
|
<!-- ROADMAP:stats -->
|
|
143
|
-
<div class="stat"><b>
|
|
143
|
+
<div class="stat"><b>25</b><span>Shipped</span></div>
|
|
144
144
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
145
|
-
<div class="stat"><b>
|
|
145
|
+
<div class="stat"><b>76</b><span>Planned</span></div>
|
|
146
146
|
<div class="stat"><b>505</b><span>Loop finds</span></div>
|
|
147
147
|
<!-- /ROADMAP:stats -->
|
|
148
148
|
</div>
|
|
@@ -420,6 +420,18 @@
|
|
|
420
420
|
</div>
|
|
421
421
|
</article>
|
|
422
422
|
|
|
423
|
+
<article class="cap rcard" id="eval-floor-calibration-stale-after-pin-refresh">
|
|
424
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
425
|
+
<h3>The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%</h3>
|
|
426
|
+
<p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md">Write-up · eval-floor-calibration-stale-after-pin-refresh.md</a></p>
|
|
427
|
+
<div class="meta">
|
|
428
|
+
<span class="m">Complexity <b>M</b></span>
|
|
429
|
+
<span class="m">Impact <b>Med</b></span>
|
|
430
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
431
|
+
<span class="m">CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…</span>
|
|
432
|
+
</div>
|
|
433
|
+
</article>
|
|
434
|
+
|
|
423
435
|
<article class="cap rcard" id="install-cannot-tell-a-skill-needs-another-one">
|
|
424
436
|
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Install · Research</span></div>
|
|
425
437
|
<h3>Research: how <code>boost install</code> could tell that a skill needs something else installed first</h3>
|
|
@@ -1208,57 +1220,6 @@ NOT ALREADY CARDED, but read the existing card first.
|
|
|
1208
1220
|
</div>
|
|
1209
1221
|
</article>
|
|
1210
1222
|
|
|
1211
|
-
<article class="cap rcard" id="eval-floor-calibration-stale-after-pin-refresh">
|
|
1212
|
-
<div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
1213
|
-
<h3>The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%</h3>
|
|
1214
|
-
<p><b>Measured.</b> The required gate's recall floor has 5.52 queries of headroom out of 91 ((0.8407 - 0.78) x 91), against the 6.55 that CLAUDE.md's published 0.852 implies — one golden query of margin the documentation says exists and does not, because commit cbc0a58b re-baselined the corpus to 10,731 entries and left CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852.
|
|
1215
|
-
|
|
1216
|
-
<b>Reproduce it.</b>
|
|
1217
|
-
|
|
1218
|
-
<code>cd <repo></code><br>
|
|
1219
|
-
<code># 1. the refresh commit moved pins + baseline and nothing else</code><br>
|
|
1220
|
-
<code>git show cbc0a58b --stat --format='%h %ad %s' --date=short</code><br>
|
|
1221
|
-
<code>git show cbc0a58b -- tests/eval/baseline.json | grep -E '^[-+].*(recall|hit@1|MRR|nDCG)'</code><br>
|
|
1222
|
-
<code># 2. what taps.txt records NOW vs what the docs claim</code><br>
|
|
1223
|
-
<code>awk '!/^#/ && NF>=3 {s+=$3; n++} END {print "rows:", n, " recorded total entries:", s}' tests/eval/taps.txt</code><br>
|
|
1224
|
-
<code>grep -n '10,152\|0\.852' CLAUDE.md tests/eval/taps.txt scripts/eval_corpus.py</code><br>
|
|
1225
|
-
<code># 3. recompute the floor gaps against the committed post-refresh baseline</code><br>
|
|
1226
|
-
<code>python3 -c "</code><br>
|
|
1227
|
-
<code>import json</code><br>
|
|
1228
|
-
<code>b=json.load(open('tests/eval/baseline.json'))['sets']['golden.jsonl@a0617183f8c9']['engines']['BM25 full-content']</code><br>
|
|
1229
|
-
…
|
|
1230
|
-
|
|
1231
|
-
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
1232
|
-
|
|
1233
|
-
1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.4% / 14.3% / 12.4%, a 1.60x spread. The refresh WIDENED a spread (1.60x -> 1.82x -> 2.39x); it did not create one. Correct statement: "the floors were never uniformly ~10% under, and the refresh widened the spread from 1.82x to 2.39x."
|
|
1234
|
-
|
|
1235
|
-
2. "not the 6.60 the documented number implies" — 6.60 matches nothing. CLAUDE.md's published 0.852 gives (0.852-0.78) x 91 = 6.55 queries; the unrounded pre-refresh baseline 0.8406... gives 6.52. Use 6.55. (The optimism is therefore ~1.03 queries, not 1.1.)
|
|
1236
|
-
|
|
1237
|
-
3. "2.4x spread" -> 2.39x (rounding, harmless, but state it as 2.39x on a card).
|
|
1238
|
-
|
|
1239
|
-
4. DIRECTION OF DRIFT IS NOT UNIFORM. "every future passing refresh decays the calibration further" is true only of the SPREAD. This refresh moved two floors tighter (recall 8.4%->7.2%, nDCG 11.8%->11.5%) and two LOOSER (hit@1 15.3%->17.3%, MRR 14.0%->14.3%). A card must not say "the floors tightened."
|
|
1240
|
-
|
|
1241
|
-
5.
|
|
1242
|
-
|
|
1243
|
-
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
1244
|
-
|
|
1245
|
-
SCOPE THE REMEDY CAREFULLY — the finding's phrase "nothing re-derives the floors" invites exactly the fix 170d52c0 warns against: auto-moving floors on every refresh ("Lowering a threshold deserves suspicion... a floor calibrated on an unrepresentative corpus measures the corpus"). The repo's design is deliberately fixed absolute floors with a relaxed regression-vs-baseline. The CONFIRMED defect is narrower and should be carded as such: the measured values and the "~10%" characterisation are stated in seven places across four files (CLAUDE.md:67,84; tests/eval/taps.txt:25,43; scripts/eval_corpus.py:30,108 and the runtime-printed operator message at :331-334), nothing re-states or guards them after a PASSING refresh, and no test asserts any of them.
|
|
1246
|
-
|
|
1247
|
-
SCOPE LIMIT OF MY REPRO #1: I did not re-measure 0.8407 / 0.4835 / 0.6065 / 0.6552. Those are the committed baseline written by cbc0a58b — which is also the finder's only source. Verifying them empirically needs a re-tap at the new pins, which is forbidden here (shared read-only corpus) and needs network. Every derived percentage in this verification inherits that.
|
|
1248
|
-
|
|
1249
|
-
SCOPE LIMIT #2: the shared $TMPDIR/eval-home is materialised at the PRE-refresh pins — live total 10,152 vs taps.txt's recorded 10,731, with the same 10 taps PIN-DIFFERS. <code>make eval</code> against it would trip eval_corpus.py's CORPUS DRIFT check, not run the gate.
|
|
1250
|
-
|
|
1251
|
-
<b>Why it is worth doing.</b> The "~10% under" statement is the entire published justification for where the four floors sit — CLAUDE.md calls it "loose enough that upstream drift can't flake the build, tight enough to catch a collapse." That is a claim about a margin, and the margin now differs 2.4x across the four metrics with recall the tightest at 5.52 queries out of 91. Because the monthly refresh re-baselines but never re-derives or re-states the floors, and prompts a human only when the refreshed corpus FAILS, every future passing refresh decays the calibration further with no signal at all.
|
|
1252
|
-
|
|
1253
|
-
<em>Found by an automated audit of retrieval/eval quality, the search & browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
|
|
1254
|
-
<div class="meta">
|
|
1255
|
-
<span class="m">Complexity <b>M</b></span>
|
|
1256
|
-
<span class="m">Impact <b>Med</b></span>
|
|
1257
|
-
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
1258
|
-
<span class="m">CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…</span>
|
|
1259
|
-
</div>
|
|
1260
|
-
</article>
|
|
1261
|
-
|
|
1262
1223
|
<article class="cap rcard" id="eval-gate-scores-a-body-less-corpus">
|
|
1263
1224
|
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
1264
1225
|
<h3><code>make eval</code> scores a corpus with every SKILL.md body missing, reports all four floors PASS, and scores HIGHER than the real corpus</h3>
|
|
@@ -31,6 +31,7 @@ import pytest
|
|
|
31
31
|
_ROOT = Path(__file__).resolve().parents[2]
|
|
32
32
|
_TAPS = _ROOT / "tests" / "eval" / "taps.txt"
|
|
33
33
|
_BASELINE = _ROOT / "tests" / "eval" / "baseline.json"
|
|
34
|
+
_GOLDEN = _ROOT / "tests" / "eval" / "golden.jsonl"
|
|
34
35
|
|
|
35
36
|
pytestmark = pytest.mark.skipif(
|
|
36
37
|
not (_TAPS.exists() and _BASELINE.exists()),
|
|
@@ -48,6 +49,12 @@ QUOTED = (
|
|
|
48
49
|
("CLAUDE.md", "over the six alone ({targets} entries"),
|
|
49
50
|
("CLAUDE.md", "**{bm25}**"),
|
|
50
51
|
("CLAUDE.md", "recorded BM25 row ({natural_bm25})"),
|
|
52
|
+
("CLAUDE.md", "under their measured values ({headroom}), {binding} the tightest"),
|
|
53
|
+
("CLAUDE.md", "a {spread} spread rather than one number"),
|
|
54
|
+
("CLAUDE.md", "the tightest of them is worth {slack}"),
|
|
55
|
+
("Makefile", "under their measured values ({headroom}), {binding} the"),
|
|
56
|
+
("Makefile", "tightest at {slack}:"),
|
|
57
|
+
("Makefile", "it is a {spread} spread"),
|
|
51
58
|
("Makefile", "Over the six ({targets} entries)"),
|
|
52
59
|
("Makefile", "over twenty it scores {bm25}"),
|
|
53
60
|
("Makefile", "records ({natural_bm25} at the current pins"),
|
|
@@ -122,6 +129,9 @@ def _figures() -> dict[str, str]:
|
|
|
122
129
|
# The rows above the scale divider are the ones holding golden targets.
|
|
123
130
|
head = text.split("\n# --- scale", 1)[0]
|
|
124
131
|
bm25 = _bm25()
|
|
132
|
+
floors = _floors()
|
|
133
|
+
gaps = _headroom(bm25, floors)
|
|
134
|
+
tightest = _METRICS[gaps.index(min(gaps))]
|
|
125
135
|
return {
|
|
126
136
|
"total": f"{sum(_counts(text)):,}",
|
|
127
137
|
"targets": f"{sum(_counts(head)):,}",
|
|
@@ -130,6 +140,32 @@ def _figures() -> dict[str, str]:
|
|
|
130
140
|
# `make eval-natural`'s floors are calibrated on the figures quoted.
|
|
131
141
|
"natural_bm25": _four(_bm25("golden-natural.jsonl")),
|
|
132
142
|
"recall": "%.3f" % bm25["recall@k"],
|
|
143
|
+
# The margin each floor actually has, rather than the single "~10%"
|
|
144
|
+
# the prose asserted from 170d52c0 (2026-07-31) onward. It was never
|
|
145
|
+
# uniform: at that twenty-tap calibration the gaps were 9.6 / 15.3 /
|
|
146
|
+
# 14.4 / 12.4 (recomputed from 170d52c0's own baseline and Makefile —
|
|
147
|
+
# the roadmap card transposes two of those digits),
|
|
148
|
+
# and the monthly refresh widens the spread because it re-baselines the
|
|
149
|
+
# row and leaves the floors where they are, by design. Quoting the four
|
|
150
|
+
# separately is what makes that visible; holding them here is what
|
|
151
|
+
# makes a refresh restate them.
|
|
152
|
+
"headroom": " / ".join("%.1f%%" % g for g in gaps),
|
|
153
|
+
# Which floor is closest to the row, and so the one a corpus move
|
|
154
|
+
# actually trips. A judgement stated beside held figures has to be held
|
|
155
|
+
# too, or it is the next sentence to go quietly stale.
|
|
156
|
+
"binding": tightest,
|
|
157
|
+
# How wide the spread is. The claim being replaced was that there was
|
|
158
|
+
# no spread, so the number that refutes it has to be held like the
|
|
159
|
+
# rest -- an unheld "2.4x" beside a held "7.2% / 17.3%" is the same
|
|
160
|
+
# defect one sentence along. Two decimals, not one: the verification
|
|
161
|
+
# behind this card rejected "2.4x" for "2.39x", and a figure quoted
|
|
162
|
+
# to the precision it was measured at cannot be argued with.
|
|
163
|
+
"spread": "%.2fx" % (max(gaps) / min(gaps)),
|
|
164
|
+
# The binding floor's margin in queries rather than percent. A
|
|
165
|
+
# percentage does not say whether a margin is one flaky query or ten;
|
|
166
|
+
# over this set, 1 query is 1.1 points of recall@k.
|
|
167
|
+
"slack": "%.1f queries of %d" % (
|
|
168
|
+
(bm25[tightest] - floors[tightest]) * _queries(), _queries()),
|
|
133
169
|
}
|
|
134
170
|
|
|
135
171
|
|
|
@@ -148,6 +184,99 @@ def _max_share() -> float:
|
|
|
148
184
|
return float(mod.MAX_ROW_SHARE)
|
|
149
185
|
|
|
150
186
|
|
|
187
|
+
#: The Makefile recipe whose `--floor` arguments the required gate runs under.
|
|
188
|
+
#: Only this one is parsed: `tests/unit/test_eval_corpus.py` already holds the
|
|
189
|
+
#: Makefile, ci.yml and eval-corpus-refresh.yml to one argv, so a floor read
|
|
190
|
+
#: here is the floor all three use.
|
|
191
|
+
_EVAL_RECIPE = "eval"
|
|
192
|
+
#: The four metrics, in the order the prose quotes them.
|
|
193
|
+
_METRICS = ("recall@k", "hit@1", "MRR", "nDCG@k")
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def _argv_reader():
|
|
197
|
+
"""`tests/unit/test_eval_corpus.py`, loaded for its argv reader.
|
|
198
|
+
|
|
199
|
+
The floors have to be read the way the gate reads them, and the reader
|
|
200
|
+
already exists one file over: `_recipe` slices the Makefile to one
|
|
201
|
+
target, `_invocation` joins line continuations, drops comment lines and
|
|
202
|
+
shlex-splits, and `_meaning` hands the words to
|
|
203
|
+
`eval_retrieval.build_parser()` itself.
|
|
204
|
+
|
|
205
|
+
Re-implementing that here with a regex put a hole in this very check
|
|
206
|
+
twice. First an unindented comment block, which sits *above* the next
|
|
207
|
+
target, so slicing to `eval-natural:` swallowed all of its prose. Then —
|
|
208
|
+
after that was fixed by taking tab-indented lines only — a **tab-indented
|
|
209
|
+
comment inside the recipe**, which make ignores and a regex does not:
|
|
210
|
+
|
|
211
|
+
eval:
|
|
212
|
+
$(PY) scripts/eval_retrieval.py ... --floor hit@1=0.30 \\
|
|
213
|
+
# relaxed from --floor hit@1=0.40
|
|
214
|
+
|
|
215
|
+
make runs the 0.30 gate; a last-match-wins regex reports 0.40, so the
|
|
216
|
+
published margin is held to a floor nothing enforces and nothing is red.
|
|
217
|
+
A third spelling was waiting behind both: argparse accepts
|
|
218
|
+
`--fail-under=0.60`, and a regex keyed on whitespace never sees it.
|
|
219
|
+
Delegating cures all three at once, and any fourth, because the thing
|
|
220
|
+
doing the parsing is the parser.
|
|
221
|
+
|
|
222
|
+
Loaded by path rather than imported by name, so this does not depend on
|
|
223
|
+
`tests/unit` being on `sys.path`, and under a private module name so it
|
|
224
|
+
cannot collide with pytest's own import of the same file.
|
|
225
|
+
"""
|
|
226
|
+
spec = importlib.util.spec_from_file_location(
|
|
227
|
+
"_corpus_prose_argv", _ROOT / "tests" / "unit" / "test_eval_corpus.py")
|
|
228
|
+
assert spec and spec.loader
|
|
229
|
+
mod = importlib.util.module_from_spec(spec)
|
|
230
|
+
spec.loader.exec_module(mod)
|
|
231
|
+
return mod
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def _floors_in(body: str) -> dict[str, float]:
|
|
235
|
+
"""The floors one recipe body passes, as the gate's own parser sees them.
|
|
236
|
+
|
|
237
|
+
recall@k is `--fail-under` rather than `--floor recall@k=`, which is why
|
|
238
|
+
it is lifted out separately here and why the prose below says "argv"
|
|
239
|
+
rather than naming one flag.
|
|
240
|
+
"""
|
|
241
|
+
reader = _argv_reader()
|
|
242
|
+
meaning = reader._meaning(reader._invocation(body))
|
|
243
|
+
floors = {"recall@k": float(meaning["fail_under"])}
|
|
244
|
+
floors.update({k: float(v) for k, v in meaning["floor"].items()})
|
|
245
|
+
return floors
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def _floors() -> dict[str, float]:
|
|
249
|
+
"""The required gate's four floors, read from the Makefile's own argv."""
|
|
250
|
+
reader = _argv_reader()
|
|
251
|
+
marker = "\n%s:" % _EVAL_RECIPE
|
|
252
|
+
count = (_ROOT / "Makefile").read_text(encoding="utf-8").count(marker)
|
|
253
|
+
assert count == 1, (
|
|
254
|
+
"`%s` is defined %d times; make runs the LAST recipe for a duplicated "
|
|
255
|
+
"target and this reads the first, so the margin below would be held "
|
|
256
|
+
"to floors the gate does not run" % (_EVAL_RECIPE, count))
|
|
257
|
+
return _floors_in(reader._recipe(_EVAL_RECIPE))
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def _headroom(row: dict[str, float], floors: dict[str, float]) -> list[float]:
|
|
261
|
+
"""How far under the measured row each floor sits, as a percentage."""
|
|
262
|
+
return [(row[m] - floors[m]) / row[m] * 100 for m in _METRICS]
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def _queries() -> int:
|
|
266
|
+
"""How many cases the gate actually scores.
|
|
267
|
+
|
|
268
|
+
`golden.jsonl` is 102 lines and eleven of them are not queries — ten
|
|
269
|
+
comment lines and one blank — so a line count is not the query count.
|
|
270
|
+
`eval_retrieval.load_golden` skips blanks and `#` after stripping, and
|
|
271
|
+
this must skip exactly what it skips. The blank is the case a naive
|
|
272
|
+
`startswith('#')` would miss. The prose quotes
|
|
273
|
+
this figure to turn a percentage into queries, which is the only form in
|
|
274
|
+
which "is that margin big enough" is answerable.
|
|
275
|
+
"""
|
|
276
|
+
return sum(1 for line in _GOLDEN.read_text(encoding="utf-8").splitlines()
|
|
277
|
+
if line.strip() and not line.strip().startswith("#"))
|
|
278
|
+
|
|
279
|
+
|
|
151
280
|
def _folded(text: str) -> str:
|
|
152
281
|
return re.sub(r"[ \t]*\n[ \t]*(?:#[ \t]*)?", " ", text)
|
|
153
282
|
|
|
@@ -258,6 +387,92 @@ class TestTheCheckItself:
|
|
|
258
387
|
assert _folded("# measures\n# 10,731 entries") == \
|
|
259
388
|
"# measures 10,731 entries"
|
|
260
389
|
|
|
390
|
+
def test_the_required_recipe_is_read_and_not_the_advisory_one(self):
|
|
391
|
+
# Two recipes carry `--fail-under` and `--floor hit@1=`: `eval`, which
|
|
392
|
+
# is the required gate, and `eval-natural`, which is advisory and
|
|
393
|
+
# whose floors DO follow the row. A bare search over the file returns
|
|
394
|
+
# whichever comes first, which is the right answer today by ordering
|
|
395
|
+
# alone. Slicing to the named recipe is what makes it the right answer
|
|
396
|
+
# tomorrow, so the slicing is what is pinned -- against the real
|
|
397
|
+
# Makefile, because that is the file the margin is held to.
|
|
398
|
+
reader = _argv_reader()
|
|
399
|
+
assert _floors() == _floors_in(reader._recipe("eval"))
|
|
400
|
+
assert _floors() != _floors_in(reader._recipe("eval-natural"))
|
|
401
|
+
|
|
402
|
+
def test_a_target_is_defined_once(self):
|
|
403
|
+
# make runs the LAST recipe for a duplicated target (it warns, then
|
|
404
|
+
# overrides), and every reader here takes the first. `_floors`
|
|
405
|
+
# refuses rather than reading a recipe make would not run; this pins
|
|
406
|
+
# that the real Makefile satisfies it, so the refusal stays a
|
|
407
|
+
# tripwire rather than a permanent failure.
|
|
408
|
+
text = (_ROOT / "Makefile").read_text(encoding="utf-8")
|
|
409
|
+
assert text.count("\n%s:" % _EVAL_RECIPE) == 1
|
|
410
|
+
|
|
411
|
+
def test_a_tab_indented_comment_is_not_argv(self):
|
|
412
|
+
# The second hole, found after the first was fixed. A comment line
|
|
413
|
+
# that starts with a TAB is inside the recipe and make ignores it --
|
|
414
|
+
# so a regex over the recipe text reads floors the gate does not run.
|
|
415
|
+
# Last-match-wins made it worse than a miss: the stale number won.
|
|
416
|
+
# Nothing looks broken either way, which is the whole problem.
|
|
417
|
+
body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 "
|
|
418
|
+
"--floor hit@1=0.40\n"
|
|
419
|
+
"\t# relaxed from --fail-under 0.90 --floor hit@1=0.99\n")
|
|
420
|
+
assert _floors_in(body) == {"recall@k": 0.78, "hit@1": 0.40}
|
|
421
|
+
|
|
422
|
+
def test_an_equals_form_flag_is_read(self):
|
|
423
|
+
# The third spelling, and the one a regex keyed on whitespace cannot
|
|
424
|
+
# see at all: argparse accepts `--flag=value`. A regex reported the
|
|
425
|
+
# OLD floor here -- a silent fail-open in the opposite direction from
|
|
426
|
+
# the comment, and the reason this reads argv through the gate's own
|
|
427
|
+
# parser instead of matching text.
|
|
428
|
+
body = ("\t$(PY) scripts/eval_retrieval.py --fail-under=0.60 "
|
|
429
|
+
"--floor=hit@1=0.20\n")
|
|
430
|
+
assert _floors_in(body) == {"recall@k": 0.60, "hit@1": 0.20}
|
|
431
|
+
|
|
432
|
+
def test_a_line_continuation_is_joined(self):
|
|
433
|
+
# The real recipe wraps the call over three lines, so a reader that
|
|
434
|
+
# did not join continuations would see one flag and miss the rest --
|
|
435
|
+
# and `_floors` would return fewer than four metrics, which
|
|
436
|
+
# `test_a_floor_that_is_not_read_fails_the_check` catches. Pinned
|
|
437
|
+
# here so the failure names the cause.
|
|
438
|
+
body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 \\\n"
|
|
439
|
+
"\t --floor hit@1=0.40 \\\n"
|
|
440
|
+
"\t --floor MRR=0.52\n")
|
|
441
|
+
assert _floors_in(body) == {
|
|
442
|
+
"recall@k": 0.78, "hit@1": 0.40, "MRR": 0.52}
|
|
443
|
+
|
|
444
|
+
def test_a_repeated_flag_is_read_the_way_argparse_reads_it(self):
|
|
445
|
+
# argparse takes the LAST occurrence of a repeated flag. Reading
|
|
446
|
+
# `--fail-under` with re.search took the first, so a duplicate would
|
|
447
|
+
# have held the prose to a number the gate does not use.
|
|
448
|
+
body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 "
|
|
449
|
+
"--fail-under 0.90 --floor MRR=0.52 --floor MRR=0.61\n")
|
|
450
|
+
assert _floors_in(body) == {"recall@k": 0.90, "MRR": 0.61}
|
|
451
|
+
|
|
452
|
+
def test_a_flag_the_gate_does_not_accept_fails_here(self):
|
|
453
|
+
# Reading argv through `eval_retrieval.build_parser()` means a flag
|
|
454
|
+
# the script would reject fails in this test rather than in CI. A
|
|
455
|
+
# regex would have shrugged and returned the floors it did match.
|
|
456
|
+
with pytest.raises(SystemExit):
|
|
457
|
+
_floors_in("\t$(PY) scripts/eval_retrieval.py --no-such-flag 1\n")
|
|
458
|
+
|
|
459
|
+
def test_a_floor_that_is_not_read_fails_the_check(self):
|
|
460
|
+
# `_floors` divides by figures it parsed out of argv, so a regex that
|
|
461
|
+
# silently stops matching would not raise -- it would drop a metric
|
|
462
|
+
# and quietly narrow what the prose is held to. Four floors are what
|
|
463
|
+
# the required gate passes; fewer means the parse broke.
|
|
464
|
+
floors = _floors()
|
|
465
|
+
assert sorted(floors) == sorted(_METRICS)
|
|
466
|
+
assert all(0 < v < 1 for v in floors.values())
|
|
467
|
+
|
|
468
|
+
def test_the_query_count_skips_the_header_comment(self):
|
|
469
|
+
# golden.jsonl carries ten comment lines and a blank, so a line
|
|
470
|
+
# count is eleven queries too many. `_queries` must skip exactly what
|
|
471
|
+
# `eval_retrieval.load_golden` skips, blank included.
|
|
472
|
+
lines = _GOLDEN.read_text(encoding="utf-8").splitlines()
|
|
473
|
+
assert _queries() == sum(1 for ln in lines if ln.startswith("{"))
|
|
474
|
+
assert _queries() < len(lines)
|
|
475
|
+
|
|
261
476
|
|
|
262
477
|
class TestTheShippedProse:
|
|
263
478
|
@pytest.mark.parametrize("path,template", QUOTED,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|