boost-skill-cli 1.0.280__tar.gz → 1.0.281__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.0.280/boost_skill_cli.egg-info → boost_skill_cli-1.0.281}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- boost_skill_cli-1.0.281/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +38 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap.html +35 -1
- boost_skill_cli-1.0.281/tests/unit/test_codeql_analysis_key.py +95 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.gitattributes +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.gitignore +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/.vale.ini +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/LICENSE +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/Makefile +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/README.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/codecov.yml +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/index.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/examples/README.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/index.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/noxfile.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/setup.cfg +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/style/README.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/style/boost.css +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/style/boost.js +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/style/demo.html +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/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.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.281'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 281)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -173,6 +173,7 @@ docs/roadmap/items/ci-summary-step-fails-itself.md
|
|
|
173
173
|
docs/roadmap/items/ci-time-is-now-runner-queueing.md
|
|
174
174
|
docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md
|
|
175
175
|
docs/roadmap/items/code-scanning-rule-can-be-restored.md
|
|
176
|
+
docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md
|
|
176
177
|
docs/roadmap/items/command-carousel-page.md
|
|
177
178
|
docs/roadmap/items/command-reference-docs-site.md
|
|
178
179
|
docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
|
|
@@ -442,6 +443,7 @@ tests/unit/test_check_anchors.py
|
|
|
442
443
|
tests/unit/test_check_licenses.py
|
|
443
444
|
tests/unit/test_claude_settings.py
|
|
444
445
|
tests/unit/test_cliparse.py
|
|
446
|
+
tests/unit/test_codeql_analysis_key.py
|
|
445
447
|
tests/unit/test_command_reference_fresh.py
|
|
446
448
|
tests/unit/test_community_health_files.py
|
|
447
449
|
tests/unit/test_config.py
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: codeql-job-rename-stranded-merge-protection
|
|
3
|
+
board: code
|
|
4
|
+
section: trust
|
|
5
|
+
status: shipped
|
|
6
|
+
category: CI · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: a job rename forked the code-scanning config and blocked 100% of merges for a day
|
|
11
|
+
order: 37
|
|
12
|
+
owner: loop/codeql-analysis-key-guard
|
|
13
|
+
pr:
|
|
14
|
+
title: A CodeQL job rename silently blocked every merge
|
|
15
|
+
---
|
|
16
|
+
GitHub identifies a code-scanning configuration by <code><workflow path>:<job id></code>, which makes
|
|
17
|
+
the job id load-bearing in a way nothing in the workflow file hints at: renaming it does not
|
|
18
|
+
<i>move</i> the configuration, it <b>forks</b> it. #259 renamed this job <code>analyze</code> to
|
|
19
|
+
<code>codeql-analyze</code> on 2026-07-27. The last <code>:analyze</code> analysis landed 20 seconds
|
|
20
|
+
after that merge and never refreshed, stranding <b>247</b> of them on <code>refs/heads/main</code>
|
|
21
|
+
where GitHub kept counting them as a configuration present on the base branch. Merge protection
|
|
22
|
+
then reported <code>1 configuration not found</code> on every pull request — conclusion
|
|
23
|
+
<code>neutral</code> — and because the branch ruleset carries a <code>code_scanning</code> rule,
|
|
24
|
+
that neutral <b>blocked 100% of merges</b> while every required status check stayed green.
|
|
25
|
+
The cutover is exact: the last <code>success</code> was #263, the first <code>neutral</code> #259,
|
|
26
|
+
and every PR from #264 to #316 was neutral regardless of whether its diff contained Python at all.
|
|
27
|
+
That symmetry is what makes it so easy to misread — it presents as a rule that rejects docs-only
|
|
28
|
+
PRs, and the two hypotheses it invites (<i>"CodeQL has nothing to analyse"</i> and <i>"the rule is
|
|
29
|
+
unsatisfiable"</i>) are both wrong. 29 docs-only PRs merged happily under the same rule before the
|
|
30
|
+
rename. The check body says the real answer outright, and reading it beats inferring from
|
|
31
|
+
<code>mergeable_state</code>. Fixed by deleting the 247 orphaned analyses, which was verified safe
|
|
32
|
+
first: every alert still on the stale key was <code>fixed</code>, and all nine dismissed CodeQL
|
|
33
|
+
alerts already carried their false-positive rationale on the live key. The job id was <i>already</i>
|
|
34
|
+
guarded as a required status-check context by
|
|
35
|
+
<code>scripts/check_required_checks.py</code>, and that guard passed during #259 because the
|
|
36
|
+
context list was updated in the same commit — only the invisible half broke. So the guard added
|
|
37
|
+
here pins the id from the analysis-key side, with a note that a future rename is not finished until
|
|
38
|
+
the stale configuration is deleted. Related: [[release-verifies-the-wrong-commit]].
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
111
111
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
112
112
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
113
|
-
<div class="stat"><b>
|
|
113
|
+
<div class="stat"><b>173</b><span>Loop finds</span></div>
|
|
114
114
|
<!-- /ROADMAP:stats -->
|
|
115
115
|
</div>
|
|
116
116
|
</section>
|
|
@@ -4014,6 +4014,40 @@ is built.</p>
|
|
|
4014
4014
|
</div>
|
|
4015
4015
|
</article>
|
|
4016
4016
|
|
|
4017
|
+
<article class="cap rcard" id="codeql-job-rename-stranded-merge-protection">
|
|
4018
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">CI · Bug</span></div>
|
|
4019
|
+
<h3>A CodeQL job rename silently blocked every merge</h3>
|
|
4020
|
+
<p>GitHub identifies a code-scanning configuration by <code><workflow path>:<job id></code>, which makes
|
|
4021
|
+
the job id load-bearing in a way nothing in the workflow file hints at: renaming it does not
|
|
4022
|
+
<i>move</i> the configuration, it <b>forks</b> it. #259 renamed this job <code>analyze</code> to
|
|
4023
|
+
<code>codeql-analyze</code> on 2026-07-27. The last <code>:analyze</code> analysis landed 20 seconds
|
|
4024
|
+
after that merge and never refreshed, stranding <b>247</b> of them on <code>refs/heads/main</code>
|
|
4025
|
+
where GitHub kept counting them as a configuration present on the base branch. Merge protection
|
|
4026
|
+
then reported <code>1 configuration not found</code> on every pull request — conclusion
|
|
4027
|
+
<code>neutral</code> — and because the branch ruleset carries a <code>code_scanning</code> rule,
|
|
4028
|
+
that neutral <b>blocked 100% of merges</b> while every required status check stayed green.
|
|
4029
|
+
The cutover is exact: the last <code>success</code> was #263, the first <code>neutral</code> #259,
|
|
4030
|
+
and every PR from #264 to #316 was neutral regardless of whether its diff contained Python at all.
|
|
4031
|
+
That symmetry is what makes it so easy to misread — it presents as a rule that rejects docs-only
|
|
4032
|
+
PRs, and the two hypotheses it invites (<i>"CodeQL has nothing to analyse"</i> and <i>"the rule is
|
|
4033
|
+
unsatisfiable"</i>) are both wrong. 29 docs-only PRs merged happily under the same rule before the
|
|
4034
|
+
rename. The check body says the real answer outright, and reading it beats inferring from
|
|
4035
|
+
<code>mergeable_state</code>. Fixed by deleting the 247 orphaned analyses, which was verified safe
|
|
4036
|
+
first: every alert still on the stale key was <code>fixed</code>, and all nine dismissed CodeQL
|
|
4037
|
+
alerts already carried their false-positive rationale on the live key. The job id was <i>already</i>
|
|
4038
|
+
guarded as a required status-check context by
|
|
4039
|
+
<code>scripts/check_required_checks.py</code>, and that guard passed during #259 because the
|
|
4040
|
+
context list was updated in the same commit — only the invisible half broke. So the guard added
|
|
4041
|
+
here pins the id from the analysis-key side, with a note that a future rename is not finished until
|
|
4042
|
+
the stale configuration is deleted. Related: [[release-verifies-the-wrong-commit]].</p>
|
|
4043
|
+
<div class="meta">
|
|
4044
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4045
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
4046
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
4047
|
+
<span class="m">a job rename forked the code-scanning config and blocked 100% of merges for a day</span>
|
|
4048
|
+
</div>
|
|
4049
|
+
</article>
|
|
4050
|
+
|
|
4017
4051
|
<article class="cap rcard" id="installed-skill-trust-audit">
|
|
4018
4052
|
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Trust · Health</span></div>
|
|
4019
4053
|
<h3><code>boost audit --skills</code> — a trust/staleness report for installed skills</h3>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Unit tests: the CodeQL job id is half of a code-scanning analysis key.
|
|
2
|
+
|
|
3
|
+
GitHub identifies a code-scanning configuration by ``<workflow path>:<job id>``.
|
|
4
|
+
That makes the job id load-bearing in a way nothing in the file hints at:
|
|
5
|
+
renaming it does not *move* the configuration, it **forks** it. The old key stays
|
|
6
|
+
on record as a configuration present on the default branch, no future run ever
|
|
7
|
+
refreshes it, and code-scanning merge protection then reports
|
|
8
|
+
|
|
9
|
+
1 configuration not found
|
|
10
|
+
.github/workflows/codeql.yml:<old job id>
|
|
11
|
+
|
|
12
|
+
on every pull request — conclusion ``neutral``, forever.
|
|
13
|
+
|
|
14
|
+
This is not hypothetical. #259 ("ci(release-safety): make the required-check list
|
|
15
|
+
config-as-code") renamed this job ``analyze`` -> ``codeql-analyze`` on
|
|
16
|
+
2026-07-27. The last ``:analyze`` analysis landed 20 seconds after that merge and
|
|
17
|
+
never refreshed, stranding 247 of them on ``refs/heads/main``. Every PR from #264
|
|
18
|
+
onward reported ``neutral``, and because the branch ruleset carries a
|
|
19
|
+
``code_scanning`` rule, that neutral blocked **100% of merges** — with all
|
|
20
|
+
required status checks green, which is what made it so hard to read. It looked
|
|
21
|
+
like a rule that rejected docs-only PRs; it was a rule that could never be
|
|
22
|
+
satisfied by anything.
|
|
23
|
+
|
|
24
|
+
The job id is also a required status-check context (``.github/required-checks.txt``,
|
|
25
|
+
enforced by scripts/check_required_checks.py), so a rename already had one guard.
|
|
26
|
+
That guard passed: the context list was updated in the same commit. Only the
|
|
27
|
+
invisible half — the analysis key — broke.
|
|
28
|
+
|
|
29
|
+
So this pins the id. If you genuinely need to rename the job, the rename is not
|
|
30
|
+
finished until the stale configuration is deleted from the default branch
|
|
31
|
+
(Security -> Code scanning -> any alert -> Affected branches -> main ->
|
|
32
|
+
Configurations analyzing -> delete the old key; or DELETE
|
|
33
|
+
/repos/{owner}/{repo}/code-scanning/analyses/{id}?confirm_delete=true, walking
|
|
34
|
+
``next_analysis_url`` to the end of the set).
|
|
35
|
+
"""
|
|
36
|
+
from __future__ import annotations
|
|
37
|
+
|
|
38
|
+
import importlib.util
|
|
39
|
+
from pathlib import Path
|
|
40
|
+
|
|
41
|
+
ROOT = Path(__file__).resolve().parent.parent.parent
|
|
42
|
+
WORKFLOW = ROOT / ".github" / "workflows" / "codeql.yml"
|
|
43
|
+
|
|
44
|
+
# Both halves of the analysis key GitHub records for this repo's CodeQL setup.
|
|
45
|
+
# Changing either one strands the configuration these names describe.
|
|
46
|
+
EXPECTED_WORKFLOW = ".github/workflows/codeql.yml"
|
|
47
|
+
EXPECTED_JOB_ID = "codeql-analyze"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _parse_workflow():
|
|
51
|
+
"""Reuse the repo's own stdlib workflow parser (no YAML dep in the lint set)."""
|
|
52
|
+
script = ROOT / "scripts" / "check_required_checks.py"
|
|
53
|
+
spec = importlib.util.spec_from_file_location("check_required_checks_for_key",
|
|
54
|
+
script)
|
|
55
|
+
mod = importlib.util.module_from_spec(spec)
|
|
56
|
+
assert spec.loader is not None
|
|
57
|
+
spec.loader.exec_module(mod)
|
|
58
|
+
return mod.parse_workflow(WORKFLOW)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class TestAnalysisKeyIsStable:
|
|
62
|
+
def test_the_workflow_lives_where_the_key_says_it_does(self):
|
|
63
|
+
assert WORKFLOW.is_file()
|
|
64
|
+
assert WORKFLOW.relative_to(ROOT).as_posix() == EXPECTED_WORKFLOW
|
|
65
|
+
|
|
66
|
+
def test_the_codeql_job_id_is_pinned(self):
|
|
67
|
+
_, _, jobs = _parse_workflow()
|
|
68
|
+
assert EXPECTED_JOB_ID in jobs, (
|
|
69
|
+
"the CodeQL job id changed to %r. That forks the code-scanning "
|
|
70
|
+
"configuration: GitHub keeps '%s:%s' on record as present on the "
|
|
71
|
+
"default branch, nothing refreshes it, and merge protection reports "
|
|
72
|
+
"'1 configuration not found' -> neutral on every PR from now on. "
|
|
73
|
+
"Delete the stale configuration before landing the rename."
|
|
74
|
+
% (sorted(jobs), EXPECTED_WORKFLOW, EXPECTED_JOB_ID))
|
|
75
|
+
|
|
76
|
+
def test_exactly_one_job_produces_the_key(self):
|
|
77
|
+
# A second job in this file would add a second configuration, and every
|
|
78
|
+
# one of them has to keep reporting or merge protection goes neutral
|
|
79
|
+
# again. Adding one is a deliberate act, not a drive-by edit.
|
|
80
|
+
_, _, jobs = _parse_workflow()
|
|
81
|
+
assert list(jobs) == [EXPECTED_JOB_ID], sorted(jobs)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class TestTheGuardActuallyParses:
|
|
85
|
+
"""A parser that silently stops matching would make the pin vacuous."""
|
|
86
|
+
|
|
87
|
+
def test_parser_finds_jobs_at_all(self):
|
|
88
|
+
_, _, jobs = _parse_workflow()
|
|
89
|
+
assert jobs, "parsed no jobs out of codeql.yml — the guard is not checking anything"
|
|
90
|
+
|
|
91
|
+
def test_workflow_still_runs_on_pull_request(self):
|
|
92
|
+
# The key is only ever exercised on PRs; a workflow that stopped
|
|
93
|
+
# triggering there would strand the configuration just as effectively.
|
|
94
|
+
on_pr, _, _ = _parse_workflow()
|
|
95
|
+
assert on_pr != "none", "codeql.yml no longer runs on pull_request"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.280 → boost_skill_cli-1.0.281}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|