boost-skill-cli 1.0.283__tar.gz → 1.0.284__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.283 → boost_skill_cli-1.0.284}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-commit-can-cut-two-releases.md +6 -2
- boost_skill_cli-1.0.284/docs/roadmap/items/sbom-declares-the-wrong-version.md +54 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap.html +57 -3
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.gitattributes +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.gitignore +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/.vale.ini +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/LICENSE +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/Makefile +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/README.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/codecov.yml +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/index.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/README.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/examples/README.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/index.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/noxfile.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/setup.cfg +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/style/README.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/style/boost.css +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/style/boost.js +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/style/demo.html +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/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.284'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 284)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -288,6 +288,7 @@ docs/roadmap/items/rule-install-native-materialization.md
|
|
|
288
288
|
docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md
|
|
289
289
|
docs/roadmap/items/runtime-explain-faithfulness-guardrail.md
|
|
290
290
|
docs/roadmap/items/sbom-aware-scanning-osv-scanner.md
|
|
291
|
+
docs/roadmap/items/sbom-declares-the-wrong-version.md
|
|
291
292
|
docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md
|
|
292
293
|
docs/roadmap/items/sbom-release-event-never-fires.md
|
|
293
294
|
docs/roadmap/items/scan-and-sync-rules-and-workflows.md
|
|
@@ -48,5 +48,9 @@ ci will trigger its own release, but it means some merges never get their own ve
|
|
|
48
48
|
|
|
49
49
|
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
50
50
|
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
51
|
-
with no SBOM. Each tag is built separately
|
|
52
|
-
|
|
51
|
+
with no SBOM. Each tag is built separately so its SBOM carries its own version.
|
|
52
|
+
|
|
53
|
+
<b>Correction:</b> the claim above originally read "because setuptools-scm reads the version from
|
|
54
|
+
the tag", and that is false — it reads the version from the <em>commit</em>, so separate checkouts
|
|
55
|
+
of two tags on one commit produce the same version. That was a second, quieter consequence of the
|
|
56
|
+
duplicate release, fixed separately in <code>sbom-declares-the-wrong-version</code>.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: sbom-declares-the-wrong-version
|
|
3
|
+
board: code
|
|
4
|
+
section: trust
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Supply chain · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 5
|
|
10
|
+
note: fixed — release v1.0.278's SBOM declared 1.0.277; the version is now pinned to the tag
|
|
11
|
+
order: 68
|
|
12
|
+
owner: loop/sbom-tag-version
|
|
13
|
+
pr:
|
|
14
|
+
title: The SBOM can declare a different version than the release it is attached to
|
|
15
|
+
---
|
|
16
|
+
<code>sbom.yml</code> builds each released tag separately so that every release gets an SBOM
|
|
17
|
+
describing <em>its own</em> version. It does that by checking the tag out:
|
|
18
|
+
<code>git checkout --detach "refs/tags/$TAG"</code>. The premise is wrong.
|
|
19
|
+
<b>setuptools-scm derives the version from the commit, not from the ref used to reach it</b>, so
|
|
20
|
+
when one commit carries two tags every checkout resolves to the same version — whichever one
|
|
21
|
+
<code>git describe</code> picks, which is not the highest.
|
|
22
|
+
|
|
23
|
+
Measured against the real repository, detached at each tag in turn:
|
|
24
|
+
|
|
25
|
+
<code>checked out v1.0.278 -> setuptools-scm says: 1.0.277</code><br>
|
|
26
|
+
<code>checked out v1.0.277 -> setuptools-scm says: 1.0.277</code>
|
|
27
|
+
|
|
28
|
+
And confirmed in production rather than in a fixture — the published asset on
|
|
29
|
+
<code>v1.0.278</code>, downloaded from the release, contains
|
|
30
|
+
<code>{"name": "boost-skill-cli", "version": "1.0.277"}</code>. <b>The SBOM attached to release
|
|
31
|
+
v1.0.278 describes v1.0.277.</b> A consumer resolving that release's bill of materials gets a
|
|
32
|
+
document for a different version, which is precisely the trust property an SBOM exists to provide.
|
|
33
|
+
|
|
34
|
+
The blast radius is bounded by how often one commit cuts two releases, which
|
|
35
|
+
<code>one-commit-can-cut-two-releases</code> documents happening three times so far
|
|
36
|
+
(<code>246</code>/<code>247</code>, <code>248</code>/<code>249</code>, <code>277</code>/<code>278</code>).
|
|
37
|
+
Every duplicate pair mislabels one of its two SBOMs. It is <em>not</em> latent in
|
|
38
|
+
<code>publish.yml</code>, which builds the PyPI dist: that job checks out before the sibling run's
|
|
39
|
+
tag exists, so it happens to resolve correctly — all 281 PyPI versions are present and correctly
|
|
40
|
+
numbered. The defect is specific to the job that runs <em>after</em> both tags are in place.
|
|
41
|
+
|
|
42
|
+
<b>Shipped.</b> The build now pins the version to the tag it is building
|
|
43
|
+
(<code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_BOOST_SKILL_CLI="${TAG#v}"</code>) and then asserts the
|
|
44
|
+
wheel it produced carries that version, so a package rename — which would silently unhook the
|
|
45
|
+
scoped variable and restore the bug — fails the job instead of shipping a mislabelled document.
|
|
46
|
+
Verified both ways against the live repository: without the pin, <code>v1.0.278</code> resolves to
|
|
47
|
+
<code>1.0.277</code>; with it, <code>1.0.278</code>.
|
|
48
|
+
|
|
49
|
+
The same exercise settled the other thing this workflow had never proven: the multi-tag loop
|
|
50
|
+
itself. Both <code>run:</code> blocks were extracted verbatim from the YAML and driven against a
|
|
51
|
+
fixture repository with two tags on one commit, with <code>gh</code> and the build toolchain
|
|
52
|
+
stubbed. Resolution returns both tags newest-first, the loop iterates both, and it issues a
|
|
53
|
+
separate <code>upload</code> and a separate post-upload <code>view</code> assertion per tag. That
|
|
54
|
+
path had never executed in production — every commit since it shipped has carried exactly one tag.
|
|
@@ -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>175</b><span>Loop finds</span></div>
|
|
114
114
|
<!-- /ROADMAP:stats -->
|
|
115
115
|
</div>
|
|
116
116
|
</section>
|
|
@@ -2707,8 +2707,12 @@ ci will trigger its own release, but it means some merges never get their own ve
|
|
|
2707
2707
|
|
|
2708
2708
|
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
2709
2709
|
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
2710
|
-
with no SBOM. Each tag is built separately
|
|
2711
|
-
|
|
2710
|
+
with no SBOM. Each tag is built separately so its SBOM carries its own version.
|
|
2711
|
+
|
|
2712
|
+
<b>Correction:</b> the claim above originally read "because setuptools-scm reads the version from
|
|
2713
|
+
the tag", and that is false — it reads the version from the <em>commit</em>, so separate checkouts
|
|
2714
|
+
of two tags on one commit produce the same version. That was a second, quieter consequence of the
|
|
2715
|
+
duplicate release, fixed separately in <code>sbom-declares-the-wrong-version</code>.</p>
|
|
2712
2716
|
<div class="meta">
|
|
2713
2717
|
<span class="m">Complexity <b>M</b></span>
|
|
2714
2718
|
<span class="m">Impact <b>Med</b></span>
|
|
@@ -4279,6 +4283,56 @@ having found error-severity alerts.</p>
|
|
|
4279
4283
|
<span class="m">safe scoped to CodeQL (0 open) — adding Scorecard deadlocks every merge</span>
|
|
4280
4284
|
</div>
|
|
4281
4285
|
</article>
|
|
4286
|
+
|
|
4287
|
+
<article class="cap rcard" id="sbom-declares-the-wrong-version">
|
|
4288
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Supply chain · Bug</span></div>
|
|
4289
|
+
<h3>The SBOM can declare a different version than the release it is attached to</h3>
|
|
4290
|
+
<p><code>sbom.yml</code> builds each released tag separately so that every release gets an SBOM
|
|
4291
|
+
describing <em>its own</em> version. It does that by checking the tag out:
|
|
4292
|
+
<code>git checkout --detach "refs/tags/$TAG"</code>. The premise is wrong.
|
|
4293
|
+
<b>setuptools-scm derives the version from the commit, not from the ref used to reach it</b>, so
|
|
4294
|
+
when one commit carries two tags every checkout resolves to the same version — whichever one
|
|
4295
|
+
<code>git describe</code> picks, which is not the highest.
|
|
4296
|
+
|
|
4297
|
+
Measured against the real repository, detached at each tag in turn:
|
|
4298
|
+
|
|
4299
|
+
<code>checked out v1.0.278 -> setuptools-scm says: 1.0.277</code><br>
|
|
4300
|
+
<code>checked out v1.0.277 -> setuptools-scm says: 1.0.277</code>
|
|
4301
|
+
|
|
4302
|
+
And confirmed in production rather than in a fixture — the published asset on
|
|
4303
|
+
<code>v1.0.278</code>, downloaded from the release, contains
|
|
4304
|
+
<code>{"name": "boost-skill-cli", "version": "1.0.277"}</code>. <b>The SBOM attached to release
|
|
4305
|
+
v1.0.278 describes v1.0.277.</b> A consumer resolving that release's bill of materials gets a
|
|
4306
|
+
document for a different version, which is precisely the trust property an SBOM exists to provide.
|
|
4307
|
+
|
|
4308
|
+
The blast radius is bounded by how often one commit cuts two releases, which
|
|
4309
|
+
<code>one-commit-can-cut-two-releases</code> documents happening three times so far
|
|
4310
|
+
(<code>246</code>/<code>247</code>, <code>248</code>/<code>249</code>, <code>277</code>/<code>278</code>).
|
|
4311
|
+
Every duplicate pair mislabels one of its two SBOMs. It is <em>not</em> latent in
|
|
4312
|
+
<code>publish.yml</code>, which builds the PyPI dist: that job checks out before the sibling run's
|
|
4313
|
+
tag exists, so it happens to resolve correctly — all 281 PyPI versions are present and correctly
|
|
4314
|
+
numbered. The defect is specific to the job that runs <em>after</em> both tags are in place.
|
|
4315
|
+
|
|
4316
|
+
<b>Shipped.</b> The build now pins the version to the tag it is building
|
|
4317
|
+
(<code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_BOOST_SKILL_CLI="${TAG#v}"</code>) and then asserts the
|
|
4318
|
+
wheel it produced carries that version, so a package rename — which would silently unhook the
|
|
4319
|
+
scoped variable and restore the bug — fails the job instead of shipping a mislabelled document.
|
|
4320
|
+
Verified both ways against the live repository: without the pin, <code>v1.0.278</code> resolves to
|
|
4321
|
+
<code>1.0.277</code>; with it, <code>1.0.278</code>.
|
|
4322
|
+
|
|
4323
|
+
The same exercise settled the other thing this workflow had never proven: the multi-tag loop
|
|
4324
|
+
itself. Both <code>run:</code> blocks were extracted verbatim from the YAML and driven against a
|
|
4325
|
+
fixture repository with two tags on one commit, with <code>gh</code> and the build toolchain
|
|
4326
|
+
stubbed. Resolution returns both tags newest-first, the loop iterates both, and it issues a
|
|
4327
|
+
separate <code>upload</code> and a separate post-upload <code>view</code> assertion per tag. That
|
|
4328
|
+
path had never executed in production — every commit since it shipped has carried exactly one tag.</p>
|
|
4329
|
+
<div class="meta">
|
|
4330
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4331
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
4332
|
+
<span class="m">Wow <b class="wow">★★★★★</b></span>
|
|
4333
|
+
<span class="m">fixed — release v1.0.278's SBOM declared 1.0.277; the version is now pinned to the tag</span>
|
|
4334
|
+
</div>
|
|
4335
|
+
</article>
|
|
4282
4336
|
<!-- /ROADMAP:cards -->
|
|
4283
4337
|
|
|
4284
4338
|
</div>
|
|
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.283 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.283 → boost_skill_cli-1.0.284}/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
|
|
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.283 → boost_skill_cli-1.0.284}/docs/roadmap/items/boost-run-live-agents.md
RENAMED
|
File without changes
|
|
File without changes
|