boost-skill-cli 1.0.173__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.173 → boost_skill_cli-1.0.175}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +3 -3
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/ranx-significance-monitor.md +3 -3
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap.html +2 -2
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/style/boost.css +67 -0
- boost_skill_cli-1.0.175/tests/unit/test_eval_stats_summary.py +80 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/.gitattributes +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/.gitignore +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/LICENSE +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/Makefile +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/README.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/index.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.173 → 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.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/examples/README.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/index.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/noxfile.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/setup.cfg +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/style/README.md +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/style/boost.js +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/style/demo.html +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.173 → boost_skill_cli-1.0.175}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.173 → 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
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: promote-nav-footer-into-the-shared-style-system
|
|
3
3
|
board: code
|
|
4
4
|
section: dx
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: DX · Design system
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 3
|
|
10
10
|
note: <code>style/boost.css</code>
|
|
11
11
|
order: 1
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/theme
|
|
13
|
+
pr: 197
|
|
14
14
|
title: Promote nav / footer into the shared style system
|
|
15
15
|
---
|
|
16
16
|
Canonical <code>style/boost.css</code> ships tokens + primitives but
|
{boost_skill_cli-1.0.173 → 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
|
|
@@ -1308,7 +1308,7 @@ improvement is real (or isn't)."</p>
|
|
|
1308
1308
|
|
|
1309
1309
|
<!-- ROADMAP:cards section=dx -->
|
|
1310
1310
|
<article class="cap rcard">
|
|
1311
|
-
<div class="head"><span class="pill
|
|
1311
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">DX · Design system</span></div>
|
|
1312
1312
|
<h3>Promote nav / footer into the shared style system</h3>
|
|
1313
1313
|
<p>Canonical <code>style/boost.css</code> ships tokens + primitives but
|
|
1314
1314
|
<strong>no nav, logo, or footer</strong>, so every page (the guide and
|
|
@@ -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())
|
|
@@ -326,6 +326,73 @@ a.cap, a.glass { text-decoration: none; }
|
|
|
326
326
|
.stat { padding: 18px 10px; }
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
+
/* ============================================================================
|
|
330
|
+
Site chrome — nav · logo · footer
|
|
331
|
+
|
|
332
|
+
The page frame, defined once. Every page used to re-declare this inline and
|
|
333
|
+
the Design Roadmap declared none at all, so its nav rendered unstyled.
|
|
334
|
+
|
|
335
|
+
These are a shared *floor*, not an override: every page links this sheet
|
|
336
|
+
BEFORE its own <style>, so a page still carrying inline chrome keeps
|
|
337
|
+
winning at equal specificity. Markup this expects:
|
|
338
|
+
|
|
339
|
+
<header>
|
|
340
|
+
<div class="wrap site-nav"> <!-- or: class="wrap nav" -->
|
|
341
|
+
<a class="logo" href="."><b>boost</b><span>Section</span></a>
|
|
342
|
+
<ul><li><a href="#x">X</a></li><li><a class="cta" href=".">Go</a></li></ul>
|
|
343
|
+
</div>
|
|
344
|
+
</header>
|
|
345
|
+
========================================================================== */
|
|
346
|
+
header {
|
|
347
|
+
position: sticky; top: 0; z-index: 50;
|
|
348
|
+
background: var(--panel-solid);
|
|
349
|
+
border-bottom: 1px solid var(--line);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.site-nav, header .nav {
|
|
353
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
354
|
+
gap: 18px; padding: 12px 0;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.logo { display: flex; align-items: baseline; gap: 9px; text-decoration: none; }
|
|
358
|
+
.logo b {
|
|
359
|
+
font-family: var(--mono); font-size: 18px; font-weight: 700;
|
|
360
|
+
color: var(--cyan); letter-spacing: -.02em;
|
|
361
|
+
}
|
|
362
|
+
.logo span {
|
|
363
|
+
font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
|
|
364
|
+
color: var(--text-2);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.site-nav ul, header .nav ul {
|
|
368
|
+
display: flex; align-items: center; flex-wrap: wrap; gap: 18px;
|
|
369
|
+
list-style: none; margin: 0; padding: 0;
|
|
370
|
+
}
|
|
371
|
+
.site-nav a, header .nav a {
|
|
372
|
+
color: var(--text-2); text-decoration: none; font-size: 13.5px;
|
|
373
|
+
}
|
|
374
|
+
.site-nav a:hover, header .nav a:hover { color: var(--text); }
|
|
375
|
+
|
|
376
|
+
/* the one emphasized link in the bar */
|
|
377
|
+
.site-nav a.cta, header .nav a.cta {
|
|
378
|
+
color: var(--bg); background: var(--grad); font-weight: 700;
|
|
379
|
+
padding: 7px 14px; border-radius: 999px;
|
|
380
|
+
}
|
|
381
|
+
.site-nav a.cta:hover, header .nav a.cta:hover { color: var(--bg); opacity: .88; }
|
|
382
|
+
|
|
383
|
+
footer {
|
|
384
|
+
margin-top: 64px; padding: 28px 0 40px;
|
|
385
|
+
border-top: 1px solid var(--line);
|
|
386
|
+
color: var(--text-3); font-size: 13px;
|
|
387
|
+
}
|
|
388
|
+
footer a { color: var(--text-2); text-decoration: none; }
|
|
389
|
+
footer a:hover { color: var(--text); }
|
|
390
|
+
|
|
391
|
+
@media (max-width: 720px) {
|
|
392
|
+
.site-nav, header .nav { flex-direction: column; align-items: flex-start; gap: 10px; }
|
|
393
|
+
.site-nav ul, header .nav ul { gap: 12px; }
|
|
394
|
+
}
|
|
395
|
+
|
|
329
396
|
/* ============================================================================
|
|
330
397
|
Accessibility — honor reduced-motion, and print cleanly
|
|
331
398
|
========================================================================== */
|
|
@@ -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.173 → boost_skill_cli-1.0.175}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.173 → 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
|