boost-skill-cli 1.2.102__tar.gz → 1.2.104__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.102/boost_skill_cli.egg-info → boost_skill_cli-1.2.104}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_skill_cli.egg-info/SOURCES.txt +41 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +59 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +53 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +57 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +59 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +53 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +48 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +50 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +52 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +55 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +57 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/explain-outline-has-no-cap.md +56 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +50 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +57 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/mcp-install-description-omits-antigravity.md +54 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +53 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +55 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +57 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +54 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +50 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +48 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +56 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +45 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +48 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +54 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/roadmap-boards-advertise-python-39.md +47 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +48 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +53 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +54 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +58 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +49 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +39 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +64 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +50 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +55 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +52 -0
- boost_skill_cli-1.2.104/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +54 -0
- boost_skill_cli-1.2.104/docs/roadmap.html +8936 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_roadmap.py +42 -22
- boost_skill_cli-1.2.104/scripts/mutation_weights.json +2057 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/page_budget.py +16 -10
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_roadmap_fresh.py +41 -33
- boost_skill_cli-1.2.102/docs/roadmap.html +0 -17166
- boost_skill_cli-1.2.102/scripts/mutation_weights.json +0 -1129
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.gitattributes +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.gitignore +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/.vale.ini +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/DCO +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/LICENSE +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/Makefile +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/codecov.yml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/index.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/examples/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/index.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/noxfile.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/setup.cfg +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/style/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/style/boost.css +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/style/boost.js +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/style/demo.html +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.102 → boost_skill_cli-1.2.104}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.104'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 104)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -321,6 +321,7 @@ docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-sa
|
|
|
321
321
|
docs/roadmap/items/audit-verify-findings.md
|
|
322
322
|
docs/roadmap/items/audit-who-findings.md
|
|
323
323
|
docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md
|
|
324
|
+
docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md
|
|
324
325
|
docs/roadmap/items/bm25-has-no-stemming.md
|
|
325
326
|
docs/roadmap/items/bm25-index-is-one-json-blob.md
|
|
326
327
|
docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md
|
|
@@ -359,6 +360,8 @@ docs/roadmap/items/completions-install-could-eat-your-rc-file.md
|
|
|
359
360
|
docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
|
|
360
361
|
docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md
|
|
361
362
|
docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md
|
|
363
|
+
docs/roadmap/items/corpus-refresh-updates-data-not-prose.md
|
|
364
|
+
docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md
|
|
362
365
|
docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md
|
|
363
366
|
docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md
|
|
364
367
|
docs/roadmap/items/crash-listing-branch-untested.md
|
|
@@ -368,6 +371,9 @@ docs/roadmap/items/delay-true-defeats-the-log-suppress.md
|
|
|
368
371
|
docs/roadmap/items/demo-cannot-open-its-own-pr.md
|
|
369
372
|
docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md
|
|
370
373
|
docs/roadmap/items/demo-workflow-cancels-other-prs.md
|
|
374
|
+
docs/roadmap/items/dense-kill-switch-has-no-reason-state.md
|
|
375
|
+
docs/roadmap/items/dense-no-key-guard-is-unreachable.md
|
|
376
|
+
docs/roadmap/items/dense-ready-but-embedder-cannot-run.md
|
|
371
377
|
docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md
|
|
372
378
|
docs/roadmap/items/dense-reindex-reuses-whole-taps.md
|
|
373
379
|
docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md
|
|
@@ -382,18 +388,25 @@ docs/roadmap/items/discover-searches-github-not-a-stale-sample.md
|
|
|
382
388
|
docs/roadmap/items/docsite-chrome-and-content-audit.md
|
|
383
389
|
docs/roadmap/items/docstring-coverage-interrogate.md
|
|
384
390
|
docs/roadmap/items/doctor-checks-rules-and-workflows.md
|
|
391
|
+
docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md
|
|
385
392
|
docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md
|
|
386
393
|
docs/roadmap/items/efficiency-registries-ponytail-caveman.md
|
|
387
394
|
docs/roadmap/items/end-of-options-guard-on-git-commands.md
|
|
395
|
+
docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md
|
|
388
396
|
docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md
|
|
389
397
|
docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md
|
|
398
|
+
docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md
|
|
399
|
+
docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md
|
|
390
400
|
docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md
|
|
391
401
|
docs/roadmap/items/eval-corpus-is-one-strangers-repo.md
|
|
392
402
|
docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md
|
|
393
403
|
docs/roadmap/items/eval-corpus-was-not-actually-pinned.md
|
|
394
404
|
docs/roadmap/items/eval-deduped-ranked-lists-by-name.md
|
|
405
|
+
docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md
|
|
406
|
+
docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md
|
|
395
407
|
docs/roadmap/items/eval-stats-could-never-publish.md
|
|
396
408
|
docs/roadmap/items/expanded-card-bodies-overflow.md
|
|
409
|
+
docs/roadmap/items/explain-outline-has-no-cap.md
|
|
397
410
|
docs/roadmap/items/extension-free-tests-core-dense-py.md
|
|
398
411
|
docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md
|
|
399
412
|
docs/roadmap/items/finish-mutation-hardening-across-core.md
|
|
@@ -403,6 +416,8 @@ docs/roadmap/items/framework-adapter-langgraph.md
|
|
|
403
416
|
docs/roadmap/items/framework-adapter-multi-agent.md
|
|
404
417
|
docs/roadmap/items/framework-adapters-boost-adapt.md
|
|
405
418
|
docs/roadmap/items/frontmatter-scalar-over-coercion.md
|
|
419
|
+
docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md
|
|
420
|
+
docs/roadmap/items/gated-golden-set-has-zero-exemplars.md
|
|
406
421
|
docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md
|
|
407
422
|
docs/roadmap/items/gemini-cli-agent-target.md
|
|
408
423
|
docs/roadmap/items/gemini-duplicate-skill-discovery.md
|
|
@@ -416,6 +431,7 @@ docs/roadmap/items/gstack-tap-first-then-coexistence.md
|
|
|
416
431
|
docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md
|
|
417
432
|
docs/roadmap/items/heal-deleted-links-it-never-made.md
|
|
418
433
|
docs/roadmap/items/html-validation-html-validate.md
|
|
434
|
+
docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md
|
|
419
435
|
docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md
|
|
420
436
|
docs/roadmap/items/install-docs-never-mentioned-upgrading.md
|
|
421
437
|
docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md
|
|
@@ -457,14 +473,17 @@ docs/roadmap/items/mcp-aware-skills.md
|
|
|
457
473
|
docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md
|
|
458
474
|
docs/roadmap/items/mcp-check-skills-before-starting-a-task.md
|
|
459
475
|
docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md
|
|
476
|
+
docs/roadmap/items/mcp-install-description-omits-antigravity.md
|
|
460
477
|
docs/roadmap/items/mcp-install-skips-the-injection-scan.md
|
|
461
478
|
docs/roadmap/items/mcp-launch-objc-fork-safety.md
|
|
462
479
|
docs/roadmap/items/mcp-one-benefit-nameable-task.md
|
|
463
480
|
docs/roadmap/items/mcp-register-names-server-before-env.md
|
|
464
481
|
docs/roadmap/items/mcp-search-before-reinventing.md
|
|
482
|
+
docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md
|
|
465
483
|
docs/roadmap/items/mcp-search-cost-was-understated.md
|
|
466
484
|
docs/roadmap/items/mcp-search-hid-which-ranking-ran.md
|
|
467
485
|
docs/roadmap/items/mcp-servers-ignore-install-scope.md
|
|
486
|
+
docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md
|
|
468
487
|
docs/roadmap/items/mcp-startup-self-harden-fork-safety.md
|
|
469
488
|
docs/roadmap/items/mcp-zero-setup-and-three-kinds.md
|
|
470
489
|
docs/roadmap/items/memoize-config-load-in-process.md
|
|
@@ -492,6 +511,7 @@ docs/roadmap/items/openssf-playbook.md
|
|
|
492
511
|
docs/roadmap/items/openssf-silver.md
|
|
493
512
|
docs/roadmap/items/osps-baseline-levels.md
|
|
494
513
|
docs/roadmap/items/package-metadata-validation-twine-check-friends.md
|
|
514
|
+
docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md
|
|
495
515
|
docs/roadmap/items/patch-coverage-gate-diff-cover.md
|
|
496
516
|
docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md
|
|
497
517
|
docs/roadmap/items/pathlib-exists-is-not-total.md
|
|
@@ -516,10 +536,18 @@ docs/roadmap/items/published-shards-have-no-consumer.md
|
|
|
516
536
|
docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md
|
|
517
537
|
docs/roadmap/items/python-floor-moves-to-312.md
|
|
518
538
|
docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md
|
|
539
|
+
docs/roadmap/items/quickstart-drops-incompatible-shard-status.md
|
|
540
|
+
docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md
|
|
541
|
+
docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md
|
|
542
|
+
docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md
|
|
519
543
|
docs/roadmap/items/ragas-unpin-when-upstream-ships.md
|
|
520
544
|
docs/roadmap/items/ranx-significance-monitor.md
|
|
545
|
+
docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md
|
|
546
|
+
docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md
|
|
521
547
|
docs/roadmap/items/readme-prune-and-search-guide.md
|
|
548
|
+
docs/roadmap/items/recommend-recomputes-its-columns-per-row.md
|
|
522
549
|
docs/roadmap/items/reconcile-the-theme-drift.md
|
|
550
|
+
docs/roadmap/items/refresh-strands-the-natural-set-baseline.md
|
|
523
551
|
docs/roadmap/items/refresh-the-marketing-surface.md
|
|
524
552
|
docs/roadmap/items/rel-time-tests-race-the-wall-clock.md
|
|
525
553
|
docs/roadmap/items/release-verifies-the-wrong-commit.md
|
|
@@ -530,6 +558,7 @@ docs/roadmap/items/required-checks-config-drift.md
|
|
|
530
558
|
docs/roadmap/items/resolve-vendored-duplicate-copies.md
|
|
531
559
|
docs/roadmap/items/retrieval-quality-eval-harness.md
|
|
532
560
|
docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md
|
|
561
|
+
docs/roadmap/items/roadmap-boards-advertise-python-39.md
|
|
533
562
|
docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md
|
|
534
563
|
docs/roadmap/items/roadmap-page-weight-grows-without-bound.md
|
|
535
564
|
docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md
|
|
@@ -548,7 +577,13 @@ docs/roadmap/items/scheduled-toolchain-lock-regeneration.md
|
|
|
548
577
|
docs/roadmap/items/scorecard-findings-triage.md
|
|
549
578
|
docs/roadmap/items/scripts-under-the-lint-gate.md
|
|
550
579
|
docs/roadmap/items/search-and-browse-visual-refresh.md
|
|
580
|
+
docs/roadmap/items/search-caps-the-two-copyable-identifiers.md
|
|
581
|
+
docs/roadmap/items/search-drops-symbol-language-queries-silently.md
|
|
582
|
+
docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md
|
|
583
|
+
docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md
|
|
551
584
|
docs/roadmap/items/search-never-notices-a-new-tap.md
|
|
585
|
+
docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md
|
|
586
|
+
docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md
|
|
552
587
|
docs/roadmap/items/second-type-checker-pyright.md
|
|
553
588
|
docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md
|
|
554
589
|
docs/roadmap/items/secret-scanning-gitleaks-push-protection.md
|
|
@@ -568,22 +603,26 @@ docs/roadmap/items/single-imperative-rule-extractor.md
|
|
|
568
603
|
docs/roadmap/items/single-tech-stack-prober.md
|
|
569
604
|
docs/roadmap/items/smart-rerank-pays-per-novel-query.md
|
|
570
605
|
docs/roadmap/items/split-oversized-command-modules.md
|
|
606
|
+
docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md
|
|
571
607
|
docs/roadmap/items/startup-and-import-time-budget-x-importtime.md
|
|
572
608
|
docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md
|
|
573
609
|
docs/roadmap/items/structured-json-log-output-mode.md
|
|
574
610
|
docs/roadmap/items/supply-chain-posture-openssf-scorecard.md
|
|
611
|
+
docs/roadmap/items/surface-dehyphenation-rationale-is-false.md
|
|
575
612
|
docs/roadmap/items/surface-every-docs-page-from-the-guide.md
|
|
576
613
|
docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md
|
|
577
614
|
docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md
|
|
578
615
|
docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md
|
|
579
616
|
docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md
|
|
580
617
|
docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md
|
|
618
|
+
docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md
|
|
581
619
|
docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md
|
|
582
620
|
docs/roadmap/items/taps-check-out-freight-they-never-index.md
|
|
583
621
|
docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md
|
|
584
622
|
docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md
|
|
585
623
|
docs/roadmap/items/the-shard-job-that-could-not-finish.md
|
|
586
624
|
docs/roadmap/items/theme-asset-linting-stylelint-eslint.md
|
|
625
|
+
docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md
|
|
587
626
|
docs/roadmap/items/tool-call-eval-tier.md
|
|
588
627
|
docs/roadmap/items/two-ci-controls-that-could-not-act.md
|
|
589
628
|
docs/roadmap/items/two-crashes-that-should-have-been-messages.md
|
|
@@ -591,8 +630,10 @@ docs/roadmap/items/typo-detection-codespell.md
|
|
|
591
630
|
docs/roadmap/items/typosquat-and-name-confusion-detection.md
|
|
592
631
|
docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md
|
|
593
632
|
docs/roadmap/items/uninstall-has-no-confirmation-prompt.md
|
|
633
|
+
docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md
|
|
594
634
|
docs/roadmap/items/untrack-generated-build-noise.md
|
|
595
635
|
docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md
|
|
636
|
+
docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md
|
|
596
637
|
docs/roadmap/items/update-advertises-a-flag-it-rejects.md
|
|
597
638
|
docs/roadmap/items/update-diff-before-apply.md
|
|
598
639
|
docs/roadmap/items/update-refreshed-rules-without-a-gate.md
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bm25-empty-tokenization-kills-catalog-fallback
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Retrieval eval
|
|
7
|
+
complexity: L
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: rag.tokenize (rag.py:88-91) keeps only [a-z0-9] runs of length >= 2, so "C++", "C#" a…
|
|
11
|
+
order: 200
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: A query made only of characters <code>tokenize</code> drops returns zero results, and the documented <code>catalog.search</code> fallback is unreachable — <code>boost search "C++"</code> finds nothing on a machine holding …
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> On the developer's own 440-tap install — with no BOOST_HOME override, where <code>dense.status()</code> reports <code>ready: False, reason: 'provider-changed'</code> so the machine is on the always-on BM25 path — <code>rag.retrieve("C++")</code> returns <b>0</b> hits while <code>rag.retrieve("cpp")</code> returns <b>60</b>, and <code>retrieve_any</code> reports <code>(0, 'BM25 full-content')</code> rather than <code>None</code>, so the <code>catalog.search</code> fallback that finds 45 C++ items can never run.
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo></code><br>
|
|
21
|
+
<code>export BOOST_HOME=$TMPDIR/eval-home BOOST_NO_AI=1</code><br>
|
|
22
|
+
<code>./boost search "C++" --json # []</code><br>
|
|
23
|
+
<code>./boost search "C#" --json # []</code><br>
|
|
24
|
+
<code>./boost search "代码审查" --json # []</code><br>
|
|
25
|
+
<code>.venv/bin/python -c "</code><br>
|
|
26
|
+
<code>from boost_cli.core import rag, catalog</code><br>
|
|
27
|
+
<code>from boost_cli.commands import configuration as cfg</code><br>
|
|
28
|
+
<code>es = catalog.all_entries()</code><br>
|
|
29
|
+
<code>for q in ['C++','C#','代码审查']:</code><br>
|
|
30
|
+
<code> print(repr(q), 'tokenize=', rag.tokenize(q),</code><br>
|
|
31
|
+
<code> 'retrieve_any=', (lambda r:(len(r[0]), r[1]))(rag.retrieve_any(q)),</code><br>
|
|
32
|
+
<code> 'catalog.search=', len(catalog.search(q, es)),</code><br>
|
|
33
|
+
<code> [e['name'] for e,_ in catalog.search(q, es)[:3]])</code><br>
|
|
34
|
+
<code>print('rag.search(C++) ->', (lambda r: 'None' if r is None else (len(r[0]), r[1]))(rag.search('C++', limit=10, smart=False)))</code><br>
|
|
35
|
+
…
|
|
36
|
+
|
|
37
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
38
|
+
|
|
39
|
+
The DEFECT reproduces exactly; five of the six cited anchors are wrong, and the drift pattern says the finder read an older tree.
|
|
40
|
+
|
|
41
|
+
- <code>rag.py:1288</code> (<code>elif bm25_hits is not None</code>) -> actual <b>rag.py:1286</b> - <code>rag.py:1010-1012</code> (<code>if not terms: return []</code>) -> actual <b>rag.py:1009-1011</b> (<code>terms = tokenize(query)</code> is 1009, <code>if not terms:</code> 1010, <code>return []</code> 1011) - <code>discovery.py:144</code> (<code>use_rag = rag.ensure()</code>) -> actual <b>discovery.py:145</b> - <code>configuration.py:1266</code> (<code>rag.search(...)</code>) -> actual <b>configuration.py:1321</b> (off by 55) - <code>configuration.py:1281</code> (<code>catalog.search(query)[:10]</code>) -> actual <b>configuration.py:1336</b> (off by 55) - <code>not_carded_check</code>: "Read all 318 <code>^title:</code> lines from docs/roadmap/items/*.md" -> actual <b>432</b> items, 432 title lines.
|
|
42
|
+
|
|
43
|
+
CORRECT as stated: <code>rag.py:88-91</code> for <code>tokenize</code>; <code>discovery.py:164</code> for <code>scored = catalog.search(query)</code>; 45 / 27 / 17 catalog.search counts; 42 entries with literal "c++" in name or description; 93 corpus files containing 代码审查; the MCP return <code>("no skills match 'C++'", False)</code>; and the absence of any <code>BOOST_NO_RAG</code> / <code>--no-rag</code> escape hatch.
|
|
44
|
+
|
|
45
|
+
The ~55-line configuration.py drift plus a title count off by 114 is not miscounting — the finder measured an older checkout.
|
|
46
|
+
|
|
47
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
48
|
+
|
|
49
|
+
SCOPE OF MY REPRO. All corpus counts (45 / 27 / 17 / 42 / 93 / 10,152) are from the shared 20-tap eval corpus at $TMPDIR/eval-home and must be labelled as such in the card — the finding says "the same machine", which reads as a real install. The datum that generalises is the one I took from the real 440-tap install (0 for <code>C++</code>, 60 for <code>cpp</code>).
|
|
50
|
+
|
|
51
|
+
SCOPE OF THE DEFECT — dense rescues it. <code>boost_cli/core/dense.py</code> contains no call to <code>tokenize</code> (it embeds the query string), so <code>retrieve_any</code> takes the <code>elif dense_hits:</code> branch and a machine with a *ready* dense store is NOT hit. The defect is confined to the always-on BM25-only path — every user without a built dense store, plus the MCP surface on such a machine. Note this kills the "invisible from a developer install" excuse the shipped <code>bm25-has-no-stemming</code> card leaned on: this repo's own machine is on that path right now because its dense store was built with <code>BAAI/bge-small-en-v1.5</code> and the configured provider is now <code>voyage</code>.
|
|
52
|
+
|
|
53
|
+
BLAST RADIUS IS WIDER THAN THE THREE NAMED QUERIES. Any query where *every* token is under 2 alphanumerics or non-Latin wipes out: <code>C++</code>, <code>C#</code>, <code>F#</code>, <code>R</code>, <code>C</code>, <code>how to</code>, <code>a the of</code>, <code>代码审查</code>, <code>日本語</code>. A multi-word query with one ordinary Latin word still works (<code>c++ memory safety</code> -> 60 hits, with <code>c++</code> silently erased — that erasure is sibling finding 6's angle).
|
|
54
|
+
|
|
55
|
+
DO NOT WRITE "FALL BACK TO catalog.search" AS THE FIX. I measured the naive remedy and it is unsafe: <code>catalog.search('R')</code> returns <b>10,092 of 10,152</b> entries and <code>catalog.search('how to')</code> returns <b>6,229</b> — noise, not results.
|
|
56
|
+
|
|
57
|
+
<b>Why it is worth doing.</b> A user or agent asking for the most common name of a mainstream language is told the catalogue holds nothing and is sent to <code>boost discover</code> to search all of GitHub for <code>cpp-expert</code>, <code>cpp-reviewer</code> and <code>cpp-coding-standards</code> that are already on their disk — the exact symptom the shipped card <code>bm25-has-no-stemming</code> was written to kill, arriving through a different door. It is worse on the MCP surface, where <code>boost_search</code> answers an agent "no skills match 'C++'" and the agent has no second query to try.
|
|
58
|
+
|
|
59
|
+
<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>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: corpus-refresh-updates-data-not-prose
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Retrieval eval
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Low
|
|
9
|
+
wow: 2
|
|
10
|
+
note: .github/workflows/eval-corpus-refresh.yml regenerates taps.txt's data rows and baseli…
|
|
11
|
+
order: 201
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: The monthly corpus refresh rewrote the pins and the baseline but left every documented number stale — taps.txt now contradicts its own header, and nothing checks it
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> tests/eval/taps.txt contradicts itself inside one file: its header at line 25 states the corpus is "<b>10,152 entries</b>", while its own twenty data rows fifty lines below sum to 10,731 (<code>awk '!/^#/ && NF {s+=$3} END {print s}'</code>), and an independent materialisation at exactly those pinned SHAs measures 10,731 entries across 20 taps with sickn33 at 61.8% - verified at HEAD 5ec7ed75.
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo></code><br>
|
|
21
|
+
<code>git show --stat cbc0a58b</code><br>
|
|
22
|
+
<code>grep -n '10,152\|6,309\|62.1\|1,616\|0.852' tests/eval/taps.txt scripts/eval_corpus.py CLAUDE.md Makefile .github/workflows/eval-scale.yml tests/unit/test_eval_corpus.py</code><br>
|
|
23
|
+
<code>sed -n '48,70p' tests/eval/taps.txt # data rows: sickn33 ... 6634, ECC ... 1621</code><br>
|
|
24
|
+
<code>awk '!/^#/ && NF {s+=$3} END {print "pinned rows sum to", s}' tests/eval/taps.txt # -> 10731</code><br>
|
|
25
|
+
<code>.venv/bin/python -c "import json;d=json.load(open('tests/eval/baseline.json'));print(json.dumps(d['sets']['golden.jsonl@a0617183f8c9']['engines']['BM25 full-content'],indent=1))"</code>
|
|
26
|
+
|
|
27
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
28
|
+
|
|
29
|
+
Only one statement in the finding is false, and it is narrow:
|
|
30
|
+
|
|
31
|
+
1. "the same stale figures propagate to ... the Makefile" is WRONG. The Makefile contains no "10,152" (<code>grep -c '10,152' Makefile</code> -> 0) and Makefile:126 quotes a DIFFERENT, older stale set: "0.863 / 0.473 / 0.607 / 0.662", which matches neither the pre-refresh baseline (0.8516/0.4725/0.6048/0.6575) nor the post-refresh one (0.8407/0.4835/0.6065/0.6552). Makefile:126 is stale prose, but it went stale before this refresh, not because of it. (Makefile:132-133 is separately stale in the other direction: it says the corpus "tracks upstream HEAD rather than pinned commits", untrue since #410 pinned it.) The card must not claim the refresh caused the Makefile drift.
|
|
32
|
+
|
|
33
|
+
2. Under-count of call sites. The finding lists six files; there are at least four more quoting "10,152", one of which is ACTIVE rather than merely left behind: - scripts/build_scale_corpus.py:189 emits the literal string "# 10,152 entries and a real install carries ~71,655..." into tests/eval/taps-scale.txt on regeneration, so a build step re-writes the stale number. - scripts/build_scale_corpus.py:6, tests/eval/taps-scale.txt:11, tests/unit/test_scale_corpus.py:5. - Also scripts/eval_corpus.py:10 ("affaan-m/ECC alone is 1,616"), which the finding's line list omits.
|
|
34
|
+
|
|
35
|
+
3.
|
|
36
|
+
|
|
37
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
38
|
+
|
|
39
|
+
SCOPE OF MY REPRO. I materialised the corpus at the shipped pins in my own disposable HOME (network reachable, 20 blobless sparse clones) and scored it with the exact <code>make eval</code> invocation, so the 10,731 / 61.8% / 76.9% / 0.841-0.484-0.607-0.655 figures are my own measurements, not the finder's. I did not touch the shared read-only eval-home except to read its caches; that corpus is still at the PRE-refresh pins (sickn33 @ d43065e) and totals 10,152 with sickn33 at 6,309 - which is what let me confirm both sides of the move rather than only the new one. My runs wrote nothing into the repo (<code>git status --short</code> shows only a peer session's four modified boost_cli/tests files, none under tests/eval/ or scripts/).
|
|
40
|
+
|
|
41
|
+
CORRECTED, not REFUTED, and the correction is small: sizes, shares, line numbers, the baseline match, the monthly cron and "no test covers it" all reproduced exactly. Only the Makefile attribution is wrong, plus an under-count of sites. Do not let CORRECTED read as doubt about the defect.
|
|
42
|
+
|
|
43
|
+
DO NOT list roadmap item bodies as stale. <code>eval-corpus-was-not-actually-pinned.md</code>, <code>eval-corpus-is-one-strangers-repo.md</code>, <code>eval-corpus-is-96x-smaller-than-a-real-install.md</code>, <code>BOOST-D12.md</code> and the CLI-audit cards all quote 10,152 / 6,309 / 0.852, but they are dated records of a measurement that was true when written. The live surfaces are the ones that must be fixed.
|
|
44
|
+
|
|
45
|
+
NOT A DUPLICATE, but cross-link it.
|
|
46
|
+
|
|
47
|
+
<b>Why it is worth doing.</b> taps.txt's header is the primary explanation of what the corpus is and why the floors sit where they do; it now states a size, a concentration and a four-metric score that its own data rows contradict, and CLAUDE.md repeats them as the project's ground truth. The next person reasoning about the corpus (or the next agent re-deriving the floors) reads numbers that are one refresh out of date, and the drift widens every month because the job that causes it is scheduled and nothing fails when the prose and the rows disagree.
|
|
48
|
+
|
|
49
|
+
<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>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: corrupt-config-reads-as-ready-to-set-up
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Onboarding · Bug
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: Doctor has no config-integrity check. When ~/.boost/config.json fails to parse, confi…
|
|
11
|
+
order: 202
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: With a corrupt config.json, doctor reports "no registries tapped" and verdicts "● ready to set up" exit 0 while search is dead; heal says "nothing to heal"
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> With a corrupt <code>~/.boost/config.json</code> on a machine holding 1 tap clone (<code>repos/verify-30-fix</code>) and its catalog cache (<code>cache/verify-30-fix.json</code>), <code>boost doctor --json</code> returns <code>{"issues": 0, "ok": true, "verdict": "ready to set up — tap a registry to make boost searchable"}</code> with exit 0 and no corruption entry anywhere in its <code>checks</code> array, on the same machine where <code>boost search brainstorm</code> exits 1 with "no taps configured — nothing to search" — because the only notice of the corruption is emitted by <code>config.load()</code> before <code>report.Report</code> exists and is routed to stderr (<code>config.py:205-210</code>), so it can never be counted, never reach <code>--json</code>, and never reach <code>boost doctor > health.log</code>.
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo> || exit 1</code><br>
|
|
21
|
+
<code>export HOME=$TMPDIR/audit-doctor-verify3; export BOOST_HOME=$HOME/.boost; mkdir -p "$HOME"</code><br>
|
|
22
|
+
<code>python3 tests/make_fixture.py $TMPDIR/audit-doctor-fix3 >/dev/null</code><br>
|
|
23
|
+
<code>./boost tap $TMPDIR/audit-doctor-fix3 >/dev/null 2>&1</code><br>
|
|
24
|
+
<code>BOOST_ASSUME_YES=1 ./boost install brainstorming >/dev/null 2>&1</code><br>
|
|
25
|
+
<code>printf '{"taps": [' > "$BOOST_HOME/config.json"</code><br>
|
|
26
|
+
<code>ls -1 "$BOOST_HOME/repos" | wc -l # 1 clone still on disk</code><br>
|
|
27
|
+
<code>./boost doctor; echo "DOCTOR_EXIT=$?" # "no registries tapped" ... "● ready to set up", 0</code><br>
|
|
28
|
+
<code>./boost heal; echo "HEAL_EXIT=$?" # "✓ nothing to heal", 0</code><br>
|
|
29
|
+
<code>./boost search brainstorm; echo "SEARCH_EXIT=$?" # "no taps configured", 1</code>
|
|
30
|
+
|
|
31
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
32
|
+
|
|
33
|
+
The BEHAVIOUR is exactly as claimed. Every source citation in the finding is wrong.
|
|
34
|
+
|
|
35
|
+
1. FILE PATH. The finding says "quality.py" with no directory and implies core. The file is <code>boost_cli/commands/quality.py</code>. There is no <code>boost_cli/core/quality.py</code> (<code>sed</code> on that path errors: No such file or directory).
|
|
36
|
+
|
|
37
|
+
2. VERDICT BRANCH. Finding says <code>quality.py:744-750</code>. Actual: the block is lines <b>727-736</b>, with <code>if issues == 0 and not taps:</code> on line <b>728</b> and <code>rep.verdict(True, "ready to set up — tap a registry to make boost searchable")</code> on 729-730.
|
|
38
|
+
|
|
39
|
+
3. ORPHANED-STORE-DIR CHECK. Finding says <code>quality.py:646-651</code>. Actual: <b>612-618</b> (<code>orphans = [c.name for c in sorted(root.iterdir()) ...]</code> at 613, <code>bad("orphans", ...)</code> at 617-618).
|
|
40
|
+
|
|
41
|
+
4. These line numbers were never right. I checked HEAD, HEAD~1, HEAD~2, HEAD~3, HEAD~5 and HEAD~10 (verdict line 728/728/723/723/720/720; orphan line 617/617/614/614/611/611) and the three other copies in the tree (.claude/worktrees/bmad-autopilot: 631/537; build/lib: -/510; mutants/: the block is absent). Nothing anywhere has 744 or 646, so this is not stale line numbers from a recent move — it is a miscount.
|
|
42
|
+
|
|
43
|
+
5. WORDING OF THE FINDING'S "printed above doctor's own heading".
|
|
44
|
+
|
|
45
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
46
|
+
|
|
47
|
+
SCOPE OF MY REPRO — do not let a card overstate it: - I measured <b>1 clone + 1 catalog cache</b> on disk against "0 taps synced". The finding's "a user who has been using boost for months" is extrapolation, not measured. State the disparity as "N clones on disk vs 0 taps reported" and cite N=1 as what was actually verified. - I did NOT test <code>boost tap --defaults</code> (needs network). The claim that following doctor's advice re-taps defaults over the real list is unverified; what IS verified is that any tap write quarantines the old file to <code>config.json.corrupt</code> first, so the list is recoverable. That mitigation is why Med holds rather than High. - Fixture-tap repro only; no claim about a starter/default registry set.
|
|
48
|
+
|
|
49
|
+
THREE ROADMAP PRECEDENTS — none is a duplicate, all must be cited by the author: - <code>docs/roadmap/items/audit-doctor-findings.md</code> (shipped, PR #656) fixed THIS EXACT CLASS — an "!" line that wears the issue glyph but is never counted, under a "● healthy" exit-0 verdict — but only for the crash-report notice. The config-corrupt warning is a second instance that fix did not reach, and is harder because it originates outside doctor's own code. - <code>docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md</code> (shipped, PR #674) is the lock-file sibling and ships the FIX PATTERN to copy: <code>lockfile.check()</code> returning ok/missing/corrupt instead of the empty skeleton <code>read()</code> collapses to, plus <code>store.has_content()</code> to tell a genuinely empty install from one whose record vanished.
|
|
50
|
+
|
|
51
|
+
<b>Why it is worth doing.</b> This is the worst wording doctor can choose for the state: a user who has been using boost for months is told they are a new user who has not set anything up yet, with a zero exit code, and the repair command agrees there is nothing wrong. Following the printed advice (<code>boost tap --defaults</code>) re-taps the defaults over their real registry list — recoverable only because a <code>.corrupt</code> sidecar happens to be written, which neither doctor nor heal mentions. Doctor already knows how to compare on-disk state against a record (the orphaned-store-dir check); the same comparison against <code>repos/</code> would turn this into one accurate line.
|
|
52
|
+
|
|
53
|
+
<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>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dense-kill-switch-has-no-reason-state
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Retrieval eval
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: embed.enabled() short-circuits provider() to None (embed.py:134), so BOOST_NO_EMBED=1…
|
|
11
|
+
order: 203
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: BOOST_NO_EMBED has no state in the reason ladder: doctor calls a deliberate kill switch a degraded fault (exit 1) and hands advice that is a measured no-op in both branches
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> With <code>BOOST_NO_EMBED=1</code> and a 5-chunk voyage-4 store, <code>dense.fix_hint</code> tells the user "set the key it was built with: <code>export VOYAGE_API_KEY=...</code>"; exporting that key produces a byte-identical status (reason='no-key', degraded=True, ready=False) and the byte-identical hint — the kill switch is read in <code>provider()</code> before any key, so boost's own remedy is a measured no-op, on both <code>boost doctor</code> (exit 1) and <code>boost search</code>.
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo></code><br>
|
|
21
|
+
<code>export HOME=$TMPDIR/verify-dense-f3; export BOOST_HOME=$HOME/.boost; mkdir -p "$HOME"</code><br>
|
|
22
|
+
<code>unset VOYAGE_API_KEY OPENAI_API_KEY BOOST_NO_EMBED</code><br>
|
|
23
|
+
<code>python3 tests/make_fixture.py $TMPDIR/verify-dense-f3-fix >/dev/null</code><br>
|
|
24
|
+
<code>./boost tap $TMPDIR/verify-dense-f3-fix >/dev/null</code><br>
|
|
25
|
+
<code># ./boost is system python3 (no sqlite_vec) -> reports no-backend. Use .venv below.</code><br>
|
|
26
|
+
<code>build () { # $1 provider $2 model $3 dim</code><br>
|
|
27
|
+
<code>.venv/bin/python - "$1" "$2" "$3" <<'PY'</code><br>
|
|
28
|
+
<code>import hashlib, sys; sys.path.insert(0, ".")</code><br>
|
|
29
|
+
<code>from boost_cli.core import catalog, dense, embed</code><br>
|
|
30
|
+
<code>P, M, DIM = sys.argv[1], sys.argv[2], int(sys.argv[3])</code><br>
|
|
31
|
+
<code>def fake(texts, input_type=None, timeout=60):</code><br>
|
|
32
|
+
<code> out = []</code><br>
|
|
33
|
+
<code> for t in texts:</code><br>
|
|
34
|
+
<code> h = hashlib.sha256(t.encode()).digest()</code><br>
|
|
35
|
+
…
|
|
36
|
+
|
|
37
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
38
|
+
|
|
39
|
+
Every card-worthy measurement is exact. Only citation ranges drift:
|
|
40
|
+
|
|
41
|
+
1. "eight lines away in the same module" (why_it_matters) is FALSE as written and is the one non-trivial correction. <code>embed.fallback_note()</code> is in boost_cli/core/embed.py:170-179; the inert <code>_FIX</code> table is in boost_cli/core/dense.py:520-534. Different files, ~340 lines and one module apart. Do not put "eight lines away" on the card — it misstates where the fix lives. 2. "dense.py:513-516 states the invariant" -> the quoted sentence spans dense.py:512-514 (512 is "# Why dense retrieval isn't serving...", 513 is "# Each names the ONE next action..."). 3. "<code>_FIX</code> (dense.py:522-533)" -> <code>_FIX</code> is dense.py:520-534; the entries span 521-533. The 8-key count is correct. 4. "tests/unit/test_dense_status.py:100-101" -> the comment and the <code>assert st["degraded"] is False</code> are at 101-102 (line 100 is <code>assert st["model"] is None</code>). 5. "embed.py:134" -> the guard <code>if not enabled():</code> is 133 and <code>return None</code> is 134. Accurate enough as cited.
|
|
42
|
+
|
|
43
|
+
Confirmed exact: reason/degraded/built_provider in both branches; both hint strings verbatim; doctor rc=1; the fallback_note string; 8 <code>_FIX</code> keys; test_dense_status.py:264 and its lack of a store; 432 roadmap items; 0 BOOST_NO_EMBED hits in roadmap items; embed.py:32 kill-switch doc line.
|
|
44
|
+
|
|
45
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
46
|
+
|
|
47
|
+
1. BLAST RADIUS IS TWO SURFACES, NOT ONE. The finding only measured <code>boost doctor</code>. I also measured <code>boost search</code> under the kill switch: it prints the same inert "set the key it was built with" line (both read the one <code>dense.fix_hint</code> table, by design — CLAUDE.md's "doctor and search cannot give contradictory advice" rule). The card should say both.
|
|
48
|
+
|
|
49
|
+
2. AN EXISTING CARD PROPOSES A FIX THAT WOULD MAKE THIS WORSE. <code>docs/roadmap/items/audit-quickstart-findings.md</code> line 18 ("The <code>[rag]</code> install hint has three different wordings") proposes: "have <code>embed.fallback_note()</code> and both quickstart paths call <code>dense.fix_hint()</code>". Executed as written that deletes the only correct kill-switch sentence in the codebase (embed.py:178). This card's fix must go the other direction — add a <code>disabled</code> reason to the ladder in <code>status()</code> and give <code>_FIX</code> that key — or the two cards collide. This is not a duplicate (that card is about zsh-unsafe unquoted <code>pip install boost-skill-cli[rag]</code>, not the kill switch), but a card author must be told.
|
|
50
|
+
|
|
51
|
+
3. THE ONLY ESCAPE IS DELETING THE VECTORS. I renamed the store away and <code>degraded</code> flipped to False (reason stays 'no-key' but <code>degraded = store_exists and reason is not None</code>). So the exit code is not literally unfixable — but the only remedy is discarding every vector the user paid to embed, and no hint mentions it. "red forever" in why_it_matters should be phrased as "red until you delete the store".
|
|
52
|
+
|
|
53
|
+
4. PRECONDITION IS NARROW — do not overstate reach. You must have BUILT a dense store and THEN set the kill switch.
|
|
54
|
+
|
|
55
|
+
<b>Why it is worth doing.</b> <code>BOOST_NO_EMBED</code> is documented as a hard kill switch (embed.py:32) and is what a user or a CI job sets to opt out deliberately — including anyone who hits the previous two findings and wants to stop paying for a broken embedder. Doing so turns <code>boost doctor</code> red forever, which breaks it as a CI gate, and the only remedies boost offers are provably inert: reinstalling an installed package, or exporting a key the kill switch never reads. The correct sentence already exists eight lines away in the same module.
|
|
56
|
+
|
|
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>CONFIRMED</b>. No fix is prescribed here — the measurement is the contribution.</em>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dense-no-key-guard-is-unreachable
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Retrieval eval
|
|
7
|
+
complexity: L
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: dense.status() checks prov is None before it looks at the store (dense.py:618-621), b…
|
|
11
|
+
order: 204
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: fix_hint's no-key guard has been unreachable since the day it was written; a missing API key now prescribes the full re-embed the guard exists to prevent
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> On a complete <code>[rag]</code> extra with a voyage-4-built vector store and no API key exported, <code>dense.status()</code> returns <code>reason='provider-changed'</code> (not <code>no-key</code>), so all three status-passing surfaces print <code>rebuild it: \</code>boost reindex --dense --force\`<code> and </code>boost doctor<code> exits 1 — measured verbatim, including doctor's "live key is local; searches are using BM25" line — while the guard written to prevent exactly that (</code>21f28223<code>, #444) fires only under </code>BOOST_NO_EMBED=1` or a partial install, both confirmed by direct probe.
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo></code><br>
|
|
21
|
+
<code>export HOME=$TMPDIR/verify-dense-f1; export BOOST_HOME=$HOME/.boost; mkdir -p "$HOME"</code><br>
|
|
22
|
+
<code>unset VOYAGE_API_KEY OPENAI_API_KEY BOOST_NO_EMBED</code><br>
|
|
23
|
+
<code>python3 tests/make_fixture.py $TMPDIR/verify-dense-f1-fix >/dev/null</code><br>
|
|
24
|
+
<code>./boost tap $TMPDIR/verify-dense-f1-fix >/dev/null</code><br>
|
|
25
|
+
<code># NOTE: ./boost execs system python3, which has no sqlite_vec, so it always says</code><br>
|
|
26
|
+
<code># "no-backend". Every dense command below MUST run under .venv.</code><br>
|
|
27
|
+
<code>.venv/bin/python - <<'PY'</code><br>
|
|
28
|
+
<code>import hashlib, sys; sys.path.insert(0, ".")</code><br>
|
|
29
|
+
<code>from boost_cli.core import catalog, dense, embed</code><br>
|
|
30
|
+
<code>DIM = 1024</code><br>
|
|
31
|
+
<code>def fake(texts, input_type=None, timeout=60): # no network, no API spend</code><br>
|
|
32
|
+
<code> out = []</code><br>
|
|
33
|
+
<code> for t in texts:</code><br>
|
|
34
|
+
<code> h = hashlib.sha256(t.encode()).digest()</code><br>
|
|
35
|
+
…
|
|
36
|
+
|
|
37
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
38
|
+
|
|
39
|
+
The defect is real and reproduced verbatim, but five stated details are wrong:
|
|
40
|
+
|
|
41
|
+
1. SOURCE ATTRIBUTION OF THE COST FIGURE. <code>why_it_matters</code> says "which CLAUDE.md prices at ~1.2 s per chunk on CPU". <code>grep -n 'per chunk\|1\.2 s' CLAUDE.md</code> returns nothing. The figure is real but lives in the roadmap: <code>docs/roadmap/items/keyless-semantic-search-for-everyone.md:298</code> ("4,431 s — 74 minutes, about 1.2 s per chunk") and <code>:308</code>, plus <code>the-shard-job-that-could-not-finish.md:17</code> and <code>keyless-dense-tier-local-static-embeddings.md:75</code>. Cite the roadmap, not CLAUDE.md.
|
|
42
|
+
|
|
43
|
+
2. <code>quality.py:769</code> is wrong -> the fix_hint call is <code>boost_cli/commands/quality.py:780</code> (<code>fix = dense.fix_hint(st["reason"], st)</code>). Line 769 sits inside the unrelated <code>search-quantization</code> warning.
|
|
44
|
+
|
|
45
|
+
3. <code>pyproject.toml:55-57</code> is wrong -> the three pins are at lines <b>56, 67 and 68</b> (<code>sqlite-vec>=0.1.6</code>, <code>onnxruntime>=1.17</code>, <code>tokenizers>=0.15</code>), split by a 10-line comment justifying the fastembed rejection. They are in one extra, which is the load-bearing part, but the range is not 55-57.
|
|
46
|
+
|
|
47
|
+
4. THE CAUSAL-ORDER COMMIT PAIR NAMES THE WRONG COMMIT FOR THE GUARD. <code>86163e03</code> (2026-07-31, #364) created <code>test_dense_fix_hint.py</code> <b>and the <code>_FIX</code> table</b>, but not the guard.
|
|
48
|
+
|
|
49
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
50
|
+
|
|
51
|
+
PRECONDITION — state it on the card so nobody reads it as unconditional. The misroute needs (a) a store built with an API provider, (b) the complete <code>[rag]</code> extra so <code>provider()</code> falls through to <code>local</code>, and (c) the key absent from the *process* environment. #444's own commit message documents that shape as recurring in the wild: "the shell exports one; the spawned server does not inherit it."
|
|
52
|
+
|
|
53
|
+
THE REAL MACHINE IS NOT CURRENTLY IN THE BUG STATE. <code>~/.boost/cache/rag_vectors.sqlite</code> reads provider="local", model="BAAI/bge-small-en-v1.5", dim=384 — so <code>provider()</code> matches <code>built_provider</code> and its reason is None. The 645,592-chunk / 1.20 GB / 440-tap figure is <b>cost-if-the-hint-is-followed</b>, not present harm. Do not let the card imply the machine is broken today. (The 750,416-chunk voyage-4 store in the #444 message and the test docstring is a past state of the same machine.)
|
|
54
|
+
|
|
55
|
+
THE MISDIAGNOSIS WAS REFUTABLE FROM THE SAME FILE. The <code>_FIX</code> comment — "This reason means 'no key AND no local backend', which in practice is a partial install or BOOST_NO_EMBED" — was already in <code>dense.py</code> from 86163e03 (07-31) when #444 (08-03) added a guard whose docstring asserts the opposite: "an unfinished install with no store and a complete install whose key merely went missing both land here." Two claims about <code>no-key</code>, 30 lines apart, that contradict each other.
|
|
56
|
+
|
|
57
|
+
<b>Why it is worth doing.</b> A user who opens a new shell without exporting their key is told by doctor, search and the MCP server to re-embed their whole store. On the real machine in this repo that is 645,592 chunks / 1.20 GB, which CLAUDE.md prices at ~1.2 s per chunk on CPU — hours of compute, or a real API bill — to fix a problem whose actual remedy is one <code>export</code>. The repo already decided this was unacceptable and wrote six tests plus a paragraph of docstring to prevent it; the guard has simply never been able to fire.
|
|
58
|
+
|
|
59
|
+
<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>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dense-ready-but-embedder-cannot-run
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Retrieval eval
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: localembed.available() (localembed.py:85) tests whether onnxruntime and tokenizers *i…
|
|
11
|
+
order: 205
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: status() has no state for "ready but the embedder does not work": doctor green-ticks a tier that never ran, the search hint is suppressed, and every search re-pays the failed model fetch
|
|
15
|
+
---
|
|
16
|
+
<b>Measured.</b> In a store built as provider=local/BAAI/bge-small-en-v1.5/384-d with the weights absent, <code>dense.ready()</code> returns True and <code>status()</code> returns reason=None, degraded=False, while <code>dense.retrieve()</code> returns None on every query — so <code>boost search</code> prints "1 match · ranked by full-content BM25" with no hint (guard: <code>if st.get("ready"): return</code>, discovery.py:339) and <code>boost doctor</code> prints "✓ semantic search active — local BAAI/bge-small-en-v1.5 (384-d), 5 chunks across 1 tap" and exits 0 (guard: <code>if st["ready"]:</code>, quality.py:759); each such search makes exactly one un-cached 133,093,490-byte model fetch (counted in-process: 1 urlopen, 3.72 s, versus a 0.12 s BOOST_NO_EMBED baseline, of which only 0.06 s is the onnxruntime/tokenizers import).
|
|
17
|
+
|
|
18
|
+
<b>Reproduce it.</b>
|
|
19
|
+
|
|
20
|
+
<code>cd <repo></code><br>
|
|
21
|
+
<code>export HOME=$TMPDIR/verify-dense-f2; export BOOST_HOME=$HOME/.boost; mkdir -p "$HOME"</code><br>
|
|
22
|
+
<code>unset VOYAGE_API_KEY OPENAI_API_KEY BOOST_NO_EMBED</code><br>
|
|
23
|
+
<code>python3 tests/make_fixture.py $TMPDIR/verify-dense-f2-fix >/dev/null</code><br>
|
|
24
|
+
<code>./boost tap $TMPDIR/verify-dense-f2-fix >/dev/null</code><br>
|
|
25
|
+
<code># ./boost is system python3 (no sqlite_vec) -> reports no-backend. Use .venv below.</code><br>
|
|
26
|
+
<code># PRECONDITION: huggingface.co must be unreachable (blocked here by the proxy).</code><br>
|
|
27
|
+
<code>.venv/bin/python - <<'PY'</code><br>
|
|
28
|
+
<code>import hashlib, sys; sys.path.insert(0, ".")</code><br>
|
|
29
|
+
<code>from boost_cli.core import catalog, dense, embed</code><br>
|
|
30
|
+
<code>DIM = 384</code><br>
|
|
31
|
+
<code>def fake(texts, input_type=None, timeout=60):</code><br>
|
|
32
|
+
<code> out = []</code><br>
|
|
33
|
+
<code> for t in texts:</code><br>
|
|
34
|
+
<code> h = hashlib.sha256(t.encode()).digest()</code><br>
|
|
35
|
+
…
|
|
36
|
+
|
|
37
|
+
<b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
|
|
38
|
+
|
|
39
|
+
1. "retries BOTH entries of FILES ... up to 1,200 s" is WRONG. <code>ensure_model</code> (localembed.py:141-150) does <code>if not _fetch(...): return None</code> on the FIRST failure, and <code>FILES</code> orders <code>onnx/model.onnx</code> before <code>tokenizer.json</code>, so tokenizer.json is never attempted on a failing network. Measured: exactly 1 <code>nethttp.urlopen</code> call per process, counted inside a real <code>boost search</code>. Correct statement: ONE fetch per search process, socket timeout 600 s. Do not write "up to 1,200 s"; also do not write "up to 600 s" as a wall-clock ceiling — <code>timeout=600</code> is a per-socket-operation timeout, so a slow-drip server is not bounded by it.
|
|
40
|
+
|
|
41
|
+
2. Line numbers are off. <code>_hint_semantic_search</code>'s guard is discovery.py:339-340 (<code>if st.get("ready"): return</code>), not 341-343. <code>_report_search_engine</code>'s ready branch is quality.py:759, not 751-755. <code>_load</code> spans localembed.py:153-176 with the <code>ensure_model()</code> call at :164, not 152-166. (localembed.py:85 <code>available()</code> and :124 <code>timeout=600</code> are correct, as are the 133,093,490 B and tokenizer.json byte counts.)
|
|
42
|
+
|
|
43
|
+
3. The BOOST_NO_EMBED=1 baseline is wrong: measured 0.12/0.12/0.12/0.13/0.14 s, not 1.11/0.80/1.50 s. Delta is 3.5-4.1 s.
|
|
44
|
+
|
|
45
|
+
<b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
|
|
46
|
+
|
|
47
|
+
SCOPE OF MY REPRO — read before writing a card. (a) The failing precondition here is a proxy that truncates the huggingface.co stream, not one that blocks it; the pin in <code>FILES</code> is correct (HF's content-length matches 133,093,490 exactly), so this is not a wrong-hash finding and <code>_verified</code>'s length check is doing its job. (b) All timings are from this sandbox on a 5-entry fixture tap under a disposable HOME; only the structural facts (one fetch per process, no negative cache, both guards keyed on <code>ready</code>, no model probe on either surface) are environment-independent. (c) I could not test the positive case — with the model present dense works and none of this fires — so the finding is strictly about the store-present/model-absent state.
|
|
48
|
+
|
|
49
|
+
PRIOR DISCLOSURE (the finder declared it, and I confirmed it): docs/roadmap/items/keyless-semantic-search-for-everyone.md, status <code>shipped</code>, body: "retrieval returned zero hits until the model was present — dense.status() reported ready the whole time, because the store genuinely was ready." That card frames it as a limit of what a shard can carry and commits to no work. Nothing in any item body claims doctor's green tick, the search hint's blindness, exit code 0, or the per-search retry cost; grepped all item bodies for localembed / ensure_model / bge-small / weights / "negative cache" / "model fetch" / "133 MB" and read the two candidate cards in full (the other being prerequisites-and-semantic-search-setup, the shipped hint whose blind spot this is).
|
|
50
|
+
|
|
51
|
+
<b>Why it is worth doing.</b> This is the exact silent-BM25 failure <code>prerequisites-and-semantic-search-setup</code> shipped a hint to close, and the hint is blind to it: the user is told dense is active by doctor, told nothing by search, and pays several seconds per query for a download that can never succeed. A user who runs <code>boost reindex --dense</code> on a laptop with the model cached and then searches from a locked-down network or CI runner gets a slower search than if they had never enabled dense at all, with every surface reporting health.
|
|
52
|
+
|
|
53
|
+
<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>
|