boost-skill-cli 1.0.174__tar.gz → 1.0.175__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.174 → boost_skill_cli-1.0.175}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/ranx-significance-monitor.md +3 -3
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap.html +1 -1
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/eval_retrieval.py +4 -3
- boost_skill_cli-1.0.175/scripts/eval_stats_summary.py +83 -0
- boost_skill_cli-1.0.175/tests/unit/test_eval_stats_summary.py +80 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/.gitattributes +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/.gitignore +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/LICENSE +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/Makefile +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/README.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/index.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/examples/README.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/index.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/noxfile.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/setup.cfg +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/style/README.md +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/style/boost.css +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/style/boost.js +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/style/demo.html +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/tests/unit/test_workflows.py +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.175'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 175)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -229,6 +229,7 @@ scripts/ensure_eval_corpus.sh
|
|
|
229
229
|
scripts/eval_explain.py
|
|
230
230
|
scripts/eval_recommend.py
|
|
231
231
|
scripts/eval_retrieval.py
|
|
232
|
+
scripts/eval_stats_summary.py
|
|
232
233
|
scripts/import_budget.py
|
|
233
234
|
scripts/mutation_gate.py
|
|
234
235
|
style/README.md
|
|
@@ -286,6 +287,7 @@ tests/unit/test_dense_fallback.py
|
|
|
286
287
|
tests/unit/test_docs_pages_linked.py
|
|
287
288
|
tests/unit/test_embed.py
|
|
288
289
|
tests/unit/test_errors_and_cli_table.py
|
|
290
|
+
tests/unit/test_eval_stats_summary.py
|
|
289
291
|
tests/unit/test_frontmatter.py
|
|
290
292
|
tests/unit/test_gitleaks_config.py
|
|
291
293
|
tests/unit/test_gitutil.py
|
{boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/ranx-significance-monitor.md
RENAMED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: ranx-significance-monitor
|
|
3
3
|
board: code
|
|
4
4
|
section: health
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Retrieval eval
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 3
|
|
10
10
|
note: p-value, not point delta
|
|
11
11
|
order: 5
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/evalstats
|
|
13
|
+
pr: 198
|
|
14
14
|
title: Significance-tracked engine comparison (ranx monitor)
|
|
15
15
|
---
|
|
16
16
|
Tier 1b (the <code>ranx</code> paired t-test, <code>--stats</code>) only runs on
|
|
@@ -1019,7 +1019,7 @@ harness.</p>
|
|
|
1019
1019
|
</article>
|
|
1020
1020
|
|
|
1021
1021
|
<article class="cap rcard">
|
|
1022
|
-
<div class="head"><span class="pill
|
|
1022
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
|
|
1023
1023
|
<h3>Significance-tracked engine comparison (ranx monitor)</h3>
|
|
1024
1024
|
<p>Tier 1b (the <code>ranx</code> paired t-test, <code>--stats</code>) only runs on
|
|
1025
1025
|
demand today. Wire it into a scheduled CI monitor — like the
|
|
@@ -18,9 +18,10 @@ the math, this asks "does the right skill actually come back for a real question
|
|
|
18
18
|
|
|
19
19
|
Tier 1b (opt-in, offline): --stats runs a paired Student's t-test between the
|
|
20
20
|
engines with `ranx`, so a metric gap is reported as statistically *significant*
|
|
21
|
-
or not — a raw
|
|
22
|
-
better or just luckier on
|
|
23
|
-
if `ranx` is absent (never a core dependency).
|
|
21
|
+
or not — a raw recall-vs-recall number can't say whether an engine is genuinely
|
|
22
|
+
better or just luckier on the golden set. Needs the [eval] extra; degrades
|
|
23
|
+
cleanly if `ranx` is absent (never a core dependency). A scheduled CI monitor
|
|
24
|
+
(.github/workflows/eval-stats.yml) runs this and reports each metric's p-value.
|
|
24
25
|
|
|
25
26
|
Tier 2a (LLM, opt-in, key-gated): --rerank measures the *lift* the LLM rerank
|
|
26
27
|
stage (rag.rerank) adds over the raw BM25 order on the same golden set — no
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Render the `--stats --json` significance payload as a Markdown summary.
|
|
3
|
+
|
|
4
|
+
Turns the ranx paired t-test output from ``eval_retrieval.py --stats --json``
|
|
5
|
+
into a GitHub-Step-Summary table: for the best engine vs each other engine, is
|
|
6
|
+
each metric's lead statistically significant (p < 0.05) or just noise. Kept
|
|
7
|
+
separate from the workflow YAML so it is unit-testable (tests/unit) and so the
|
|
8
|
+
significance-reading logic lives in one place.
|
|
9
|
+
|
|
10
|
+
Usage:
|
|
11
|
+
python3 scripts/eval_stats_summary.py stats.json # prints Markdown to stdout
|
|
12
|
+
"""
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import json
|
|
16
|
+
import sys
|
|
17
|
+
from typing import Optional
|
|
18
|
+
|
|
19
|
+
ALPHA = 0.05
|
|
20
|
+
HEADER = "### Tier 1b — retrieval significance (ranx paired t-test)\n"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _load(path: str) -> Optional[dict]:
|
|
24
|
+
try:
|
|
25
|
+
with open(path, encoding="utf-8") as fh:
|
|
26
|
+
return json.load(fh)
|
|
27
|
+
except (OSError, ValueError):
|
|
28
|
+
return None
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def render(payload: Optional[dict]) -> str:
|
|
32
|
+
"""Markdown for a `--stats --json` payload (or a graceful skip note)."""
|
|
33
|
+
sig = (payload or {}).get("significance")
|
|
34
|
+
if not sig:
|
|
35
|
+
return (HEADER + "\n_skipped_ — no significance data "
|
|
36
|
+
"(the `[eval]` extra / `ranx` was unavailable, or fewer than "
|
|
37
|
+
"two engines ran).\n")
|
|
38
|
+
|
|
39
|
+
models = sig.get("model_names", [])
|
|
40
|
+
metrics = sig.get("metrics", [])
|
|
41
|
+
if len(models) < 2 or not metrics:
|
|
42
|
+
return HEADER + "\n_only one engine ran — nothing to compare._\n"
|
|
43
|
+
|
|
44
|
+
# The best engine is the last row of the comparison (engines are ordered
|
|
45
|
+
# worst→best upstream); every other engine carries the p-values of the best
|
|
46
|
+
# engine's lead over it in its `comparisons` block.
|
|
47
|
+
best = models[-1]
|
|
48
|
+
lines = [HEADER, "", "Best engine: **%s** (α = %.2f).\n" % (best, ALPHA)]
|
|
49
|
+
lines.append("| vs | " + " | ".join(metrics) + " |")
|
|
50
|
+
lines.append("|---|" + "|".join(["---"] * len(metrics)) + "|")
|
|
51
|
+
|
|
52
|
+
n_sig = 0
|
|
53
|
+
for other in models[:-1]:
|
|
54
|
+
comps = sig.get(other, {}).get("comparisons", {}).get(best, {})
|
|
55
|
+
cells = []
|
|
56
|
+
for m in metrics:
|
|
57
|
+
p = comps.get(m)
|
|
58
|
+
if p is None:
|
|
59
|
+
cells.append("—")
|
|
60
|
+
elif p < ALPHA:
|
|
61
|
+
cells.append("✅ p=%.4f" % p)
|
|
62
|
+
n_sig += 1
|
|
63
|
+
else:
|
|
64
|
+
cells.append("· p=%.4f" % p)
|
|
65
|
+
lines.append("| %s | %s |" % (other, " | ".join(cells)))
|
|
66
|
+
|
|
67
|
+
lines.append("")
|
|
68
|
+
lines.append("_✅ = %s beats that engine on the metric with p < %.2f "
|
|
69
|
+
"(a statistically real lead, not just a higher number)._"
|
|
70
|
+
% (best, ALPHA))
|
|
71
|
+
lines.append("\n%d of the compared metrics reach significance." % n_sig)
|
|
72
|
+
return "\n".join(lines) + "\n"
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def main(argv: Optional[list] = None) -> int:
|
|
76
|
+
args = list(sys.argv[1:] if argv is None else argv)
|
|
77
|
+
path = args[0] if args else "stats.json"
|
|
78
|
+
sys.stdout.write(render(_load(path)))
|
|
79
|
+
return 0
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
if __name__ == "__main__":
|
|
83
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Unit tests for scripts/eval_stats_summary.py — the significance summary."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import importlib.util
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
_SCRIPT = Path(__file__).resolve().parents[2] / "scripts" / "eval_stats_summary.py"
|
|
11
|
+
|
|
12
|
+
_skip = pytest.mark.skipif(not _SCRIPT.exists(), reason="script not reachable")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _mod():
|
|
16
|
+
spec = importlib.util.spec_from_file_location("eval_stats_summary", _SCRIPT)
|
|
17
|
+
assert spec and spec.loader
|
|
18
|
+
module = importlib.util.module_from_spec(spec)
|
|
19
|
+
spec.loader.exec_module(module)
|
|
20
|
+
return module
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
_PAYLOAD = {
|
|
24
|
+
"significance": {
|
|
25
|
+
"stat_test": "student",
|
|
26
|
+
"metrics": ["recall@10", "mrr"],
|
|
27
|
+
"model_names": ["catalog.search", "BM25 full-content"],
|
|
28
|
+
"catalog.search": {
|
|
29
|
+
"comparisons": {
|
|
30
|
+
"BM25 full-content": {"recall@10": 0.0047, "mrr": 0.20},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
"BM25 full-content": {"comparisons": {}},
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@_skip
|
|
39
|
+
def test_significant_metric_marked_and_counted():
|
|
40
|
+
md = _mod().render(_PAYLOAD)
|
|
41
|
+
assert "Best engine: **BM25 full-content**" in md
|
|
42
|
+
assert "✅ p=0.0047" in md # recall@10 is significant
|
|
43
|
+
assert "· p=0.2000" in md # mrr is not
|
|
44
|
+
assert "1 of the compared metrics reach significance." in md
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@_skip
|
|
48
|
+
def test_missing_significance_is_a_graceful_skip():
|
|
49
|
+
md = _mod().render({"k": 10})
|
|
50
|
+
assert "_skipped_" in md
|
|
51
|
+
assert "ranx" in md
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@_skip
|
|
55
|
+
def test_none_payload_does_not_crash():
|
|
56
|
+
md = _mod().render(None)
|
|
57
|
+
assert "skipped" in md.lower()
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@_skip
|
|
61
|
+
def test_single_engine_has_nothing_to_compare():
|
|
62
|
+
md = _mod().render({"significance": {
|
|
63
|
+
"metrics": ["recall@10"], "model_names": ["only-one"]}})
|
|
64
|
+
assert "nothing to compare" in md
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@_skip
|
|
68
|
+
def test_main_reads_file_and_prints(tmp_path, capsys):
|
|
69
|
+
p = tmp_path / "stats.json"
|
|
70
|
+
p.write_text(json.dumps(_PAYLOAD), encoding="utf-8")
|
|
71
|
+
rc = _mod().main([str(p)])
|
|
72
|
+
assert rc == 0
|
|
73
|
+
assert "✅ p=0.0047" in capsys.readouterr().out
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@_skip
|
|
77
|
+
def test_main_on_missing_file_is_graceful(capsys):
|
|
78
|
+
rc = _mod().main(["/no/such/stats.json"])
|
|
79
|
+
assert rc == 0
|
|
80
|
+
assert "skipped" in capsys.readouterr().out.lower()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.174 → boost_skill_cli-1.0.175}/docs/roadmap/items/boost-run-live-agents.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|