boost-skill-cli 1.2.172__tar.gz → 1.2.174__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- boost_skill_cli-1.2.174/docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md +114 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md +40 -3
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap.html +149 -3
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/mutation_shards.py +218 -11
- boost_skill_cli-1.2.174/tests/unit/test_failure_alerting_covers_unattended.py +556 -0
- boost_skill_cli-1.2.174/tests/unit/test_mutation_shard_count.py +336 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mutation_subfile_shards.py +3 -2
- boost_skill_cli-1.2.172/tests/unit/test_failure_alerting_covers_unattended.py +0 -200
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.gitattributes +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.gitignore +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/.vale.ini +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/DCO +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/LICENSE +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/Makefile +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/compact.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/prereq.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/codecov.yml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/index.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/an-item-materialized-nowhere-reads-ok-in-verify-health-drift.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/concurrency-probe-measured-a-race-not-the-pool.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/floors-job-never-installed-setuptools.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/install-writes-through-a-redirected-dotdir-uninstall-will-not.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/is-dir-follows-a-symlink-at-eleven-rmtree-call-sites.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-shard-balance-hints-are-a-release-behind.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/project-scope-in-an-unmarked-tree-does-not-walk-up.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/project-uninstall-deletes-any-in-repo-directory-the-lock-names.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/rule-and-workflow-rows-carry-a-scope-nothing-but-list-local-reads.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/uninstall-local-cannot-remove-a-rule-or-workflow-list-local-shows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/util-rmtree-chmods-a-symlink-target-outside-the-tree.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/wrap-width-judged-by-stdout.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/examples/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/index.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/noxfile.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/setup.cfg +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/style/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/style/boost.css +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/style/boost.js +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/style/demo.html +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_hooks_codex.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_identifier_columns.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_keyed_no_store_hint.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_canary_deps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_catalog_distinct.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_claude_settings_codex.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_corpus_prose.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_coverage_gate_prose.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_model_unavailable.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_dry_run_parity.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_embed_outranking.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_corpus_bodies.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_query_sets.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_first_run_pointer.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_help_contracts.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_hookhost_codex.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_lighthouse_budgets.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mutation_weights_drift.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_output_table_drop.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_output_table_whole.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_prereq.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_quickstart_readiness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rag_extra_hint.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_read_text_arg.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_repo_root_guard.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_sdist_contents.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shards_carry_forward.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_sync_lost_lock.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_text_io_names_its_encoding.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_upstream_path.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.174}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.174'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 174)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -355,6 +355,7 @@ docs/roadmap/items/build-provenance-slsa-attestations.md
|
|
|
355
355
|
docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md
|
|
356
356
|
docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md
|
|
357
357
|
docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md
|
|
358
|
+
docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md
|
|
358
359
|
docs/roadmap/items/capability-manifest-and-least-privilege-policy.md
|
|
359
360
|
docs/roadmap/items/capability-policy-skips-rules-and-workflows.md
|
|
360
361
|
docs/roadmap/items/catalog-categories-beyond-curated.md
|
|
@@ -1033,6 +1034,7 @@ tests/unit/test_mcphost.py
|
|
|
1033
1034
|
tests/unit/test_measure_registry.py
|
|
1034
1035
|
tests/unit/test_minisign.py
|
|
1035
1036
|
tests/unit/test_mutation_hardening.py
|
|
1037
|
+
tests/unit/test_mutation_shard_count.py
|
|
1036
1038
|
tests/unit/test_mutation_shards.py
|
|
1037
1039
|
tests/unit/test_mutation_subfile_shards.py
|
|
1038
1040
|
tests/unit/test_mutation_weights_drift.py
|
boost_skill_cli-1.2.174/docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: cancelled-ci-on-main-is-silent-and-skips-the-release
|
|
3
|
+
board: code
|
|
4
|
+
section: trust
|
|
5
|
+
status: inflight
|
|
6
|
+
category: CI · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: the alerting that exists to make a red main impossible to miss asks only about 'failure', and the run that skipped a release was 'cancelled'
|
|
11
|
+
order: 365
|
|
12
|
+
owner: loop/ci-alert-conclusions
|
|
13
|
+
pr: 1025
|
|
14
|
+
title: "A <code>cancelled</code> <code>ci</code> on main skips the release and alerts nobody, because the alert asks only about <code>failure</code>"
|
|
15
|
+
---
|
|
16
|
+
<b>Two independent gates, both keyed on the wrong half of the same enum.</b>
|
|
17
|
+
<code>publish.yml</code> fires on <code>workflow_run</code> and ships only when
|
|
18
|
+
<code>conclusion == 'success'</code>; <code>ci-failure-alert</code> opens the tracking issue
|
|
19
|
+
only when <code>conclusion == 'failure'</code>. A <code>ci</code> run that concludes
|
|
20
|
+
<code>cancelled</code> satisfies neither. <b>It does not ship and it does not tell anyone</b>
|
|
21
|
+
— the one conclusion that falls through both.
|
|
22
|
+
|
|
23
|
+
<b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> hit
|
|
24
|
+
<code>timeout-minutes: 75</code> and was cancelled, the aggregate <code>mutation</code> job
|
|
25
|
+
failed, and the run concluded <code>cancelled</code> rather than <code>failure</code>. No
|
|
26
|
+
release, no issue, no notification. It surfaced the same day, and only because somebody was
|
|
27
|
+
reading per-shard job durations out of the Actions API for an unrelated reason — nothing
|
|
28
|
+
in the repo would have raised it, and the next one will be found the same way or not at all.
|
|
29
|
+
|
|
30
|
+
<b>This is the exact blind spot <code>ci-failure-alert</code>'s own header describes.</b> That
|
|
31
|
+
file opens by explaining that <code>demo</code> "failed six runs out of six on main, alerted
|
|
32
|
+
nobody, and was found by a manual audit instead", and concludes that "any workflow that runs on
|
|
33
|
+
main and nobody watches belongs here". The list was then enforced by
|
|
34
|
+
<code>tests/unit/test_failure_alerting_covers_unattended.py</code> so a new workflow cannot
|
|
35
|
+
quietly join the blind spot. <b>The enforcement is over <em>which workflows</em> are watched,
|
|
36
|
+
and the hole here is <em>which conclusions</em> are</b> — <code>ci</code> is on the list
|
|
37
|
+
and still said nothing.
|
|
38
|
+
|
|
39
|
+
<b>Why a timeout is not an exotic case.</b> It is the designed behaviour of every
|
|
40
|
+
<code>timeout-minutes</code> in the repo, and <code>mutation-shard</code>'s is reached by an
|
|
41
|
+
ordinary slow runner rather than by a bug: across 169 measured shard jobs the worst was 72.5
|
|
42
|
+
minutes against a 75-minute cap. A job can also be cancelled by the concurrency group or by a
|
|
43
|
+
human pressing the button — and only the last of those is one anybody already knows about.
|
|
44
|
+
|
|
45
|
+
<b>A runner eviction is the neighbouring case, and it concludes differently.</b> An earlier
|
|
46
|
+
draft of this card listed eviction among the routes to <code>cancelled</code>; measured on
|
|
47
|
+
2026-10-02, it is not. <code>mutation-shard (0)</code> on main took
|
|
48
|
+
<code>The runner has received a shutdown signal</code> and exit 143 at mutant 3095 of 28084,
|
|
49
|
+
the job concluded <b>failure</b>, and the alerting fired correctly — issue #1024 opened
|
|
50
|
+
and auto-closed when a rerun of the failed jobs went green. That is the point of widening on
|
|
51
|
+
the <em>green</em> set rather than enumerating bad conclusions: the two most common ways a
|
|
52
|
+
shard dies land on different sides of an <code>== 'failure'</code> test, and a gate that has
|
|
53
|
+
to know which one it was is a gate that will be wrong again.
|
|
54
|
+
|
|
55
|
+
<b>Shape of the work.</b> Widen the alert's condition from <code>== 'failure'</code> to the set
|
|
56
|
+
of conclusions that mean "main is not green", which is every one except <code>success</code>,
|
|
57
|
+
<code>skipped</code> and <code>neutral</code> — naming what is <em>excluded</em> rather
|
|
58
|
+
than what is included, so the next conclusion GitHub adds defaults to loud. The issue body
|
|
59
|
+
should say which conclusion it was, because <em>cancelled</em> and <em>failure</em> want
|
|
60
|
+
different first moves. Then pin it: the sibling test already enforces the workflow list, so the
|
|
61
|
+
conclusion set wants the same treatment rather than a comment. Worth checking at the same time
|
|
62
|
+
whether <code>publish.yml</code> should distinguish "CI did not pass" from "CI did not finish"
|
|
63
|
+
— today both are a silent no-op, and a release that was skipped because a runner was slow
|
|
64
|
+
is recoverable by a rerun that nobody currently knows to start.
|
|
65
|
+
|
|
66
|
+
<b>Shipped.</b> The opener now gates on the green set <em>negated</em> —
|
|
67
|
+
<code>!contains(fromJSON('["success", "skipped", "neutral"]'), conclusion)</code> — so a
|
|
68
|
+
conclusion GitHub adds later defaults to loud. <code>skipped</code> and <code>neutral</code>
|
|
69
|
+
are in it deliberately: <code>release</code> skips on every run it does not publish from, so
|
|
70
|
+
without that exclusion each non-green <code>ci</code> would open two issues. The closer keeps
|
|
71
|
+
<code>== 'success'</code>, because a <code>cancelled</code> run says nothing about whether the
|
|
72
|
+
tracked failure is fixed and must not stand the issue down. The body now names the conclusion
|
|
73
|
+
and, for <code>ci</code>, says no release was cut and that a rerun is what publishes it.
|
|
74
|
+
|
|
75
|
+
<b>publish.yml was left alone, deliberately.</b> Its
|
|
76
|
+
<code>conclusion == 'success' && event == 'push'</code> guard is the fork-PR boundary
|
|
77
|
+
that stops an outsider cutting a real PyPI release; widening it to tell "did not pass" from
|
|
78
|
+
"did not finish" would trade a silent no-op for a security hole. The recoverable case — a
|
|
79
|
+
release skipped because a runner was slow — is recovered by the issue telling somebody to
|
|
80
|
+
rerun, which is what the new body does.
|
|
81
|
+
|
|
82
|
+
<b>Found on the way, and fixed in the same change.</b> An empty GitHub expression written
|
|
83
|
+
inside a <code>run:</code> or <code>script:</code> body makes zizmor emit
|
|
84
|
+
<code>couldn't parse expression</code> from six audits — template_injection,
|
|
85
|
+
overprovisioned_secrets, unredacted_secrets, obfuscation, secrets_outside_env and
|
|
86
|
+
unsound_ternary. A comment explaining why the script avoids interpolation was enough to cause
|
|
87
|
+
it. Measured three ways: in a YAML <code>#</code> comment it is harmless (zizmor does not read
|
|
88
|
+
those), in a <code>script:</code> body it costs six, and in a <code>run:</code> body it costs
|
|
89
|
+
six even behind a shell <code>#</code>.
|
|
90
|
+
|
|
91
|
+
<b>An earlier draft of this section said that blinded the audits for the whole file. It does
|
|
92
|
+
not, and the review that asked caught it.</b> Planting a real finding — a
|
|
93
|
+
<code>head_commit.message</code> interpolated into a <code>run:</code> — in two copies of
|
|
94
|
+
the file, one clean and one carrying an empty expression, zizmor reported the
|
|
95
|
+
template-injection in <b>both</b>. What is actually lost is the unparseable span itself, which
|
|
96
|
+
no audit inspects, plus six warning lines above a run that still ends in "No findings to
|
|
97
|
+
report". Worth preventing on those terms rather than the dramatic ones: a span that silently
|
|
98
|
+
opts out of SAST is a bad place for a mistake to hide. A parametrised test now walks every
|
|
99
|
+
workflow's parsed run/script bodies.
|
|
100
|
+
|
|
101
|
+
<b>One more hole the widening opened, and the review found it.</b>
|
|
102
|
+
<code>head_branch == 'main'</code> is not a provenance check. <code>ci.yml</code> runs on
|
|
103
|
+
<code>pull_request</code>, so a fork PR opened from a branch named <code>main</code> produces a
|
|
104
|
+
<code>ci</code> run whose <code>head_branch</code> is <code>main</code> — and
|
|
105
|
+
<code>cancel-in-progress</code> concludes it <code>cancelled</code> on every superseded push.
|
|
106
|
+
Under the old <code>== 'failure'</code> gate that was rare; under the new one it is routine PR
|
|
107
|
+
iteration, and the issue would have claimed a release was skipped for a run that was never
|
|
108
|
+
release-eligible. <code>publish.yml</code>, <code>sbom.yml</code> and
|
|
109
|
+
<code>mutation-weights-refresh.yml</code> all carry the event+repository pair and this file was
|
|
110
|
+
the only <code>workflow_run</code> consumer without it, so the fix is the house guard on
|
|
111
|
+
<em>both</em> jobs — the closer needed it just as much, since a <em>green</em> fork PR
|
|
112
|
+
could otherwise close a tracker for a failure still live on main. It is
|
|
113
|
+
<code>event != 'pull_request'</code> rather than <code>== 'push'</code> because three watched
|
|
114
|
+
workflows are themselves <code>workflow_run</code>-triggered.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: shard-weights-do-not-predict-the-job-timeout
|
|
3
3
|
board: code
|
|
4
4
|
section: trust
|
|
5
|
-
status:
|
|
5
|
+
status: inflight
|
|
6
6
|
category: CI · Bug
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
10
|
note: the pack is balanced to within 700ms of ideal and a shard still timed out at 75 min, cancelling a release
|
|
11
11
|
order: 364
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/shard-headroom
|
|
13
|
+
pr: 1023
|
|
14
14
|
title: "Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release"
|
|
15
15
|
---
|
|
16
16
|
<b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
|
|
@@ -55,3 +55,40 @@ speedup cap is 6.0x only because <code>store.py</code> is split per function alr
|
|
|
55
55
|
shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
|
|
56
56
|
looks identical to a success from the release path's point of view, because
|
|
57
57
|
<code>publish.yml</code> only asks whether the conclusion was <code>success</code>.
|
|
58
|
+
|
|
59
|
+
<b>Fixed, and the calibration is measured.</b> Fitted over the Actions job API on 2026-10-01:
|
|
60
|
+
<b>169 successful <code>mutation-shard</code> jobs</b>, of which 26 runs completed all six
|
|
61
|
+
shards. Two numbers come out, and they answer different questions. Per <em>run</em> — the
|
|
62
|
+
sum over its six shards, which is pack-invariant and so isolates runner speed from packing
|
|
63
|
+
— observed minutes over committed weight-minutes is min 0.265, <b>median 0.307</b>, max
|
|
64
|
+
0.355: a spread of only <b>1.34x</b>. Per <em>shard</em> against its own median the range is
|
|
65
|
+
1.10x (shard 3) to <b>1.91x</b> (shard 2: median 38.0 min, worst 72.5). <b>So the mean is not
|
|
66
|
+
what fails.</b> A single slow runner inside an otherwise ordinary run is, and a check scored on
|
|
67
|
+
the median would have passed the pack that was cancelled — its median shard was 37.8
|
|
68
|
+
minutes against a 75-minute cap, half the ceiling.
|
|
69
|
+
|
|
70
|
+
<b>The 0.307 is not a fudge factor, it is parallelism.</b> Weights are summed per-mutant
|
|
71
|
+
durations — the work a shard holds laid end to end — and the runner executes it
|
|
72
|
+
four-way parallel (<code>max_children</code> defaults to <code>os.cpu_count()</code>;
|
|
73
|
+
<code>ubuntu-latest</code> is 4 vCPU). The median inverts to 3.26 effective workers of 4, so what
|
|
74
|
+
is stored is <b>81.4% parallel efficiency</b> and the worker count separately: a runner with more
|
|
75
|
+
vCPUs then moves one constant and contention moves the other, where a single fitted number would
|
|
76
|
+
hide which had happened.
|
|
77
|
+
|
|
78
|
+
<b>It reproduces the failure it was derived to predict.</b> Six shards at these weights:
|
|
79
|
+
37.8 median minutes × 1.91 = a <b>72.3-minute tail</b> against a real worst job of
|
|
80
|
+
<b>72.5</b> — 96% of the cap. <code>plan --explain --timeout-minutes 75</code> now prints
|
|
81
|
+
that and exits 1. The matrix moved to <b>eight</b>, where the same arithmetic gives 28.4 ×
|
|
82
|
+
1.91 = <b>54.2 min, 72% of the cap</b>; the largest unit (4,063,161 ms) still fits inside an even
|
|
83
|
+
share (5,543,280 ms), so the speedup cap is a full 8.00x and more shards cost nothing but runner
|
|
84
|
+
slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
|
|
85
|
+
<code>ci.yml</code> and <code>mutation-weights-refresh.yml</code> (<code>timeout-minutes</code>
|
|
86
|
+
cannot be read through <code>${{ }}</code>, so agreement is asserted rather than derived), and
|
|
87
|
+
re-runs the headroom check on the committed pack every build — a pack that would be
|
|
88
|
+
cancelled now fails in the <code>test</code> job in milliseconds.
|
|
89
|
+
|
|
90
|
+
<b>Not fixed here, and now its own card:</b> a <code>cancelled</code> <code>ci</code> on main is
|
|
91
|
+
still silent. <code>ci-failure-alert</code> gates on
|
|
92
|
+
<code>conclusion == 'failure'</code>, so the run that skipped the release notified nobody either
|
|
93
|
+
— see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code>.
|
|
94
|
+
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
<div class="stat"><b>27</b><span>Shipped</span></div>
|
|
144
144
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
145
145
|
<div class="stat"><b>75</b><span>Planned</span></div>
|
|
146
|
-
<div class="stat"><b>
|
|
146
|
+
<div class="stat"><b>522</b><span>Loop finds</span></div>
|
|
147
147
|
<!-- /ROADMAP:stats -->
|
|
148
148
|
</div>
|
|
149
149
|
</section>
|
|
@@ -7748,7 +7748,7 @@ the walk and the <code>redirected</code> reporting this card inherits.</p>
|
|
|
7748
7748
|
</article>
|
|
7749
7749
|
|
|
7750
7750
|
<article class="cap rcard" id="shard-weights-do-not-predict-the-job-timeout">
|
|
7751
|
-
<div class="head"><span class="pill
|
|
7751
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">CI · Bug</span></div>
|
|
7752
7752
|
<h3>Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release</h3>
|
|
7753
7753
|
<p><b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
|
|
7754
7754
|
job's <code>timeout-minutes: 75</code> and was cancelled. The aggregate <code>mutation</code> job
|
|
@@ -7791,7 +7791,43 @@ give the heaviest shard headroom — at eight shards the ideal drops by a qu
|
|
|
7791
7791
|
speedup cap is 6.0x only because <code>store.py</code> is split per function already, so more
|
|
7792
7792
|
shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
|
|
7793
7793
|
looks identical to a success from the release path's point of view, because
|
|
7794
|
-
<code>publish.yml</code> only asks whether the conclusion was <code>success</code
|
|
7794
|
+
<code>publish.yml</code> only asks whether the conclusion was <code>success</code>.
|
|
7795
|
+
|
|
7796
|
+
<b>Fixed, and the calibration is measured.</b> Fitted over the Actions job API on 2026-10-01:
|
|
7797
|
+
<b>169 successful <code>mutation-shard</code> jobs</b>, of which 26 runs completed all six
|
|
7798
|
+
shards. Two numbers come out, and they answer different questions. Per <em>run</em> — the
|
|
7799
|
+
sum over its six shards, which is pack-invariant and so isolates runner speed from packing
|
|
7800
|
+
— observed minutes over committed weight-minutes is min 0.265, <b>median 0.307</b>, max
|
|
7801
|
+
0.355: a spread of only <b>1.34x</b>. Per <em>shard</em> against its own median the range is
|
|
7802
|
+
1.10x (shard 3) to <b>1.91x</b> (shard 2: median 38.0 min, worst 72.5). <b>So the mean is not
|
|
7803
|
+
what fails.</b> A single slow runner inside an otherwise ordinary run is, and a check scored on
|
|
7804
|
+
the median would have passed the pack that was cancelled — its median shard was 37.8
|
|
7805
|
+
minutes against a 75-minute cap, half the ceiling.
|
|
7806
|
+
|
|
7807
|
+
<b>The 0.307 is not a fudge factor, it is parallelism.</b> Weights are summed per-mutant
|
|
7808
|
+
durations — the work a shard holds laid end to end — and the runner executes it
|
|
7809
|
+
four-way parallel (<code>max_children</code> defaults to <code>os.cpu_count()</code>;
|
|
7810
|
+
<code>ubuntu-latest</code> is 4 vCPU). The median inverts to 3.26 effective workers of 4, so what
|
|
7811
|
+
is stored is <b>81.4% parallel efficiency</b> and the worker count separately: a runner with more
|
|
7812
|
+
vCPUs then moves one constant and contention moves the other, where a single fitted number would
|
|
7813
|
+
hide which had happened.
|
|
7814
|
+
|
|
7815
|
+
<b>It reproduces the failure it was derived to predict.</b> Six shards at these weights:
|
|
7816
|
+
37.8 median minutes × 1.91 = a <b>72.3-minute tail</b> against a real worst job of
|
|
7817
|
+
<b>72.5</b> — 96% of the cap. <code>plan --explain --timeout-minutes 75</code> now prints
|
|
7818
|
+
that and exits 1. The matrix moved to <b>eight</b>, where the same arithmetic gives 28.4 ×
|
|
7819
|
+
1.91 = <b>54.2 min, 72% of the cap</b>; the largest unit (4,063,161 ms) still fits inside an even
|
|
7820
|
+
share (5,543,280 ms), so the speedup cap is a full 8.00x and more shards cost nothing but runner
|
|
7821
|
+
slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
|
|
7822
|
+
<code>ci.yml</code> and <code>mutation-weights-refresh.yml</code> (<code>timeout-minutes</code>
|
|
7823
|
+
cannot be read through <code>${{ }}</code>, so agreement is asserted rather than derived), and
|
|
7824
|
+
re-runs the headroom check on the committed pack every build — a pack that would be
|
|
7825
|
+
cancelled now fails in the <code>test</code> job in milliseconds.
|
|
7826
|
+
|
|
7827
|
+
<b>Not fixed here, and now its own card:</b> a <code>cancelled</code> <code>ci</code> on main is
|
|
7828
|
+
still silent. <code>ci-failure-alert</code> gates on
|
|
7829
|
+
<code>conclusion == 'failure'</code>, so the run that skipped the release notified nobody either
|
|
7830
|
+
— see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code>.</p>
|
|
7795
7831
|
<div class="meta">
|
|
7796
7832
|
<span class="m">Complexity <b>M</b></span>
|
|
7797
7833
|
<span class="m hi">Impact <b>High</b></span>
|
|
@@ -7799,6 +7835,116 @@ looks identical to a success from the release path's point of view, because
|
|
|
7799
7835
|
<span class="m">the pack is balanced to within 700ms of ideal and a shard still timed out at 75 min, cancelling a release</span>
|
|
7800
7836
|
</div>
|
|
7801
7837
|
</article>
|
|
7838
|
+
|
|
7839
|
+
<article class="cap rcard" id="cancelled-ci-on-main-is-silent-and-skips-the-release">
|
|
7840
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">CI · Bug</span></div>
|
|
7841
|
+
<h3>A <code>cancelled</code> <code>ci</code> on main skips the release and alerts nobody, because the alert asks only about <code>failure</code></h3>
|
|
7842
|
+
<p><b>Two independent gates, both keyed on the wrong half of the same enum.</b>
|
|
7843
|
+
<code>publish.yml</code> fires on <code>workflow_run</code> and ships only when
|
|
7844
|
+
<code>conclusion == 'success'</code>; <code>ci-failure-alert</code> opens the tracking issue
|
|
7845
|
+
only when <code>conclusion == 'failure'</code>. A <code>ci</code> run that concludes
|
|
7846
|
+
<code>cancelled</code> satisfies neither. <b>It does not ship and it does not tell anyone</b>
|
|
7847
|
+
— the one conclusion that falls through both.
|
|
7848
|
+
|
|
7849
|
+
<b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> hit
|
|
7850
|
+
<code>timeout-minutes: 75</code> and was cancelled, the aggregate <code>mutation</code> job
|
|
7851
|
+
failed, and the run concluded <code>cancelled</code> rather than <code>failure</code>. No
|
|
7852
|
+
release, no issue, no notification. It surfaced the same day, and only because somebody was
|
|
7853
|
+
reading per-shard job durations out of the Actions API for an unrelated reason — nothing
|
|
7854
|
+
in the repo would have raised it, and the next one will be found the same way or not at all.
|
|
7855
|
+
|
|
7856
|
+
<b>This is the exact blind spot <code>ci-failure-alert</code>'s own header describes.</b> That
|
|
7857
|
+
file opens by explaining that <code>demo</code> "failed six runs out of six on main, alerted
|
|
7858
|
+
nobody, and was found by a manual audit instead", and concludes that "any workflow that runs on
|
|
7859
|
+
main and nobody watches belongs here". The list was then enforced by
|
|
7860
|
+
<code>tests/unit/test_failure_alerting_covers_unattended.py</code> so a new workflow cannot
|
|
7861
|
+
quietly join the blind spot. <b>The enforcement is over <em>which workflows</em> are watched,
|
|
7862
|
+
and the hole here is <em>which conclusions</em> are</b> — <code>ci</code> is on the list
|
|
7863
|
+
and still said nothing.
|
|
7864
|
+
|
|
7865
|
+
<b>Why a timeout is not an exotic case.</b> It is the designed behaviour of every
|
|
7866
|
+
<code>timeout-minutes</code> in the repo, and <code>mutation-shard</code>'s is reached by an
|
|
7867
|
+
ordinary slow runner rather than by a bug: across 169 measured shard jobs the worst was 72.5
|
|
7868
|
+
minutes against a 75-minute cap. A job can also be cancelled by the concurrency group or by a
|
|
7869
|
+
human pressing the button — and only the last of those is one anybody already knows about.
|
|
7870
|
+
|
|
7871
|
+
<b>A runner eviction is the neighbouring case, and it concludes differently.</b> An earlier
|
|
7872
|
+
draft of this card listed eviction among the routes to <code>cancelled</code>; measured on
|
|
7873
|
+
2026-10-02, it is not. <code>mutation-shard (0)</code> on main took
|
|
7874
|
+
<code>The runner has received a shutdown signal</code> and exit 143 at mutant 3095 of 28084,
|
|
7875
|
+
the job concluded <b>failure</b>, and the alerting fired correctly — issue #1024 opened
|
|
7876
|
+
and auto-closed when a rerun of the failed jobs went green. That is the point of widening on
|
|
7877
|
+
the <em>green</em> set rather than enumerating bad conclusions: the two most common ways a
|
|
7878
|
+
shard dies land on different sides of an <code>== 'failure'</code> test, and a gate that has
|
|
7879
|
+
to know which one it was is a gate that will be wrong again.
|
|
7880
|
+
|
|
7881
|
+
<b>Shape of the work.</b> Widen the alert's condition from <code>== 'failure'</code> to the set
|
|
7882
|
+
of conclusions that mean "main is not green", which is every one except <code>success</code>,
|
|
7883
|
+
<code>skipped</code> and <code>neutral</code> — naming what is <em>excluded</em> rather
|
|
7884
|
+
than what is included, so the next conclusion GitHub adds defaults to loud. The issue body
|
|
7885
|
+
should say which conclusion it was, because <em>cancelled</em> and <em>failure</em> want
|
|
7886
|
+
different first moves. Then pin it: the sibling test already enforces the workflow list, so the
|
|
7887
|
+
conclusion set wants the same treatment rather than a comment. Worth checking at the same time
|
|
7888
|
+
whether <code>publish.yml</code> should distinguish "CI did not pass" from "CI did not finish"
|
|
7889
|
+
— today both are a silent no-op, and a release that was skipped because a runner was slow
|
|
7890
|
+
is recoverable by a rerun that nobody currently knows to start.
|
|
7891
|
+
|
|
7892
|
+
<b>Shipped.</b> The opener now gates on the green set <em>negated</em> —
|
|
7893
|
+
<code>!contains(fromJSON('["success", "skipped", "neutral"]'), conclusion)</code> — so a
|
|
7894
|
+
conclusion GitHub adds later defaults to loud. <code>skipped</code> and <code>neutral</code>
|
|
7895
|
+
are in it deliberately: <code>release</code> skips on every run it does not publish from, so
|
|
7896
|
+
without that exclusion each non-green <code>ci</code> would open two issues. The closer keeps
|
|
7897
|
+
<code>== 'success'</code>, because a <code>cancelled</code> run says nothing about whether the
|
|
7898
|
+
tracked failure is fixed and must not stand the issue down. The body now names the conclusion
|
|
7899
|
+
and, for <code>ci</code>, says no release was cut and that a rerun is what publishes it.
|
|
7900
|
+
|
|
7901
|
+
<b>publish.yml was left alone, deliberately.</b> Its
|
|
7902
|
+
<code>conclusion == 'success' && event == 'push'</code> guard is the fork-PR boundary
|
|
7903
|
+
that stops an outsider cutting a real PyPI release; widening it to tell "did not pass" from
|
|
7904
|
+
"did not finish" would trade a silent no-op for a security hole. The recoverable case — a
|
|
7905
|
+
release skipped because a runner was slow — is recovered by the issue telling somebody to
|
|
7906
|
+
rerun, which is what the new body does.
|
|
7907
|
+
|
|
7908
|
+
<b>Found on the way, and fixed in the same change.</b> An empty GitHub expression written
|
|
7909
|
+
inside a <code>run:</code> or <code>script:</code> body makes zizmor emit
|
|
7910
|
+
<code>couldn't parse expression</code> from six audits — template_injection,
|
|
7911
|
+
overprovisioned_secrets, unredacted_secrets, obfuscation, secrets_outside_env and
|
|
7912
|
+
unsound_ternary. A comment explaining why the script avoids interpolation was enough to cause
|
|
7913
|
+
it. Measured three ways: in a YAML <code>#</code> comment it is harmless (zizmor does not read
|
|
7914
|
+
those), in a <code>script:</code> body it costs six, and in a <code>run:</code> body it costs
|
|
7915
|
+
six even behind a shell <code>#</code>.
|
|
7916
|
+
|
|
7917
|
+
<b>An earlier draft of this section said that blinded the audits for the whole file. It does
|
|
7918
|
+
not, and the review that asked caught it.</b> Planting a real finding — a
|
|
7919
|
+
<code>head_commit.message</code> interpolated into a <code>run:</code> — in two copies of
|
|
7920
|
+
the file, one clean and one carrying an empty expression, zizmor reported the
|
|
7921
|
+
template-injection in <b>both</b>. What is actually lost is the unparseable span itself, which
|
|
7922
|
+
no audit inspects, plus six warning lines above a run that still ends in "No findings to
|
|
7923
|
+
report". Worth preventing on those terms rather than the dramatic ones: a span that silently
|
|
7924
|
+
opts out of SAST is a bad place for a mistake to hide. A parametrised test now walks every
|
|
7925
|
+
workflow's parsed run/script bodies.
|
|
7926
|
+
|
|
7927
|
+
<b>One more hole the widening opened, and the review found it.</b>
|
|
7928
|
+
<code>head_branch == 'main'</code> is not a provenance check. <code>ci.yml</code> runs on
|
|
7929
|
+
<code>pull_request</code>, so a fork PR opened from a branch named <code>main</code> produces a
|
|
7930
|
+
<code>ci</code> run whose <code>head_branch</code> is <code>main</code> — and
|
|
7931
|
+
<code>cancel-in-progress</code> concludes it <code>cancelled</code> on every superseded push.
|
|
7932
|
+
Under the old <code>== 'failure'</code> gate that was rare; under the new one it is routine PR
|
|
7933
|
+
iteration, and the issue would have claimed a release was skipped for a run that was never
|
|
7934
|
+
release-eligible. <code>publish.yml</code>, <code>sbom.yml</code> and
|
|
7935
|
+
<code>mutation-weights-refresh.yml</code> all carry the event+repository pair and this file was
|
|
7936
|
+
the only <code>workflow_run</code> consumer without it, so the fix is the house guard on
|
|
7937
|
+
<em>both</em> jobs — the closer needed it just as much, since a <em>green</em> fork PR
|
|
7938
|
+
could otherwise close a tracker for a failure still live on main. It is
|
|
7939
|
+
<code>event != 'pull_request'</code> rather than <code>== 'push'</code> because three watched
|
|
7940
|
+
workflows are themselves <code>workflow_run</code>-triggered.</p>
|
|
7941
|
+
<div class="meta">
|
|
7942
|
+
<span class="m">Complexity <b>S</b></span>
|
|
7943
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
7944
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
7945
|
+
<span class="m">the alerting that exists to make a red main impossible to miss asks only about 'failure', and the run that skipped a release was 'cancelled'</span>
|
|
7946
|
+
</div>
|
|
7947
|
+
</article>
|
|
7802
7948
|
<!-- /ROADMAP:cards -->
|
|
7803
7949
|
|
|
7804
7950
|
</div>
|