boost-skill-cli 1.0.278__tar.gz → 1.0.280__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boost_skill_cli-1.0.278/boost_skill_cli.egg-info → boost_skill_cli-1.0.280}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- boost_skill_cli-1.0.280/docs/roadmap/items/one-commit-can-cut-two-releases.md +52 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/release-verifies-the-wrong-commit.md +29 -8
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/sbom-release-event-never-fires.md +4 -1
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap.html +83 -11
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.gitattributes +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.gitignore +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/.vale.ini +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/LICENSE +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/Makefile +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/README.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/codecov.yml +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/index.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/examples/README.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/index.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/noxfile.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/setup.cfg +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/style/README.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/style/boost.css +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/style/boost.js +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/style/demo.html +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.280'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 280)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -249,6 +249,7 @@ docs/roadmap/items/mypy-strict-mode-for-commands.md
|
|
|
249
249
|
docs/roadmap/items/negative-limit-inverts-log-pulse-output.md
|
|
250
250
|
docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md
|
|
251
251
|
docs/roadmap/items/one-command-every-env-nox.md
|
|
252
|
+
docs/roadmap/items/one-commit-can-cut-two-releases.md
|
|
252
253
|
docs/roadmap/items/one-shared-atomic-write-helper.md
|
|
253
254
|
docs/roadmap/items/package-metadata-validation-twine-check-friends.md
|
|
254
255
|
docs/roadmap/items/patch-coverage-gate-diff-cover.md
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: one-commit-can-cut-two-releases
|
|
3
|
+
board: code
|
|
4
|
+
section: pipeline
|
|
5
|
+
status: planned
|
|
6
|
+
category: Release safety
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: v1.0.277 and v1.0.278 are the same commit; so were 246/247 and 248/249
|
|
11
|
+
order: 67
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: One commit can cut two releases, and the naive guard against it breaks retries
|
|
15
|
+
---
|
|
16
|
+
<code>publish.yml</code> checks out <code>ref: main</code> rather than the commit whose
|
|
17
|
+
<code>ci</code> fired it. <code>release-verifies-the-wrong-commit</code> fixed the
|
|
18
|
+
<em>verification</em> half of that — preflight now waits on the shipped sha's own gates
|
|
19
|
+
— but the same decoupling has a second consequence it does not address: <b>two triggers can
|
|
20
|
+
both resolve to the same tip and release it twice.</b>
|
|
21
|
+
|
|
22
|
+
Observed on <code>5061e756</code>: two <code>release</code> runs created 27 seconds apart
|
|
23
|
+
(22:24:32Z and 22:24:59Z), both succeeding, cutting <b>v1.0.277 and v1.0.278 from one commit</b>.
|
|
24
|
+
It recurs — <code>v1.0.246</code>/<code>v1.0.247</code> both point at <code>c1d67c1c</code>,
|
|
25
|
+
and <code>v1.0.248</code>/<code>v1.0.249</code> both at <code>c750651</code>. Each duplicate burns
|
|
26
|
+
a PyPI version on a byte-identical build and, until the companion fix in this change, left one of
|
|
27
|
+
the two GitHub Releases with no SBOM.
|
|
28
|
+
|
|
29
|
+
Preflight does not stop it and was never going to: both runs check out the same green tip, so both
|
|
30
|
+
legitimately pass every gate. The duplication is upstream of verification.
|
|
31
|
+
|
|
32
|
+
<b>The obvious fix is a trap, which is why this is filed rather than patched.</b> Guarding with
|
|
33
|
+
"skip if <code>git tag --points-at HEAD</code> already has a <code>v*</code> tag" would stop the
|
|
34
|
+
duplicate — and would also stop any legitimate <b>retry</b>. release-drafter creates the tag
|
|
35
|
+
<em>before</em> the build, attestation, wheel smoke-test and PyPI upload run, so a release that
|
|
36
|
+
failed at the upload step leaves a tag behind with nothing on PyPI. Under that guard, re-running it
|
|
37
|
+
would skip instead of finishing the job, converting a recoverable failure into a version that can
|
|
38
|
+
never be published. The <code>concurrency: group: release</code> block does not help either: it
|
|
39
|
+
serialises the two runs rather than collapsing them, which is exactly what happened here.
|
|
40
|
+
|
|
41
|
+
A correct fix has to distinguish "already released" from "tagged but not published" — check
|
|
42
|
+
whether the version exists on PyPI, or whether the GitHub Release has its expected assets, rather
|
|
43
|
+
than whether a tag exists. Alternatives worth weighing: collapse the trigger so only the newest
|
|
44
|
+
queued run proceeds (<code>cancel-in-progress</code> on a group keyed by nothing, losing the
|
|
45
|
+
serialisation the release job wants), or skip when <code>git rev-parse HEAD</code> already differs
|
|
46
|
+
from <code>workflow_run.head_sha</code> — that is self-healing, since the newer commit's own
|
|
47
|
+
ci will trigger its own release, but it means some merges never get their own version.
|
|
48
|
+
|
|
49
|
+
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
50
|
+
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
51
|
+
with no SBOM. Each tag is built separately, because setuptools-scm reads the version from the tag
|
|
52
|
+
and one SBOM cannot honestly describe two versions.
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
id: release-verifies-the-wrong-commit
|
|
3
3
|
board: code
|
|
4
4
|
section: pipeline
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Release safety
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
|
-
note:
|
|
10
|
+
note: preflight now waits on 17 of 18 for the shipped sha, up from 2
|
|
11
11
|
order: 64
|
|
12
12
|
owner:
|
|
13
13
|
pr:
|
|
@@ -39,12 +39,16 @@ rather than a decision is in-tree: <code>release_preflight.py</code>'s own docst
|
|
|
39
39
|
for <em>every</em> required workflow for the exact commit being released, and the caller hands it
|
|
40
40
|
two.
|
|
41
41
|
|
|
42
|
-
<b>A required context that can never report on <code>main</code> at all
|
|
43
|
-
|
|
44
|
-
<code>merge_group</code
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<code>
|
|
42
|
+
<b>A required context that can never report on <code>main</code> at all — and must not
|
|
43
|
+
be made to.</b> <code>osv-scanner.yml</code> declares only <code>pull_request</code> and
|
|
44
|
+
<code>merge_group</code>, so <code>scan-pr / osv-scan</code> produces nothing for any commit on
|
|
45
|
+
<code>main</code>. This card originally proposed giving it a <code>push</code> trigger. <b>That was
|
|
46
|
+
wrong.</b> It is PR-scoped deliberately: it calls the
|
|
47
|
+
<code>osv-scanner-reusable-<b>pr</b>.yml</code> diff workflow so it reports only what a pull
|
|
48
|
+
request <em>adds</em>, and its own header records why a full-repo scan is unwanted — it
|
|
49
|
+
would trip the accepted, documented old-langchain pin in the <code>[eval]</code> extra that ragas
|
|
50
|
+
requires. The correct conclusion is the opposite one: <code>scan-pr / osv-scan</code> is
|
|
51
|
+
inherently a pull-request gate and belongs nowhere near release preflight.
|
|
48
52
|
|
|
49
53
|
The fix is not to change the checkout ref. Pinning to
|
|
50
54
|
<code>github.event.workflow_run.head_sha</code> would build the older commit while release-drafter
|
|
@@ -55,3 +59,20 @@ the triggering run's <code>head_sha</code>. This is the third defect found in th
|
|
|
55
59
|
— see <code>publish-trigger-was-reachable-from-a-fork</code> (who can fire it) and
|
|
56
60
|
<code>publish-gate-ignores-pip-audit-and-metadata</code> (which gates are consulted); this one is
|
|
57
61
|
<em>which commit</em> they were consulted about.
|
|
62
|
+
|
|
63
|
+
<b>Shipped.</b> <code>publish.yml</code> now passes preflight every required context's workflow
|
|
64
|
+
that actually runs on a push to <code>main</code> — <code>ci.yml</code>,
|
|
65
|
+
<code>codeql.yml</code>, <code>pip-audit.yml</code>, <code>package-metadata.yml</code> —
|
|
66
|
+
taking coverage of the shipped sha from <b>2 of 18 required contexts to 17 of 18</b>. The
|
|
67
|
+
remaining one is <code>scan-pr / osv-scan</code>, excluded on purpose for the reason above. The
|
|
68
|
+
checkout ref is untouched: pinning it to the trigger's <code>head_sha</code> would build the older
|
|
69
|
+
commit while release-drafter still tags the branch head, leaving artifact and tag disagreeing.
|
|
70
|
+
<code>--timeout-seconds</code> is raised to 3600 because ci must now finish for the shipped sha and
|
|
71
|
+
ci's wall clock is dominated by runner queueing; failing closed on a slow-but-green ci would be
|
|
72
|
+
worse than waiting, and a timeout is still fail-closed either way.
|
|
73
|
+
|
|
74
|
+
Verified by running the real script against <code>main</code> before merging: the four shipped
|
|
75
|
+
gates return <b>exit 0</b> ("all 4 release gates green"), and adding
|
|
76
|
+
<code>--require osv-scanner.yml</code> returns <b>exit 1</b> — "no run recorded for this
|
|
77
|
+
commit ... a release gate that never reported cannot be assumed green" — which is the
|
|
78
|
+
concrete proof that the original recommendation would have blocked every release.
|
|
@@ -48,7 +48,10 @@ Two details the trigger change forced. The workflow now resolves its tag from th
|
|
|
48
48
|
commit (<code>git tag --points-at</code>) rather than "newest release" — releases here
|
|
49
49
|
land minutes apart, so <code>gh release view</code> would race and SBOM the <em>next</em>
|
|
50
50
|
version; and two tags on one commit is real (<code>v1.0.248</code> and <code>v1.0.249</code>
|
|
51
|
-
both point at <code>c750651</code>), so it takes
|
|
51
|
+
both point at <code>c750651</code>), so it takes <em>every</em> tag on the commit and builds each
|
|
52
|
+
separately — taking only the highest left the other release with no SBOM, which showed up in
|
|
53
|
+
production as <code>v1.0.277</code>; see <code>one-commit-can-cut-two-releases</code>. And per the
|
|
54
|
+
original note, a
|
|
52
55
|
final step re-reads the release and fails unless the asset is actually attached — a
|
|
53
56
|
silent upload no-op is indistinguishable from success, which is the same class of quiet
|
|
54
57
|
nothing that produced this bug.
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
111
111
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
112
112
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
113
|
-
<div class="stat"><b>
|
|
113
|
+
<div class="stat"><b>172</b><span>Loop finds</span></div>
|
|
114
114
|
<!-- /ROADMAP:stats -->
|
|
115
115
|
</div>
|
|
116
116
|
</section>
|
|
@@ -2501,7 +2501,7 @@ caught by a human noticing a pip warning, twice, by luck.</p>
|
|
|
2501
2501
|
</article>
|
|
2502
2502
|
|
|
2503
2503
|
<article class="cap rcard" id="release-verifies-the-wrong-commit">
|
|
2504
|
-
<div class="head"><span class="pill
|
|
2504
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Release safety</span></div>
|
|
2505
2505
|
<h3>The release verifies one commit and ships another</h3>
|
|
2506
2506
|
<p><code>publish.yml</code> fires on <code>workflow_run</code> when <code>ci</code> completes, gates
|
|
2507
2507
|
on that run's <code>conclusion == 'success'</code> (plus <code>event == 'push'</code> and
|
|
@@ -2529,12 +2529,16 @@ rather than a decision is in-tree: <code>release_preflight.py</code>'s own docst
|
|
|
2529
2529
|
for <em>every</em> required workflow for the exact commit being released, and the caller hands it
|
|
2530
2530
|
two.
|
|
2531
2531
|
|
|
2532
|
-
<b>A required context that can never report on <code>main</code> at all
|
|
2533
|
-
|
|
2534
|
-
<code>merge_group</code
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
<code>
|
|
2532
|
+
<b>A required context that can never report on <code>main</code> at all — and must not
|
|
2533
|
+
be made to.</b> <code>osv-scanner.yml</code> declares only <code>pull_request</code> and
|
|
2534
|
+
<code>merge_group</code>, so <code>scan-pr / osv-scan</code> produces nothing for any commit on
|
|
2535
|
+
<code>main</code>. This card originally proposed giving it a <code>push</code> trigger. <b>That was
|
|
2536
|
+
wrong.</b> It is PR-scoped deliberately: it calls the
|
|
2537
|
+
<code>osv-scanner-reusable-<b>pr</b>.yml</code> diff workflow so it reports only what a pull
|
|
2538
|
+
request <em>adds</em>, and its own header records why a full-repo scan is unwanted — it
|
|
2539
|
+
would trip the accepted, documented old-langchain pin in the <code>[eval]</code> extra that ragas
|
|
2540
|
+
requires. The correct conclusion is the opposite one: <code>scan-pr / osv-scan</code> is
|
|
2541
|
+
inherently a pull-request gate and belongs nowhere near release preflight.
|
|
2538
2542
|
|
|
2539
2543
|
The fix is not to change the checkout ref. Pinning to
|
|
2540
2544
|
<code>github.event.workflow_run.head_sha</code> would build the older commit while release-drafter
|
|
@@ -2544,12 +2548,29 @@ change is to widen preflight's <code>--require</code> set to the contexts that a
|
|
|
2544
2548
|
the triggering run's <code>head_sha</code>. This is the third defect found in the same few lines
|
|
2545
2549
|
— see <code>publish-trigger-was-reachable-from-a-fork</code> (who can fire it) and
|
|
2546
2550
|
<code>publish-gate-ignores-pip-audit-and-metadata</code> (which gates are consulted); this one is
|
|
2547
|
-
<em>which commit</em> they were consulted about
|
|
2551
|
+
<em>which commit</em> they were consulted about.
|
|
2552
|
+
|
|
2553
|
+
<b>Shipped.</b> <code>publish.yml</code> now passes preflight every required context's workflow
|
|
2554
|
+
that actually runs on a push to <code>main</code> — <code>ci.yml</code>,
|
|
2555
|
+
<code>codeql.yml</code>, <code>pip-audit.yml</code>, <code>package-metadata.yml</code> —
|
|
2556
|
+
taking coverage of the shipped sha from <b>2 of 18 required contexts to 17 of 18</b>. The
|
|
2557
|
+
remaining one is <code>scan-pr / osv-scan</code>, excluded on purpose for the reason above. The
|
|
2558
|
+
checkout ref is untouched: pinning it to the trigger's <code>head_sha</code> would build the older
|
|
2559
|
+
commit while release-drafter still tags the branch head, leaving artifact and tag disagreeing.
|
|
2560
|
+
<code>--timeout-seconds</code> is raised to 3600 because ci must now finish for the shipped sha and
|
|
2561
|
+
ci's wall clock is dominated by runner queueing; failing closed on a slow-but-green ci would be
|
|
2562
|
+
worse than waiting, and a timeout is still fail-closed either way.
|
|
2563
|
+
|
|
2564
|
+
Verified by running the real script against <code>main</code> before merging: the four shipped
|
|
2565
|
+
gates return <b>exit 0</b> ("all 4 release gates green"), and adding
|
|
2566
|
+
<code>--require osv-scanner.yml</code> returns <b>exit 1</b> — "no run recorded for this
|
|
2567
|
+
commit ... a release gate that never reported cannot be assumed green" — which is the
|
|
2568
|
+
concrete proof that the original recommendation would have blocked every release.</p>
|
|
2548
2569
|
<div class="meta">
|
|
2549
2570
|
<span class="m">Complexity <b>S</b></span>
|
|
2550
2571
|
<span class="m hi">Impact <b>High</b></span>
|
|
2551
2572
|
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
2552
|
-
<span class="m">
|
|
2573
|
+
<span class="m">preflight now waits on 17 of 18 for the shipped sha, up from 2</span>
|
|
2553
2574
|
</div>
|
|
2554
2575
|
</article>
|
|
2555
2576
|
|
|
@@ -2647,6 +2668,54 @@ before touching a tree, and 68 stale entries make that check noisier for every c
|
|
|
2647
2668
|
<span class="m">68 of 70 loop/* branches have a merged PR; one setting fixes it</span>
|
|
2648
2669
|
</div>
|
|
2649
2670
|
</article>
|
|
2671
|
+
|
|
2672
|
+
<article class="cap rcard" id="one-commit-can-cut-two-releases">
|
|
2673
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Release safety</span></div>
|
|
2674
|
+
<h3>One commit can cut two releases, and the naive guard against it breaks retries</h3>
|
|
2675
|
+
<p><code>publish.yml</code> checks out <code>ref: main</code> rather than the commit whose
|
|
2676
|
+
<code>ci</code> fired it. <code>release-verifies-the-wrong-commit</code> fixed the
|
|
2677
|
+
<em>verification</em> half of that — preflight now waits on the shipped sha's own gates
|
|
2678
|
+
— but the same decoupling has a second consequence it does not address: <b>two triggers can
|
|
2679
|
+
both resolve to the same tip and release it twice.</b>
|
|
2680
|
+
|
|
2681
|
+
Observed on <code>5061e756</code>: two <code>release</code> runs created 27 seconds apart
|
|
2682
|
+
(22:24:32Z and 22:24:59Z), both succeeding, cutting <b>v1.0.277 and v1.0.278 from one commit</b>.
|
|
2683
|
+
It recurs — <code>v1.0.246</code>/<code>v1.0.247</code> both point at <code>c1d67c1c</code>,
|
|
2684
|
+
and <code>v1.0.248</code>/<code>v1.0.249</code> both at <code>c750651</code>. Each duplicate burns
|
|
2685
|
+
a PyPI version on a byte-identical build and, until the companion fix in this change, left one of
|
|
2686
|
+
the two GitHub Releases with no SBOM.
|
|
2687
|
+
|
|
2688
|
+
Preflight does not stop it and was never going to: both runs check out the same green tip, so both
|
|
2689
|
+
legitimately pass every gate. The duplication is upstream of verification.
|
|
2690
|
+
|
|
2691
|
+
<b>The obvious fix is a trap, which is why this is filed rather than patched.</b> Guarding with
|
|
2692
|
+
"skip if <code>git tag --points-at HEAD</code> already has a <code>v*</code> tag" would stop the
|
|
2693
|
+
duplicate — and would also stop any legitimate <b>retry</b>. release-drafter creates the tag
|
|
2694
|
+
<em>before</em> the build, attestation, wheel smoke-test and PyPI upload run, so a release that
|
|
2695
|
+
failed at the upload step leaves a tag behind with nothing on PyPI. Under that guard, re-running it
|
|
2696
|
+
would skip instead of finishing the job, converting a recoverable failure into a version that can
|
|
2697
|
+
never be published. The <code>concurrency: group: release</code> block does not help either: it
|
|
2698
|
+
serialises the two runs rather than collapsing them, which is exactly what happened here.
|
|
2699
|
+
|
|
2700
|
+
A correct fix has to distinguish "already released" from "tagged but not published" — check
|
|
2701
|
+
whether the version exists on PyPI, or whether the GitHub Release has its expected assets, rather
|
|
2702
|
+
than whether a tag exists. Alternatives worth weighing: collapse the trigger so only the newest
|
|
2703
|
+
queued run proceeds (<code>cancel-in-progress</code> on a group keyed by nothing, losing the
|
|
2704
|
+
serialisation the release job wants), or skip when <code>git rev-parse HEAD</code> already differs
|
|
2705
|
+
from <code>workflow_run.head_sha</code> — that is self-healing, since the newer commit's own
|
|
2706
|
+
ci will trigger its own release, but it means some merges never get their own version.
|
|
2707
|
+
|
|
2708
|
+
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
2709
|
+
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
2710
|
+
with no SBOM. Each tag is built separately, because setuptools-scm reads the version from the tag
|
|
2711
|
+
and one SBOM cannot honestly describe two versions.</p>
|
|
2712
|
+
<div class="meta">
|
|
2713
|
+
<span class="m">Complexity <b>M</b></span>
|
|
2714
|
+
<span class="m">Impact <b>Med</b></span>
|
|
2715
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
2716
|
+
<span class="m">v1.0.277 and v1.0.278 are the same commit; so were 246/247 and 248/249</span>
|
|
2717
|
+
</div>
|
|
2718
|
+
</article>
|
|
2650
2719
|
<!-- /ROADMAP:cards -->
|
|
2651
2720
|
|
|
2652
2721
|
</div>
|
|
@@ -4008,7 +4077,10 @@ Two details the trigger change forced. The workflow now resolves its tag from th
|
|
|
4008
4077
|
commit (<code>git tag --points-at</code>) rather than "newest release" — releases here
|
|
4009
4078
|
land minutes apart, so <code>gh release view</code> would race and SBOM the <em>next</em>
|
|
4010
4079
|
version; and two tags on one commit is real (<code>v1.0.248</code> and <code>v1.0.249</code>
|
|
4011
|
-
both point at <code>c750651</code>), so it takes
|
|
4080
|
+
both point at <code>c750651</code>), so it takes <em>every</em> tag on the commit and builds each
|
|
4081
|
+
separately — taking only the highest left the other release with no SBOM, which showed up in
|
|
4082
|
+
production as <code>v1.0.277</code>; see <code>one-commit-can-cut-two-releases</code>. And per the
|
|
4083
|
+
original note, a
|
|
4012
4084
|
final step re-reads the release and fails unless the asset is actually attached — a
|
|
4013
4085
|
silent upload no-op is indistinguishable from success, which is the same class of quiet
|
|
4014
4086
|
nothing that produced this bug.</p>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.278 → boost_skill_cli-1.0.280}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|