boost-skill-cli 1.0.404__tar.gz → 1.0.405__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.
Files changed (631) hide show
  1. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.lighthouserc.json +1 -1
  2. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/PKG-INFO +1 -1
  3. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/configuration.py +27 -3
  5. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/rag.py +8 -1
  6. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  7. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  8. boost_skill_cli-1.0.405/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +45 -0
  9. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +11 -0
  10. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap.html +55 -2
  11. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_configuration.py +72 -0
  12. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.gitattributes +0 -0
  13. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.gitignore +0 -0
  14. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.gitleaks.toml +0 -0
  15. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.htmlvalidate.json +0 -0
  16. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.lycheeignore +0 -0
  17. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.markdownlint-cli2.jsonc +0 -0
  18. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.pre-commit-config.yaml +0 -0
  19. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.stylelintrc.json +0 -0
  20. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.vale/styles/boost/Terminology.yml +0 -0
  21. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  22. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/.vale.ini +0 -0
  23. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/CLAUDE.md +0 -0
  24. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/CODE_OF_CONDUCT.md +0 -0
  25. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/CONTRIBUTING.md +0 -0
  26. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/LICENSE +0 -0
  27. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/MANIFEST.in +0 -0
  28. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/Makefile +0 -0
  29. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/README.md +0 -0
  30. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/SECURITY.md +0 -0
  31. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost +0 -0
  32. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/__init__.py +0 -0
  33. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/__main__.py +0 -0
  34. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/cli.py +0 -0
  35. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/cliparse.py +0 -0
  36. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/__init__.py +0 -0
  37. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/_common.py +0 -0
  38. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/bmad.py +0 -0
  39. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/discovery.py +0 -0
  40. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/hooks.py +0 -0
  41. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/info.py +0 -0
  42. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/intelligence.py +0 -0
  43. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/pkg.py +0 -0
  44. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/quality.py +0 -0
  45. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/run.py +0 -0
  46. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/safety.py +0 -0
  47. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/taps.py +0 -0
  48. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/commands/team.py +0 -0
  49. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/__init__.py +0 -0
  50. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/adapters.py +0 -0
  51. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/agents.py +0 -0
  52. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/ai.py +0 -0
  53. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/capabilities.py +0 -0
  54. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/catalog.py +0 -0
  55. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/chat.py +0 -0
  56. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/claude_settings.py +0 -0
  57. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/complete.py +0 -0
  58. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/config.py +0 -0
  59. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/dense.py +0 -0
  60. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/ed25519.py +0 -0
  61. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/embed.py +0 -0
  62. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/faithfulness.py +0 -0
  63. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/frontmatter.py +0 -0
  64. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/gitutil.py +0 -0
  65. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/imperative.py +0 -0
  66. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/injectscan.py +0 -0
  67. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/installscan.py +0 -0
  68. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/integrity.py +0 -0
  69. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/journal.py +0 -0
  70. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/localembed.py +0 -0
  71. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/lockfile.py +0 -0
  72. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/logs.py +0 -0
  73. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/mcp.py +0 -0
  74. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/mcpdecl.py +0 -0
  75. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/mcphost.py +0 -0
  76. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/minisign.py +0 -0
  77. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/nethttp.py +0 -0
  78. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/output.py +0 -0
  79. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/paths.py +0 -0
  80. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/policy.py +0 -0
  81. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/projectlock.py +0 -0
  82. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/provenance.py +0 -0
  83. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/registry.py +0 -0
  84. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/resolve.py +0 -0
  85. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/rules.py +0 -0
  86. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/scopes.py +0 -0
  87. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/secretscan.py +0 -0
  88. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/selfupdate.py +0 -0
  89. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/serve.py +0 -0
  90. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/stackprobe.py +0 -0
  91. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/staleness.py +0 -0
  92. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/store.py +0 -0
  93. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/trustaudit.py +0 -0
  94. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/typosquat.py +0 -0
  95. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/updatediff.py +0 -0
  96. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/util.py +0 -0
  97. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/core/workflows.py +0 -0
  98. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/data/registries.json +0 -0
  99. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/errors.py +0 -0
  100. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_cli/spin.py +0 -0
  101. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  102. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  103. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/requires.txt +0 -0
  104. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/boost_skill_cli.egg-info/top_level.txt +0 -0
  105. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/codecov.yml +0 -0
  106. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/.claude/settings.local.json +0 -0
  107. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/DEBUGGING.md +0 -0
  108. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/adapters.html +0 -0
  109. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/architecture/README.md +0 -0
  110. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/architecture/c4-components-core.md +0 -0
  111. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/architecture/c4-containers.md +0 -0
  112. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/architecture/c4-context.md +0 -0
  113. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/architecture/c4-dynamic-install.md +0 -0
  114. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/distill.gif +0 -0
  115. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/doctor.gif +0 -0
  116. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/explain.gif +0 -0
  117. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/hooks.gif +0 -0
  118. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/install.gif +0 -0
  119. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/pulse.gif +0 -0
  120. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/search.gif +0 -0
  121. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/gifs/tap.gif +0 -0
  122. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/distill.tape +0 -0
  123. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/doctor.tape +0 -0
  124. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/explain.tape +0 -0
  125. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/hooks.tape +0 -0
  126. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/install.tape +0 -0
  127. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/pulse.tape +0 -0
  128. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/search.tape +0 -0
  129. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel/tapes/tap.tape +0 -0
  130. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/carousel.html +0 -0
  131. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/chat.html +0 -0
  132. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/commands.html +0 -0
  133. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/demo-index.json +0 -0
  134. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/demo.gif +0 -0
  135. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/demo.html +0 -0
  136. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/demo.tape +0 -0
  137. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/design-roadmap.html +0 -0
  138. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/eval-latest.json +0 -0
  139. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/eval.html +0 -0
  140. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/index.html +0 -0
  141. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/mcp-hub.html +0 -0
  142. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/rag-architecture.md +0 -0
  143. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D01.md +0 -0
  144. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D02.md +0 -0
  145. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D03.md +0 -0
  146. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D04.md +0 -0
  147. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D05.md +0 -0
  148. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D06.md +0 -0
  149. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D07.md +0 -0
  150. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D08.md +0 -0
  151. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D09.md +0 -0
  152. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D10.md +0 -0
  153. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D11.md +0 -0
  154. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D12.md +0 -0
  155. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D13.md +0 -0
  156. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D14.md +0 -0
  157. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D15.md +0 -0
  158. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D16.md +0 -0
  159. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D17.md +0 -0
  160. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D18.md +0 -0
  161. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D19.md +0 -0
  162. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D20.md +0 -0
  163. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D21.md +0 -0
  164. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D22.md +0 -0
  165. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D23.md +0 -0
  166. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D24.md +0 -0
  167. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D25.md +0 -0
  168. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/BOOST-D26.md +0 -0
  169. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  170. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  171. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  172. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  173. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  174. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  175. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  176. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  177. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  178. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  179. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  180. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  181. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  182. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  183. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  184. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  185. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  186. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  187. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  188. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  189. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  190. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  191. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  192. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  193. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  194. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  195. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/command-carousel-page.md +0 -0
  196. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  197. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  198. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  199. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  200. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  201. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  202. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  203. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  204. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  205. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  206. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  207. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  208. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  209. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  210. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  211. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  212. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  213. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  214. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  215. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  216. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  217. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  218. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  219. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  220. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  221. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  222. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  223. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  224. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  225. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  226. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  227. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  228. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  229. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  230. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  231. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  232. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/github-community-health-files.md +0 -0
  233. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  234. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  235. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  236. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  237. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  238. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  239. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  240. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  241. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  242. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  243. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  244. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  245. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  246. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  247. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  248. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  249. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  250. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  251. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  252. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  253. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  254. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  255. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  256. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  257. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  258. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  259. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  260. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  261. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  262. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  263. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  264. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  265. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  266. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  267. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  268. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  269. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  270. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  271. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  272. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  273. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  274. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  275. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  276. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  277. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  278. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  279. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  280. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  281. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  282. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  283. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  284. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  285. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  286. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  287. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  288. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  289. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  290. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  291. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  292. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  293. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  294. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  295. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  296. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  297. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  298. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  299. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  300. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  301. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  302. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  303. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  304. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  305. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  306. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  307. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  308. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  309. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  310. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  311. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  312. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  313. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  314. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  315. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  316. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  317. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  318. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  319. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  320. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  321. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  322. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  323. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  324. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  325. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  326. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  327. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  328. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  329. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  330. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  331. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  332. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  333. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  334. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  335. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  336. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  337. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  338. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  339. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  340. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  341. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  342. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  343. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  344. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  345. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  346. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  347. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  348. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  349. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  350. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  351. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  352. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  353. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  354. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  355. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  356. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  357. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  358. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  359. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  360. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  361. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  362. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  363. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  364. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  365. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  366. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  367. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  368. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  369. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  370. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  371. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  372. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  373. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  374. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  375. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  376. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  377. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  378. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  379. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  380. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  381. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  382. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/workspace-scope-install.md +0 -0
  383. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/zip-strict-audit.md +0 -0
  384. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  385. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/eslint.config.mjs +0 -0
  386. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/README.md +0 -0
  387. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/__init__.py +0 -0
  388. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/baseline.json +0 -0
  389. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/faithfulness.py +0 -0
  390. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/golden_set.json +0 -0
  391. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/make_corpus.py +0 -0
  392. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/make_golden.py +0 -0
  393. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/metrics.py +0 -0
  394. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/evals/run_evals.py +0 -0
  395. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/examples/README.md +0 -0
  396. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/examples/adapt-demo.sh +0 -0
  397. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/examples/boost-run-prototype.sh +0 -0
  398. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/index.html +0 -0
  399. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/noxfile.py +0 -0
  400. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/pyproject.toml +0 -0
  401. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/coverage-tools.in +0 -0
  402. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/coverage-tools.txt +0 -0
  403. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/lint-tools.in +0 -0
  404. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/lint-tools.txt +0 -0
  405. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/mutation-tools.in +0 -0
  406. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/mutation-tools.txt +0 -0
  407. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/platform-pins.lock +0 -0
  408. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/release-tools.in +0 -0
  409. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/release-tools.txt +0 -0
  410. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/test-tools.in +0 -0
  411. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/requirements/test-tools.txt +0 -0
  412. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/a11y_check.py +0 -0
  413. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/bench_cli.sh +0 -0
  414. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/build_command_reference.py +0 -0
  415. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/build_demo_index.py +0 -0
  416. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/build_registries.py +0 -0
  417. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/build_roadmap.py +0 -0
  418. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/build_scale_corpus.py +0 -0
  419. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/check_anchors.py +0 -0
  420. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/check_licenses.py +0 -0
  421. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/check_required_checks.py +0 -0
  422. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/ensure_eval_corpus.sh +0 -0
  423. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_corpus.py +0 -0
  424. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_explain.py +0 -0
  425. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_gate.py +0 -0
  426. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_recommend.py +0 -0
  427. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_retrieval.py +0 -0
  428. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/eval_stats_summary.py +0 -0
  429. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/import_budget.py +0 -0
  430. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/lock_toolchain.py +0 -0
  431. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/mutation_gate.py +0 -0
  432. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/mutation_shards.py +0 -0
  433. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/mutation_weights.json +0 -0
  434. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/page_budget.py +0 -0
  435. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/perf_gate.py +0 -0
  436. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/post_deploy_smoke.py +0 -0
  437. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/publish_eval_json.py +0 -0
  438. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/release_guard.py +0 -0
  439. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/release_preflight.py +0 -0
  440. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/scripts/serve_docs.py +0 -0
  441. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/setup.cfg +0 -0
  442. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/sonar-project.properties +0 -0
  443. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/style/README.md +0 -0
  444. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/style/boost.css +0 -0
  445. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/style/boost.js +0 -0
  446. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/style/demo.html +0 -0
  447. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/adapt.feature +0 -0
  448. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/browse.feature +0 -0
  449. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/count.feature +0 -0
  450. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/discover.feature +0 -0
  451. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/doctor.feature +0 -0
  452. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/environment.py +0 -0
  453. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/explain.feature +0 -0
  454. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/index.feature +0 -0
  455. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/install.feature +0 -0
  456. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/list.feature +0 -0
  457. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/mcp.feature +0 -0
  458. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/search.feature +0 -0
  459. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/steps/cli_steps.py +0 -0
  460. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/steps/discovery_steps.py +0 -0
  461. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/steps/mcp_steps.py +0 -0
  462. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/bdd/features/steps/quality_steps.py +0 -0
  463. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/conftest.py +0 -0
  464. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/baseline.json +0 -0
  465. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/explain.jsonl +0 -0
  466. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/golden-natural.jsonl +0 -0
  467. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/golden.jsonl +0 -0
  468. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/recommend.jsonl +0 -0
  469. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/taps-scale.txt +0 -0
  470. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/eval/taps.txt +0 -0
  471. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_capabilities_policy.py +0 -0
  472. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_adapt.py +0 -0
  473. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_bmad.py +0 -0
  474. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_chat.py +0 -0
  475. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_discovery.py +0 -0
  476. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_hooks.py +0 -0
  477. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_info.py +0 -0
  478. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_intelligence.py +0 -0
  479. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_pkg.py +0 -0
  480. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_quality.py +0 -0
  481. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_taps.py +0 -0
  482. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_cli_team.py +0 -0
  483. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_everyday_loop.py +0 -0
  484. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_integrity_enforce.py +0 -0
  485. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_property_parsers.py +0 -0
  486. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_run.py +0 -0
  487. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_tap_signing.py +0 -0
  488. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/functional/test_workspace_scope.py +0 -0
  489. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/README.md +0 -0
  490. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  491. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  492. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  493. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  494. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  495. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  496. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  497. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  498. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  499. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  500. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  501. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  502. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  503. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  504. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  505. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  506. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  507. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  508. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  509. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  510. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/fuzz_frontmatter.py +0 -0
  511. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/fuzz/fuzz_registry.py +0 -0
  512. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/make_fixture.py +0 -0
  513. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/perf/test_benchmarks.py +0 -0
  514. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/smoke.sh +0 -0
  515. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_a11y_check.py +0 -0
  516. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_adapters.py +0 -0
  517. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_adapters_multi.py +0 -0
  518. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_adapters_runner.py +0 -0
  519. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_agents.py +0 -0
  520. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_ai.py +0 -0
  521. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_capabilities.py +0 -0
  522. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_catalog.py +0 -0
  523. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_chat.py +0 -0
  524. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_check_anchors.py +0 -0
  525. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_check_licenses.py +0 -0
  526. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_claude_settings.py +0 -0
  527. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_cliparse.py +0 -0
  528. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_codeql_analysis_key.py +0 -0
  529. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_command_reference_fresh.py +0 -0
  530. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_community_health_files.py +0 -0
  531. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_complete.py +0 -0
  532. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_config.py +0 -0
  533. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_content_dedupe.py +0 -0
  534. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dedup_trust.py +0 -0
  535. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_demo_index.py +0 -0
  536. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dense.py +0 -0
  537. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dense_fallback.py +0 -0
  538. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dense_fix_hint.py +0 -0
  539. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dense_shards.py +0 -0
  540. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dense_status.py +0 -0
  541. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_dependabot_config.py +0 -0
  542. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_docs_pages_linked.py +0 -0
  543. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_docsite_chrome.py +0 -0
  544. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_ed25519.py +0 -0
  545. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_embed.py +0 -0
  546. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_embed_local.py +0 -0
  547. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_entry_key.py +0 -0
  548. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_errors_and_cli_table.py +0 -0
  549. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_baseline.py +0 -0
  550. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_corpus.py +0 -0
  551. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_faithfulness.py +0 -0
  552. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_gate.py +0 -0
  553. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_grading.py +0 -0
  554. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_metrics.py +0 -0
  555. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_eval_stats_summary.py +0 -0
  556. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_faithfulness.py +0 -0
  557. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_frontmatter.py +0 -0
  558. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_fuzz_targets.py +0 -0
  559. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_gitleaks_config.py +0 -0
  560. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_gitutil.py +0 -0
  561. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_imperative.py +0 -0
  562. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_import_budget.py +0 -0
  563. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_injectscan.py +0 -0
  564. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_installscan.py +0 -0
  565. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_integrity.py +0 -0
  566. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_journal.py +0 -0
  567. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_link_ownership.py +0 -0
  568. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_localembed.py +0 -0
  569. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_localembed_e2e.py +0 -0
  570. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_lockfile.py +0 -0
  571. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_logs.py +0 -0
  572. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_marketing_counts.py +0 -0
  573. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mcp.py +0 -0
  574. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mcp_install_scan.py +0 -0
  575. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mcpdecl.py +0 -0
  576. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mcphost.py +0 -0
  577. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_minisign.py +0 -0
  578. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mutation_hardening.py +0 -0
  579. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mutation_shards.py +0 -0
  580. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mutation_subfile_shards.py +0 -0
  581. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_mutmut_source_paths.py +0 -0
  582. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_nethttp.py +0 -0
  583. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_output.py +0 -0
  584. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_page_budget.py +0 -0
  585. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_paths.py +0 -0
  586. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_perf_gate.py +0 -0
  587. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_pkg_confusions.py +0 -0
  588. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_pkg_injection.py +0 -0
  589. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_pkg_secrets.py +0 -0
  590. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_platform_pins.py +0 -0
  591. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_policy.py +0 -0
  592. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_post_deploy_smoke.py +0 -0
  593. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_project_mcp_sidecar.py +0 -0
  594. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_projectlock.py +0 -0
  595. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_provenance.py +0 -0
  596. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_rag.py +0 -0
  597. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_rag_fusion.py +0 -0
  598. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_registries_fresh.py +0 -0
  599. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_registry.py +0 -0
  600. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_registry_categories.py +0 -0
  601. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_release_guard.py +0 -0
  602. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_release_preflight.py +0 -0
  603. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_required_checks.py +0 -0
  604. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_resolve.py +0 -0
  605. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_roadmap_fresh.py +0 -0
  606. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_rules.py +0 -0
  607. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_scale_corpus.py +0 -0
  608. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_scopes.py +0 -0
  609. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_secretscan.py +0 -0
  610. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_selfupdate.py +0 -0
  611. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_serve.py +0 -0
  612. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_serve_docs.py +0 -0
  613. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_spin.py +0 -0
  614. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_stackprobe.py +0 -0
  615. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_staleness.py +0 -0
  616. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_store.py +0 -0
  617. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_token_parity.py +0 -0
  618. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_toolchain_lock.py +0 -0
  619. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_trustaudit.py +0 -0
  620. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_typosquat.py +0 -0
  621. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_updatediff.py +0 -0
  622. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_util.py +0 -0
  623. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_version.py +0 -0
  624. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_workflow_concurrency.py +0 -0
  625. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_workflow_timeouts.py +0 -0
  626. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/unit/test_workflows.py +0 -0
  627. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/visual/a11y_check.mjs +0 -0
  628. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/visual/console_check.mjs +0 -0
  629. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/visual/package-lock.json +0 -0
  630. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/visual/package.json +0 -0
  631. {boost_skill_cli-1.0.404 → boost_skill_cli-1.0.405}/tests/visual/visual_check.mjs +0 -0
@@ -15,7 +15,7 @@
15
15
  "assert": {
16
16
  "aggregationMethod": "median-run",
17
17
  "assertions": {
18
- "categories:performance": ["error", { "minScore": 0.8 }],
18
+ "categories:performance": ["error", { "minScore": 0.9 }],
19
19
  "categories:accessibility": ["error", { "minScore": 0.95 }],
20
20
  "categories:best-practices": ["error", { "minScore": 0.9 }],
21
21
  "categories:seo": ["error", { "minScore": 0.95 }]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.404
3
+ Version: 1.0.405
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -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.404'
22
- __version_tuple__ = version_tuple = (1, 0, 404)
21
+ __version__ = version = '1.0.405'
22
+ __version_tuple__ = version_tuple = (1, 0, 405)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -818,6 +818,28 @@ def cmd_serve(argv) -> int:
818
818
  REGISTRY = mcp.Registry()
819
819
 
820
820
 
821
+ def _ranking_note(ranker: str) -> str:
822
+ """One line naming the ranking that actually produced this order.
823
+
824
+ `boost_search`'s own description promises an LLM rerank and quotes what it
825
+ buys — the right skill first 95% of the time against 79% without. When no
826
+ AI is configured that rerank degrades to the retrieval order, and the reply
827
+ was byte-for-byte the shape of a reranked one: same ten lines, same
828
+ confidence, 79%. An agent acts on the top result because the description
829
+ told it to.
830
+
831
+ `rag.rerank` already computes the only thing that distinguishes the two
832
+ cases, and its own comment says so — "the label is the only signal about
833
+ which engine" produced the order. This handler was discarding it.
834
+ """
835
+ if ranker == rag.LLM_RANKER:
836
+ return "\n(ranked by %s)" % ranker
837
+ return ("\n(ranked by %s — the LLM rerank named in this tool's description "
838
+ "did NOT run, so this is a shortlist to read rather than a verdict "
839
+ "to act on. Configure ANTHROPIC_API_KEY or the `claude` CLI to "
840
+ "enable it.)" % ranker)
841
+
842
+
821
843
  def _tool_search(args: dict):
822
844
  query = str(args.get("query", ""))
823
845
  rag.ensure() # build the full-content index on first use (BM25 by default)
@@ -835,14 +857,16 @@ def _tool_search(args: dict):
835
857
  # default nobody chose. It degrades on its own when no AI is configured.
836
858
  rag_result = rag.search(query, limit=10, smart=True)
837
859
  if rag_result is not None: # full-content index is built
838
- hits, _ranker = rag_result
860
+ hits, ranker = rag_result
839
861
  if not hits:
840
862
  return "no skills match %r" % query, False
841
- return "\n".join(
863
+ lines = [
842
864
  "%s — %s (%s)" % (h["entry"]["name"],
843
865
  h["entry"].get("description", ""),
844
866
  h["entry"]["tap"])
845
- for h in hits), False
867
+ for h in hits]
868
+ lines.append(_ranking_note(ranker))
869
+ return "\n".join(lines), False
846
870
  # no index yet -> keep today's frontmatter search so nothing regresses
847
871
  scored = catalog.search(query)[:10]
848
872
  if not scored:
@@ -721,6 +721,13 @@ def retrieve(query: str, k: int = 60, kind: Optional[str] = None,
721
721
  return dedupe_by_content(hits, k)
722
722
 
723
723
 
724
+ #: The label `rerank` returns when the LLM pass actually ran. Every other value
725
+ #: is a retrieval engine's own name, i.e. "the rerank did not happen". Callers
726
+ #: that quote what the rerank buys have to be able to tell those apart without
727
+ #: string-matching a literal that could drift.
728
+ LLM_RANKER = "Claude relevance"
729
+
730
+
724
731
  def rerank(query: str, hits: List[Hit], limit: int = 10,
725
732
  engine: str = "BM25 full-content") -> Tuple[List[Hit], str]:
726
733
  """Reorder the shortlist with the LLM bridge; degrade to ``engine`` order.
@@ -756,7 +763,7 @@ def rerank(query: str, hits: List[Hit], limit: int = 10,
756
763
  picked = [by_name[str(n)] for n in order if str(n) in by_name]
757
764
  rest = [h for h in hits if h["entry"]["name"]
758
765
  not in {str(n) for n in order}]
759
- return (picked + rest)[:limit], "Claude relevance"
766
+ return (picked + rest)[:limit], LLM_RANKER
760
767
 
761
768
 
762
769
  # The damping constant from the original reciprocal-rank-fusion paper. It is
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.404
3
+ Version: 1.0.405
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -278,6 +278,7 @@ docs/roadmap/items/mcp-one-benefit-nameable-task.md
278
278
  docs/roadmap/items/mcp-register-names-server-before-env.md
279
279
  docs/roadmap/items/mcp-search-before-reinventing.md
280
280
  docs/roadmap/items/mcp-search-cost-was-understated.md
281
+ docs/roadmap/items/mcp-search-hid-which-ranking-ran.md
281
282
  docs/roadmap/items/mcp-servers-ignore-install-scope.md
282
283
  docs/roadmap/items/mcp-startup-self-harden-fork-safety.md
283
284
  docs/roadmap/items/memoize-config-load-in-process.md
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: mcp-search-hid-which-ranking-ran
3
+ board: code
4
+ section: internals
5
+ status: shipped
6
+ category: Correctness · MCP
7
+ complexity: S
8
+ impact: Medium
9
+ wow: 4
10
+ note: the degraded order was byte-for-byte the shape of the promised one
11
+ order: 101
12
+ owner: fix/mcp-search-names-its-ranker
13
+ pr: 461
14
+ title: boost_search never said which ranking produced its answer
15
+ ---
16
+ <b>The MCP tool tells an agent an LLM reranks every match, "which is what makes the top result worth
17
+ acting on rather than skimming ten". When no AI is configured, it doesn't &mdash; and the reply looked
18
+ exactly the same.</b> Ten lines, same shape, same confidence, produced by BM25 alone. An agent acts on
19
+ the top result because the description told it to.
20
+
21
+ <b>The signal existed and was thrown away.</b> <code>rag.search</code> returns
22
+ <code>(hits,&nbsp;ranker_label)</code>, and <code>rag.rerank</code>'s own docstring says why the label
23
+ matters: "the label is the only signal about which engine answered, so a confident
24
+ <code>BM25 full-content</code> sent debugging somewhere else." The MCP handler unpacked it into
25
+ <code>_ranker</code> and dropped it on the floor. Every degrade path &mdash; no AI available, a reply
26
+ that isn't a JSON array &mdash; already returns the retrieval label rather than claiming a rerank, so
27
+ the distinction was fully computed and merely unreported.
28
+
29
+ <b>This is not hypothetical on a normal machine.</b> The rerank needs
30
+ <code>ANTHROPIC_API_KEY</code> or the <code>claude</code> CLI. A boost installed with
31
+ <code>pipx</code> has neither inside its venv unless the key is exported, so the silent path is the
32
+ common one rather than the edge case.
33
+
34
+ <b>What shipped.</b> The reply now ends with the ranking that produced it &mdash;
35
+ <i>"(ranked by Claude relevance)"</i> when the rerank ran, and otherwise a line naming the engine,
36
+ saying plainly that the rerank <i>did not</i> run, and telling the caller to treat the order as a
37
+ shortlist to read rather than a verdict to act on. <code>rag.LLM_RANKER</code> replaces the literal
38
+ so the producer and the consumer of that label cannot drift apart, with a test driving
39
+ <code>rerank</code> through all three of its outcomes.
40
+
41
+ <b>A related claim was already corrected upstream.</b> The "95% against 79%" figures once quoted here
42
+ were removed from both the tool description and the server instructions, because 0.791 was the BM25
43
+ baseline over the <i>six</i>-repo corpus and the twenty-repo corpus that replaced it measures 0.4725
44
+ &mdash; overstating the baseline by 31 points. The mechanism claim survived that edit, which is
45
+ exactly the claim this card makes honest.
@@ -84,3 +84,14 @@ raise to be a decision rather than an emergency.
84
84
 
85
85
  <b>Still genuinely open.</b> The page is not faster. 0.84 is still a board of 200 cards, and nothing
86
86
  here changes that &mdash; only the odds that the next step change is noticed the day it lands.
87
+
88
+ <b>Corrected 2026-08-03: the page was never the slow part.</b> The <code>lighthouse</code> job served
89
+ the docs with <code>python3 -m http.server</code>, which sends no <code>Content-Encoding</code>
90
+ header at all, so every score above was measured on a document <b>3.27&times;</b> larger
91
+ than the one GitHub Pages delivers. That is why both experiments here moved the number by
92
+ <b>0.00</b>: each changed <i>layout</i> work while the score was being decided by <i>transfer</i>
93
+ bytes. Compressing the harness the way Pages does took roadmap.html from
94
+ <b>0.79&nbsp;&rarr;&nbsp;0.98</b> and FCP from <b>3,638&nbsp;&rarr;&nbsp;1,719&nbsp;ms</b>, and the
95
+ floor went back to 0.90. The cheap local proxy this card called not obvious was markup bytes &mdash;
96
+ the dimension <code>page_budget.py</code>, shipped by this very PR, already measures. See
97
+ [[lighthouse-scored-a-page-nobody-is-served]].
@@ -125,7 +125,7 @@
125
125
  <div class="stat"><b>16</b><span>Shipped</span></div>
126
126
  <div class="stat"><b>1</b><span>Next up</span></div>
127
127
  <div class="stat"><b>8</b><span>Planned</span></div>
128
- <div class="stat"><b>217</b><span>Loop finds</span></div>
128
+ <div class="stat"><b>218</b><span>Loop finds</span></div>
129
129
  <!-- /ROADMAP:stats -->
130
130
  </div>
131
131
  </section>
@@ -3561,6 +3561,48 @@ written as a substring first and caught nothing until it was tightened.</p></det
3561
3561
  <span class="m">the bug was written down in a test comment and pinned as "behaves today"</span>
3562
3562
  </div>
3563
3563
  </article>
3564
+
3565
+ <article class="cap rcard" id="mcp-search-hid-which-ranking-ran">
3566
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Correctness · MCP</span></div>
3567
+ <h3>boost_search never said which ranking produced its answer</h3>
3568
+ <details class="cardbody"><summary>Write-up</summary>
3569
+ <p><b>The MCP tool tells an agent an LLM reranks every match, "which is what makes the top result worth
3570
+ acting on rather than skimming ten". When no AI is configured, it doesn't &mdash; and the reply looked
3571
+ exactly the same.</b> Ten lines, same shape, same confidence, produced by BM25 alone. An agent acts on
3572
+ the top result because the description told it to.
3573
+
3574
+ <b>The signal existed and was thrown away.</b> <code>rag.search</code> returns
3575
+ <code>(hits,&nbsp;ranker_label)</code>, and <code>rag.rerank</code>'s own docstring says why the label
3576
+ matters: "the label is the only signal about which engine answered, so a confident
3577
+ <code>BM25 full-content</code> sent debugging somewhere else." The MCP handler unpacked it into
3578
+ <code>_ranker</code> and dropped it on the floor. Every degrade path &mdash; no AI available, a reply
3579
+ that isn't a JSON array &mdash; already returns the retrieval label rather than claiming a rerank, so
3580
+ the distinction was fully computed and merely unreported.
3581
+
3582
+ <b>This is not hypothetical on a normal machine.</b> The rerank needs
3583
+ <code>ANTHROPIC_API_KEY</code> or the <code>claude</code> CLI. A boost installed with
3584
+ <code>pipx</code> has neither inside its venv unless the key is exported, so the silent path is the
3585
+ common one rather than the edge case.
3586
+
3587
+ <b>What shipped.</b> The reply now ends with the ranking that produced it &mdash;
3588
+ <i>"(ranked by Claude relevance)"</i> when the rerank ran, and otherwise a line naming the engine,
3589
+ saying plainly that the rerank <i>did not</i> run, and telling the caller to treat the order as a
3590
+ shortlist to read rather than a verdict to act on. <code>rag.LLM_RANKER</code> replaces the literal
3591
+ so the producer and the consumer of that label cannot drift apart, with a test driving
3592
+ <code>rerank</code> through all three of its outcomes.
3593
+
3594
+ <b>A related claim was already corrected upstream.</b> The "95% against 79%" figures once quoted here
3595
+ were removed from both the tool description and the server instructions, because 0.791 was the BM25
3596
+ baseline over the <i>six</i>-repo corpus and the twenty-repo corpus that replaced it measures 0.4725
3597
+ &mdash; overstating the baseline by 31 points. The mechanism claim survived that edit, which is
3598
+ exactly the claim this card makes honest.</p></details>
3599
+ <div class="meta">
3600
+ <span class="m">Complexity <b>S</b></span>
3601
+ <span class="m">Impact <b>Medium</b></span>
3602
+ <span class="m">Wow <b class="wow">★★★★</b></span>
3603
+ <span class="m">the degraded order was byte-for-byte the shape of the promised one</span>
3604
+ </div>
3605
+ </article>
3564
3606
  <!-- /ROADMAP:cards -->
3565
3607
 
3566
3608
  </div>
@@ -7471,7 +7513,18 @@ from the other side: if the board ever creeps past 80% of its ceiling, it fails
7471
7513
  raise to be a decision rather than an emergency.
7472
7514
 
7473
7515
  <b>Still genuinely open.</b> The page is not faster. 0.84 is still a board of 200 cards, and nothing
7474
- here changes that &mdash; only the odds that the next step change is noticed the day it lands.</p></details>
7516
+ here changes that &mdash; only the odds that the next step change is noticed the day it lands.
7517
+
7518
+ <b>Corrected 2026-08-03: the page was never the slow part.</b> The <code>lighthouse</code> job served
7519
+ the docs with <code>python3 -m http.server</code>, which sends no <code>Content-Encoding</code>
7520
+ header at all, so every score above was measured on a document <b>3.27&times;</b> larger
7521
+ than the one GitHub Pages delivers. That is why both experiments here moved the number by
7522
+ <b>0.00</b>: each changed <i>layout</i> work while the score was being decided by <i>transfer</i>
7523
+ bytes. Compressing the harness the way Pages does took roadmap.html from
7524
+ <b>0.79&nbsp;&rarr;&nbsp;0.98</b> and FCP from <b>3,638&nbsp;&rarr;&nbsp;1,719&nbsp;ms</b>, and the
7525
+ floor went back to 0.90. The cheap local proxy this card called not obvious was markup bytes &mdash;
7526
+ the dimension <code>page_budget.py</code>, shipped by this very PR, already measures. See
7527
+ [[lighthouse-scored-a-page-nobody-is-served]].</p></details>
7475
7528
  <div class="meta">
7476
7529
  <span class="m">Complexity <b>S</b></span>
7477
7530
  <span class="m">Impact <b>Medium</b></span>
@@ -1011,6 +1011,12 @@ class TestMcp:
1011
1011
  # the flattering-but-stale claim the cost test below exists to prevent.
1012
1012
  # State the mechanism; leave the arithmetic to the eval gate.
1013
1013
  assert "95%" not in specs["boost_search"]
1014
+
1015
+ # The description still says the rerank happens ("ranks the matches
1016
+ # with an LLM"), so the REPLY has to say when it did not — otherwise
1017
+ # the degraded order is indistinguishable from the promised one. See
1018
+ # TestSearchNamesItsRanker below.
1019
+ assert "llm" in specs["boost_search"]
1014
1020
  # Stating the benefit must never quietly drop the cost with it.
1015
1021
  # A description whose job is to make a tool worth reaching for is the
1016
1022
  # one place a flattering lie discredits everything around it.
@@ -1469,3 +1475,69 @@ class TestSelfUpdate:
1469
1475
  ev = journal.events(action="self-update")[0]
1470
1476
  assert ev["subject"] == "9.9.9" # git-derived, not the stale const
1471
1477
  assert ev["previous"] == __version__
1478
+
1479
+
1480
+ class TestSearchNamesItsRanker:
1481
+ """The reply has to say which ranking produced it.
1482
+
1483
+ `boost_search`'s description tells the calling agent an LLM reranks every
1484
+ match, "which is what makes the top result worth acting on rather than
1485
+ skimming ten". With no AI configured that rerank silently degrades to the
1486
+ retrieval order and the reply was byte-for-byte the shape of a reranked
1487
+ one — same ten lines, same confidence. `rag.rerank` already computes the
1488
+ only signal that distinguishes them; the handler discarded it.
1489
+ """
1490
+
1491
+ def test_a_degraded_search_says_the_rerank_did_not_run(self, monkeypatch):
1492
+ from boost_cli.commands import configuration
1493
+ from boost_cli.core import rag
1494
+ monkeypatch.setattr(
1495
+ rag, "ensure", lambda *a, **k: True)
1496
+ monkeypatch.setattr(rag, "search", lambda *a, **k: (
1497
+ [{"entry": {"name": "x", "description": "d", "tap": "t"}}],
1498
+ "BM25 full-content"))
1499
+ text, _ = configuration._tool_search({"query": "anything"})
1500
+ assert "did NOT run" in text
1501
+ assert "BM25 full-content" in text
1502
+ assert "ANTHROPIC_API_KEY" in text
1503
+
1504
+ def test_a_reranked_search_says_so_without_the_warning(self, monkeypatch):
1505
+ from boost_cli.commands import configuration
1506
+ from boost_cli.core import rag
1507
+ monkeypatch.setattr(rag, "ensure", lambda *a, **k: True)
1508
+ monkeypatch.setattr(rag, "search", lambda *a, **k: (
1509
+ [{"entry": {"name": "x", "description": "d", "tap": "t"}}],
1510
+ rag.LLM_RANKER))
1511
+ text, _ = configuration._tool_search({"query": "anything"})
1512
+ assert "(ranked by %s)" % rag.LLM_RANKER in text
1513
+ assert "did NOT run" not in text
1514
+
1515
+ def test_rerank_returns_that_label_only_when_the_llm_answered(
1516
+ self, monkeypatch):
1517
+ """The producer and the consumer of the label must agree.
1518
+
1519
+ `rag.LLM_RANKER` exists so this is impossible to drift rather than
1520
+ merely unlikely — the note in the MCP handler keys on it, and every
1521
+ other value means "the rerank did not happen".
1522
+ """
1523
+ from boost_cli.core import ai, rag
1524
+ hits = [{"entry": {"name": "b", "kind": "skill", "description": "d"},
1525
+ "snippet": ""},
1526
+ {"entry": {"name": "a", "kind": "skill", "description": "d"},
1527
+ "snippet": ""}]
1528
+
1529
+ monkeypatch.setattr(ai, "available", lambda: False)
1530
+ assert rag.rerank("q", hits, engine="BM25 full-content")[1] == \
1531
+ "BM25 full-content"
1532
+
1533
+ monkeypatch.setattr(ai, "available", lambda: True)
1534
+ monkeypatch.setattr(ai, "ask", lambda *a, **k: '["a", "b"]')
1535
+ order, label = rag.rerank("q", hits, engine="BM25 full-content")
1536
+ assert label == rag.LLM_RANKER
1537
+ assert [h["entry"]["name"] for h in order] == ["a", "b"]
1538
+
1539
+ # The model replied, but not with an order — the label must fall back
1540
+ # with the ordering, or it claims a rerank that did not take effect.
1541
+ monkeypatch.setattr(ai, "ask", lambda *a, **k: "sorry, I cannot")
1542
+ assert rag.rerank("q", hits, engine="BM25 full-content")[1] == \
1543
+ "BM25 full-content"