boost-skill-cli 1.2.63__tar.gz → 1.2.64__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 (834) hide show
  1. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.gitignore +7 -0
  2. {boost_skill_cli-1.2.63/boost_skill_cli.egg-info → boost_skill_cli-1.2.64}/PKG-INFO +1 -1
  3. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
  6. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/tool-call-eval-tier.md +37 -15
  7. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap.html +38 -16
  8. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_tools.py +84 -4
  9. boost_skill_cli-1.2.64/tests/eval/fixtures/claude_init_event.jsonl +2 -0
  10. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_tools.py +32 -6
  11. boost_skill_cli-1.2.64/tests/unit/test_eval_tools_probe.py +127 -0
  12. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.gitattributes +0 -0
  13. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.gitleaks.toml +0 -0
  14. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.htmlvalidate.json +0 -0
  15. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.lighthouserc.json +0 -0
  16. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.lycheeignore +0 -0
  17. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.markdownlint-cli2.jsonc +0 -0
  18. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.pre-commit-config.yaml +0 -0
  19. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.stylelintrc.json +0 -0
  20. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.vale/styles/boost/AIWriting.yml +0 -0
  21. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.vale/styles/boost/Terminology.yml +0 -0
  22. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  23. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/.vale.ini +0 -0
  24. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/CLAUDE.md +0 -0
  25. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/CODE_OF_CONDUCT.md +0 -0
  26. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/CONTRIBUTING.md +0 -0
  27. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/DCO +0 -0
  28. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/GOVERNANCE.md +0 -0
  29. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/LICENSE +0 -0
  30. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/MAINTAINERS.md +0 -0
  31. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/MANIFEST.in +0 -0
  32. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/Makefile +0 -0
  33. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/README.md +0 -0
  34. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/SECURITY.md +0 -0
  35. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/SUPPORT.md +0 -0
  36. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost +0 -0
  37. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/__init__.py +0 -0
  38. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/__main__.py +0 -0
  39. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/cli.py +0 -0
  40. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/cliparse.py +0 -0
  41. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/__init__.py +0 -0
  42. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/_common.py +0 -0
  43. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/bmad.py +0 -0
  44. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/configuration.py +0 -0
  45. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/discovery.py +0 -0
  46. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/hooks.py +0 -0
  47. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/info.py +0 -0
  48. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/intelligence.py +0 -0
  49. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/pkg.py +0 -0
  50. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/quality.py +0 -0
  51. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/quickstart.py +0 -0
  52. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/run.py +0 -0
  53. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/safety.py +0 -0
  54. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/taps.py +0 -0
  55. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/commands/team.py +0 -0
  56. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/__init__.py +0 -0
  57. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/adapters.py +0 -0
  58. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/agents.py +0 -0
  59. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/ai.py +0 -0
  60. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/aihost.py +0 -0
  61. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/bmad.py +0 -0
  62. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/bootstrap.py +0 -0
  63. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/browse.py +0 -0
  64. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/builtin.py +0 -0
  65. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/capabilities.py +0 -0
  66. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/catalog.py +0 -0
  67. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/catalogbundle.py +0 -0
  68. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/chat.py +0 -0
  69. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/claude_settings.py +0 -0
  70. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/complete.py +0 -0
  71. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/config.py +0 -0
  72. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/dense.py +0 -0
  73. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/ed25519.py +0 -0
  74. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/embed.py +0 -0
  75. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/faithfulness.py +0 -0
  76. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/frontmatter.py +0 -0
  77. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/gitutil.py +0 -0
  78. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/hookhost.py +0 -0
  79. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/imperative.py +0 -0
  80. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/injectscan.py +0 -0
  81. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/installscan.py +0 -0
  82. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/integrity.py +0 -0
  83. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/journal.py +0 -0
  84. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/localembed.py +0 -0
  85. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/lockfile.py +0 -0
  86. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/logs.py +0 -0
  87. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/mcp.py +0 -0
  88. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/mcpdecl.py +0 -0
  89. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/mcphost.py +0 -0
  90. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/minisign.py +0 -0
  91. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/nethttp.py +0 -0
  92. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/output.py +0 -0
  93. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/paths.py +0 -0
  94. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/policy.py +0 -0
  95. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/projectlock.py +0 -0
  96. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/provenance.py +0 -0
  97. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/rag.py +0 -0
  98. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/registry.py +0 -0
  99. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/resolve.py +0 -0
  100. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/rules.py +0 -0
  101. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/scopes.py +0 -0
  102. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/secretscan.py +0 -0
  103. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/selfupdate.py +0 -0
  104. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/serve.py +0 -0
  105. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/shards.py +0 -0
  106. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/stackprobe.py +0 -0
  107. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/staleness.py +0 -0
  108. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/store.py +0 -0
  109. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/trustaudit.py +0 -0
  110. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/typosquat.py +0 -0
  111. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/updatediff.py +0 -0
  112. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/util.py +0 -0
  113. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/core/workflows.py +0 -0
  114. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/data/registries.json +0 -0
  115. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/data/rules/boost-first.mdc +0 -0
  116. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/errors.py +0 -0
  117. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_cli/spin.py +0 -0
  118. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/__init__.py +0 -0
  119. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/_compat.py +0 -0
  120. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/graph.py +0 -0
  121. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/loader.py +0 -0
  122. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/py.typed +0 -0
  123. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_langchain/retriever.py +0 -0
  124. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  125. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  126. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/requires.txt +0 -0
  127. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/top_level.txt +0 -0
  128. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/codecov.yml +0 -0
  129. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/.claude/settings.local.json +0 -0
  130. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/DEBUGGING.md +0 -0
  131. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/adapters.html +0 -0
  132. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/architecture/README.md +0 -0
  133. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/architecture/c4-components-core.md +0 -0
  134. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/architecture/c4-containers.md +0 -0
  135. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/architecture/c4-context.md +0 -0
  136. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/architecture/c4-dynamic-install.md +0 -0
  137. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/bmad.md +0 -0
  138. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/distill.gif +0 -0
  139. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/doctor.gif +0 -0
  140. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/explain.gif +0 -0
  141. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/hooks.gif +0 -0
  142. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/install.gif +0 -0
  143. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/pulse.gif +0 -0
  144. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/search.gif +0 -0
  145. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/gifs/tap.gif +0 -0
  146. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/distill.tape +0 -0
  147. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/doctor.tape +0 -0
  148. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/explain.tape +0 -0
  149. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/hooks.tape +0 -0
  150. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/install.tape +0 -0
  151. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/pulse.tape +0 -0
  152. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/search.tape +0 -0
  153. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel/tapes/tap.tape +0 -0
  154. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/carousel.html +0 -0
  155. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/chat.html +0 -0
  156. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/code-review.md +0 -0
  157. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/commands.html +0 -0
  158. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/commit-audit.md +0 -0
  159. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/demo-index.json +0 -0
  160. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/demo.gif +0 -0
  161. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/demo.html +0 -0
  162. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/demo.tape +0 -0
  163. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/dependencies.md +0 -0
  164. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/design-roadmap.html +0 -0
  165. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/eval-latest.json +0 -0
  166. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/eval.html +0 -0
  167. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/index.html +0 -0
  168. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/langchain.html +0 -0
  169. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/mcp-hub.html +0 -0
  170. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/openssf-badge.md +0 -0
  171. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/openssf-playbook.md +0 -0
  172. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/rag-architecture.md +0 -0
  173. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D01.md +0 -0
  174. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D02.md +0 -0
  175. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D03.md +0 -0
  176. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D04.md +0 -0
  177. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D05.md +0 -0
  178. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D06.md +0 -0
  179. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D07.md +0 -0
  180. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D08.md +0 -0
  181. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D09.md +0 -0
  182. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D10.md +0 -0
  183. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D11.md +0 -0
  184. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D12.md +0 -0
  185. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D13.md +0 -0
  186. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D14.md +0 -0
  187. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D15.md +0 -0
  188. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D16.md +0 -0
  189. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D17.md +0 -0
  190. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D18.md +0 -0
  191. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D19.md +0 -0
  192. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D20.md +0 -0
  193. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D21.md +0 -0
  194. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D22.md +0 -0
  195. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D23.md +0 -0
  196. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D24.md +0 -0
  197. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D25.md +0 -0
  198. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D26.md +0 -0
  199. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D27.md +0 -0
  200. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  201. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  202. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  203. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  204. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  205. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  206. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  207. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  208. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  209. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  210. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  211. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  212. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  213. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  214. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  215. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  216. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-first-rule.md +0 -0
  217. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  218. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  219. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/branch-current-gate.md +0 -0
  220. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  221. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  222. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  223. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  224. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  225. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  226. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  227. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  228. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  229. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  230. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  231. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  232. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  233. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  234. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/cli-command-audit.md +0 -0
  235. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  236. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  237. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  238. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  239. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/command-carousel-page.md +0 -0
  240. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  241. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  242. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  243. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  244. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  245. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  246. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  247. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  248. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  249. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  250. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  251. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  252. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  253. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  254. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  255. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  256. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  257. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  258. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  259. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  260. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  261. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  262. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  263. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  264. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  265. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  266. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  267. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  268. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  269. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  270. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  271. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  272. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  273. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  274. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  275. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  276. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  277. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  278. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  279. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  280. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  281. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  282. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  283. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  284. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  285. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  286. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  287. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  288. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  289. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  290. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  291. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  292. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  293. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/github-community-health-files.md +0 -0
  294. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  295. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  296. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  297. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  298. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  299. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  300. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  301. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  302. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  303. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  304. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  305. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  306. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  307. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  308. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  309. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  310. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  311. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  312. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  313. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  314. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  315. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  316. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  317. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  318. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  319. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  320. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  321. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  322. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  323. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  324. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  325. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  326. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  327. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  328. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  329. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  330. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  331. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  332. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  333. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  334. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  335. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  336. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  337. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  338. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  339. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  340. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  341. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  342. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  343. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  344. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  345. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  346. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  347. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  348. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  349. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  350. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  351. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  352. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  353. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  354. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  355. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  356. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  357. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  358. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  359. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  360. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  361. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  362. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  363. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  364. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  365. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  366. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  367. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  368. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  369. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  370. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  371. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-playbook.md +0 -0
  372. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-silver.md +0 -0
  373. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  374. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  375. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  376. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  377. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  378. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  379. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  380. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  381. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  382. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  383. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  384. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  385. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  386. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  387. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  388. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  389. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  390. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  391. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  392. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  393. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  394. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  395. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  396. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  397. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  398. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  399. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  400. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  401. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  402. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  403. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  404. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  405. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/relicence-apache-2.md +0 -0
  406. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  407. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  408. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  409. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  410. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  411. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  412. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  413. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  414. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  415. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  416. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  417. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  418. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  419. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  420. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  421. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  422. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  423. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  424. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  425. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  426. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  427. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  428. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  429. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  430. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  431. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  432. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  433. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  434. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  435. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  436. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  437. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  438. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  439. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  440. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  441. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  442. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  443. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  444. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  445. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  446. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  447. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  448. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  449. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  450. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  451. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  452. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  453. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  454. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  455. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  456. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  457. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  458. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  459. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  460. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  461. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  462. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  463. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  464. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  465. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  466. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  467. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  468. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  469. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  470. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  471. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  472. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  473. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  474. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  475. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  476. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  477. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  478. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  479. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  480. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  481. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  482. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  483. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  484. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  485. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  486. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/workspace-scope-install.md +0 -0
  487. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/zip-strict-audit.md +0 -0
  488. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  489. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  490. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/security-design.md +0 -0
  491. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/semantic-search.md +0 -0
  492. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  493. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/verifying-releases.md +0 -0
  494. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/meta.md +0 -0
  495. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/openvex.json +0 -0
  496. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  497. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  498. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  499. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  500. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/eslint.config.mjs +0 -0
  501. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/README.md +0 -0
  502. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/__init__.py +0 -0
  503. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/baseline.json +0 -0
  504. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/faithfulness.py +0 -0
  505. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/golden_set.json +0 -0
  506. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/make_corpus.py +0 -0
  507. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/make_golden.py +0 -0
  508. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/metrics.py +0 -0
  509. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/publish_golden_dataset.py +0 -0
  510. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/evals/run_evals.py +0 -0
  511. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/examples/README.md +0 -0
  512. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/examples/adapt-demo.sh +0 -0
  513. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/examples/boost-run-prototype.sh +0 -0
  514. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/index.html +0 -0
  515. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/noxfile.py +0 -0
  516. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/pyproject.toml +0 -0
  517. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/coverage-tools.in +0 -0
  518. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/coverage-tools.txt +0 -0
  519. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/lint-tools.in +0 -0
  520. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/lint-tools.txt +0 -0
  521. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/mutation-tools.in +0 -0
  522. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/mutation-tools.txt +0 -0
  523. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/platform-pins.lock +0 -0
  524. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/release-tools.in +0 -0
  525. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/release-tools.txt +0 -0
  526. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/test-tools.in +0 -0
  527. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/requirements/test-tools.txt +0 -0
  528. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/a11y_check.py +0 -0
  529. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/add_spdx_headers.py +0 -0
  530. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/bench_cli.sh +0 -0
  531. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_command_reference.py +0 -0
  532. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_demo_index.py +0 -0
  533. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_registries.py +0 -0
  534. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_roadmap.py +0 -0
  535. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_scale_corpus.py +0 -0
  536. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/build_vex.py +0 -0
  537. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_anchors.py +0 -0
  538. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_branch_current.py +0 -0
  539. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_dco.py +0 -0
  540. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_licenses.py +0 -0
  541. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_reproducible.py +0 -0
  542. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/check_required_checks.py +0 -0
  543. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/ensure_eval_corpus.sh +0 -0
  544. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_corpus.py +0 -0
  545. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_explain.py +0 -0
  546. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_gate.py +0 -0
  547. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_recommend.py +0 -0
  548. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_retrieval.py +0 -0
  549. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/eval_stats_summary.py +0 -0
  550. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/import_budget.py +0 -0
  551. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/lock_toolchain.py +0 -0
  552. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/measure_registry.py +0 -0
  553. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/mutation_gate.py +0 -0
  554. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/mutation_shards.py +0 -0
  555. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/mutation_weights.json +0 -0
  556. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/normalize_sdist.py +0 -0
  557. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/page_budget.py +0 -0
  558. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/perf_gate.py +0 -0
  559. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/post_deploy_smoke.py +0 -0
  560. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/publish_eval_json.py +0 -0
  561. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/publish_shards.py +0 -0
  562. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/release_guard.py +0 -0
  563. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/release_preflight.py +0 -0
  564. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/serve_docs.py +0 -0
  565. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/scripts/shard_plan.py +0 -0
  566. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/setup.cfg +0 -0
  567. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/sonar-project.properties +0 -0
  568. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/style/README.md +0 -0
  569. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/style/boost.css +0 -0
  570. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/style/boost.js +0 -0
  571. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/style/demo.html +0 -0
  572. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/adapt.feature +0 -0
  573. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/browse.feature +0 -0
  574. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/count.feature +0 -0
  575. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/discover.feature +0 -0
  576. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/doctor.feature +0 -0
  577. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/environment.py +0 -0
  578. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/explain.feature +0 -0
  579. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/index.feature +0 -0
  580. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/install.feature +0 -0
  581. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/list.feature +0 -0
  582. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/mcp.feature +0 -0
  583. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/search.feature +0 -0
  584. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/cli_steps.py +0 -0
  585. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/discovery_steps.py +0 -0
  586. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/mcp_steps.py +0 -0
  587. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/quality_steps.py +0 -0
  588. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/conftest.py +0 -0
  589. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/baseline.json +0 -0
  590. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/explain.jsonl +0 -0
  591. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/golden-natural.jsonl +0 -0
  592. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/golden.jsonl +0 -0
  593. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/recommend.jsonl +0 -0
  594. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/taps-scale.txt +0 -0
  595. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/taps.txt +0 -0
  596. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/eval/tool_calls.jsonl +0 -0
  597. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_bmad_all_hosts.py +0 -0
  598. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_capabilities_policy.py +0 -0
  599. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_adapt.py +0 -0
  600. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_bmad.py +0 -0
  601. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_catalog.py +0 -0
  602. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_chat.py +0 -0
  603. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_configuration.py +0 -0
  604. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_discovery.py +0 -0
  605. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_hooks.py +0 -0
  606. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_hooks_gemini.py +0 -0
  607. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_info.py +0 -0
  608. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_intelligence.py +0 -0
  609. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_pane_width.py +0 -0
  610. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_pkg.py +0 -0
  611. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_quality.py +0 -0
  612. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_quickstart.py +0 -0
  613. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_tap_pins.py +0 -0
  614. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_taps.py +0 -0
  615. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_cli_team.py +0 -0
  616. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_everyday_loop.py +0 -0
  617. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_integrity_enforce.py +0 -0
  618. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_kind_conformance.py +0 -0
  619. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_property_parsers.py +0 -0
  620. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_run.py +0 -0
  621. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_tap_signing.py +0 -0
  622. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/functional/test_workspace_scope.py +0 -0
  623. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/README.md +0 -0
  624. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  625. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  626. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  627. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  628. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  629. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  630. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  631. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  632. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  633. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  634. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  635. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  636. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  637. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  638. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  639. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  640. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  641. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  642. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  643. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  644. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  645. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  646. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  647. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/fuzz_frontmatter.py +0 -0
  648. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/fuzz/fuzz_registry.py +0 -0
  649. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/langchain/conftest.py +0 -0
  650. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/langchain/test_graph.py +0 -0
  651. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/langchain/test_loader.py +0 -0
  652. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/langchain/test_retriever.py +0 -0
  653. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/make_fixture.py +0 -0
  654. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/perf/test_benchmarks.py +0 -0
  655. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/smoke.sh +0 -0
  656. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_a11y_check.py +0 -0
  657. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_action_pin_lockstep.py +0 -0
  658. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_adapters.py +0 -0
  659. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_adapters_multi.py +0 -0
  660. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_adapters_runner.py +0 -0
  661. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_agents.py +0 -0
  662. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_ai.py +0 -0
  663. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_aihost.py +0 -0
  664. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_bmad_core.py +0 -0
  665. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_boost_first_offer.py +0 -0
  666. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_bootstrap.py +0 -0
  667. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_bot_pr_dco.py +0 -0
  668. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_branch_current.py +0 -0
  669. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_browse.py +0 -0
  670. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_builtin.py +0 -0
  671. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_capabilities.py +0 -0
  672. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_catalog.py +0 -0
  673. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_catalogbundle.py +0 -0
  674. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_chat.py +0 -0
  675. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_check_anchors.py +0 -0
  676. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_check_dco.py +0 -0
  677. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_check_licenses.py +0 -0
  678. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_check_reproducible.py +0 -0
  679. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_claude_settings.py +0 -0
  680. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_clean_internal_cache.py +0 -0
  681. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_cli_update_shards.py +0 -0
  682. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_cliparse.py +0 -0
  683. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_codeql_analysis_key.py +0 -0
  684. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_command_reference_fresh.py +0 -0
  685. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_community_health_files.py +0 -0
  686. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_compact.py +0 -0
  687. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_complete.py +0 -0
  688. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_complete_rc_block.py +0 -0
  689. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_config.py +0 -0
  690. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_content_dedupe.py +0 -0
  691. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_content_identity.py +0 -0
  692. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_crash_redaction.py +0 -0
  693. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dedup_trust.py +0 -0
  694. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_demo_index.py +0 -0
  695. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense.py +0 -0
  696. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  697. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_embed_dedupe.py +0 -0
  698. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_entry_reuse.py +0 -0
  699. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_fallback.py +0 -0
  700. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_fix_hint.py +0 -0
  701. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_progress.py +0 -0
  702. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_quantized.py +0 -0
  703. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_ready_order.py +0 -0
  704. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shard_real_schema.py +0 -0
  705. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  706. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shards.py +0 -0
  707. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_status.py +0 -0
  708. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dense_status_cheap.py +0 -0
  709. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_dependabot_config.py +0 -0
  710. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_docs_pages_linked.py +0 -0
  711. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_docsite_chrome.py +0 -0
  712. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_ed25519.py +0 -0
  713. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_embed.py +0 -0
  714. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_embed_local.py +0 -0
  715. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_embed_truncated_response.py +0 -0
  716. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_entry_key.py +0 -0
  717. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_errors_and_cli_table.py +0 -0
  718. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_baseline.py +0 -0
  719. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_corpus.py +0 -0
  720. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_faithfulness.py +0 -0
  721. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_gate.py +0 -0
  722. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_grading.py +0 -0
  723. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_metrics.py +0 -0
  724. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_eval_stats_summary.py +0 -0
  725. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  726. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_faithfulness.py +0 -0
  727. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_frontmatter.py +0 -0
  728. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_fuzz_targets.py +0 -0
  729. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  730. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gitleaks_config.py +0 -0
  731. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil.py +0 -0
  732. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil_lfs.py +0 -0
  733. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil_sparse.py +0 -0
  734. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_gstack_coexistence.py +0 -0
  735. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_hook_settings_hosts.py +0 -0
  736. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_hookhost.py +0 -0
  737. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_imperative.py +0 -0
  738. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_import_budget.py +0 -0
  739. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_injectscan.py +0 -0
  740. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_install_permission_error.py +0 -0
  741. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_installscan.py +0 -0
  742. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_integrity.py +0 -0
  743. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_journal.py +0 -0
  744. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_langchain_packaging.py +0 -0
  745. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_link_ownership.py +0 -0
  746. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_localembed.py +0 -0
  747. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_localembed_e2e.py +0 -0
  748. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_lockfile.py +0 -0
  749. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_logs.py +0 -0
  750. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_marketing_counts.py +0 -0
  751. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mcp.py +0 -0
  752. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mcp_install_scan.py +0 -0
  753. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mcp_read.py +0 -0
  754. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mcpdecl.py +0 -0
  755. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mcphost.py +0 -0
  756. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_measure_registry.py +0 -0
  757. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_minisign.py +0 -0
  758. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_hardening.py +0 -0
  759. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_shards.py +0 -0
  760. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_subfile_shards.py +0 -0
  761. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_mutmut_source_paths.py +0 -0
  762. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_nethttp.py +0 -0
  763. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_normalize_sdist.py +0 -0
  764. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_output.py +0 -0
  765. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_page_budget.py +0 -0
  766. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_paths.py +0 -0
  767. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_perf_gate.py +0 -0
  768. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_confusions.py +0 -0
  769. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_injection.py +0 -0
  770. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_secrets.py +0 -0
  771. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_platform_pins.py +0 -0
  772. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_policy.py +0 -0
  773. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_post_deploy_smoke.py +0 -0
  774. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_project_mcp_sidecar.py +0 -0
  775. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_projectlock.py +0 -0
  776. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_provenance.py +0 -0
  777. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_publish_golden_dataset.py +0 -0
  778. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_rag.py +0 -0
  779. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_rag_fastpath.py +0 -0
  780. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_rag_fusion.py +0 -0
  781. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_registries_fresh.py +0 -0
  782. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_registry.py +0 -0
  783. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_registry_categories.py +0 -0
  784. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_registry_control_chars.py +0 -0
  785. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_registry_parallel.py +0 -0
  786. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_release_guard.py +0 -0
  787. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_release_preflight.py +0 -0
  788. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_required_checks.py +0 -0
  789. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_rerank_cache.py +0 -0
  790. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_resolve.py +0 -0
  791. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_roadmap_fresh.py +0 -0
  792. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_rules.py +0 -0
  793. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_scale_corpus.py +0 -0
  794. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_scopes.py +0 -0
  795. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_secretscan.py +0 -0
  796. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_selfupdate.py +0 -0
  797. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_serve.py +0 -0
  798. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_serve_docs.py +0 -0
  799. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_shard_plan.py +0 -0
  800. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_shards.py +0 -0
  801. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_shards_incremental.py +0 -0
  802. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_shards_ingest.py +0 -0
  803. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_shards_matrix.py +0 -0
  804. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_smoke_covers_every_command.py +0 -0
  805. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_spdx_headers.py +0 -0
  806. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_spin.py +0 -0
  807. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_stackprobe.py +0 -0
  808. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_staleness.py +0 -0
  809. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_store.py +0 -0
  810. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_store_materialize.py +0 -0
  811. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_sync_blocked_links.py +0 -0
  812. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  813. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_tap_pins.py +0 -0
  814. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_token_parity.py +0 -0
  815. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_toolchain_lock.py +0 -0
  816. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_trustaudit.py +0 -0
  817. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_typosquat.py +0 -0
  818. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_updatediff.py +0 -0
  819. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_util.py +0 -0
  820. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_version.py +0 -0
  821. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_version_tags.py +0 -0
  822. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_vex.py +0 -0
  823. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_visual_harness_flags.py +0 -0
  824. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_concurrency.py +0 -0
  825. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  826. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  827. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_timeouts.py +0 -0
  828. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_workflows.py +0 -0
  829. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  830. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/visual/a11y_check.mjs +0 -0
  831. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/visual/console_check.mjs +0 -0
  832. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/visual/package-lock.json +0 -0
  833. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/visual/package.json +0 -0
  834. {boost_skill_cli-1.2.63 → boost_skill_cli-1.2.64}/tests/visual/visual_check.mjs +0 -0
@@ -281,3 +281,10 @@ node_modules/
281
281
  # config). Written into the repo root by the language-server tooling, not by
282
282
  # boost, and specific to one developer's machine.
283
283
  .serena/
284
+
285
+ # A SQLite artifact from a tool that passed ":memory:" as a path rather than as
286
+ # the in-memory sentinel. Junk either way, and on Windows it is worse than junk:
287
+ # a colon cannot appear in a filename there, so committing it makes `git
288
+ # checkout` fail with exit 128 and every Windows CI job dies before it runs a
289
+ # single test.
290
+ :memory:*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.63
3
+ Version: 1.2.64
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.63'
22
- __version_tuple__ = version_tuple = (1, 2, 63)
21
+ __version__ = version = '1.2.64'
22
+ __version_tuple__ = version_tuple = (1, 2, 64)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.63
3
+ Version: 1.2.64
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -592,6 +592,7 @@ tests/eval/recommend.jsonl
592
592
  tests/eval/taps-scale.txt
593
593
  tests/eval/taps.txt
594
594
  tests/eval/tool_calls.jsonl
595
+ tests/eval/fixtures/claude_init_event.jsonl
595
596
  tests/functional/test_bmad_all_hosts.py
596
597
  tests/functional/test_capabilities_policy.py
597
598
  tests/functional/test_cli_adapt.py
@@ -719,6 +720,7 @@ tests/unit/test_eval_grading.py
719
720
  tests/unit/test_eval_metrics.py
720
721
  tests/unit/test_eval_stats_summary.py
721
722
  tests/unit/test_eval_tools.py
723
+ tests/unit/test_eval_tools_probe.py
722
724
  tests/unit/test_failure_alerting_covers_unattended.py
723
725
  tests/unit/test_faithfulness.py
724
726
  tests/unit/test_frontmatter.py
@@ -7,7 +7,7 @@ category: Quality · Eval
7
7
  complexity: L
8
8
  impact: High
9
9
  wow: 4
10
- note: Claude Code arm shipped in #616; the second host arm is unwritten and the card stays open for it
10
+ note: the Claude Code probe was broken and its finding was an artifact; fixed, second host still unwritten
11
11
  owner:
12
12
  order: 96
13
13
  title: a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions
@@ -61,22 +61,44 @@ N runs per prompt with an interval rather than a single pass/fail, the way
61
61
  <code>golden-set-statistical-power</code> established for retrieval — a one-shot replay cannot tell
62
62
  a wording regression from a sampling wobble.
63
63
 
64
- <b>Where this stands (2026-08-30).</b> The Claude Code arm shipped in #616:
64
+ <b>Where this stands (2026-08-31), and a correction.</b> The Claude Code arm shipped in #616:
65
65
  <code>scripts/eval_tools.py</code>, a 16-prompt set halved into should-call and should-NOT-call,
66
- Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false
67
- calls. Its first real run measured <b>3/3 false calls</b> &mdash; boost's tools fired on "What is
68
- the difference between a Python list and a tuple?", which the shipped skip list excuses by name.
69
- Call rate alone would have scored that a perfect 1.00, which is the whole argument for flooring
70
- both directions, now with a number behind it.
66
+ Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false calls.
71
67
 
72
- <b>The card stays open because "per host, never averaged" is the binding requirement and only one
73
- host has been driven.</b> Gemini CLI is not installed on the machine this was built on, and its
74
- successor Antigravity CLI (<code>agy</code>, which boost already supports as its fifth agent
75
- target and which has boost registered) cannot be driven from a sandbox: it starts a local
76
- language server and dies on <code>listen tcp 127.0.0.1:0: bind: operation not permitted</code>.
77
- Shipping an arm for a host nobody drove would put a number next to a measurement that never
78
- happened &mdash; the exact unfalsifiable claim this tier exists to retire. The <code>owner</code>
79
- is cleared rather than left on a merged branch, so the second arm is claimable.
68
+ <b>Its probe was broken, and the finding this card recorded was an artifact of it.</b> An earlier
69
+ revision of this card reported &ldquo;3/3 false calls &mdash; boost's tools fired on <em>What is the
70
+ difference between a Python list and a tuple?</em>&rdquo;. They did not fire. <code>called_boost()</code>
71
+ substring-scanned the raw event stream, and <code>claude -p --output-format stream-json --verbose</code>
72
+ opens with a <code>system</code>/<code>init</code> event enumerating <em>every tool available to the
73
+ session</em> &mdash; which on any machine where boost is registered contains
74
+ <code>mcp__boost__boost_search</code> and the other three CONSULT names. So the check returned
75
+ <code>true</code> on every run, including runs with no tool call at all. Measured directly:
76
+ <code>Say OK and nothing else.</code> produced zero <code>tool_use</code> blocks and scored as a
77
+ boost consult.
78
+
79
+ Two consequences shipped with it. <code>make eval-tools</code> could never pass &mdash; eight
80
+ no-call rows &times; three runs is 24 forced trues, so the false-call rate's lower bound sat at
81
+ 1.00 against a 0.20 ceiling, red on every machine forever. And the tier built to retire
82
+ unfalsifiable claims had produced one. <b>The lesson is the tier's own:</b> the existing tests
83
+ passed because they fed hand-written one-line fragments with no <code>init</code> event &mdash; a
84
+ fixture the author invented could not catch the author's wrong model of the input. The probe now
85
+ parses the NDJSON and counts only <code>tool_use</code> blocks inside <code>assistant</code>
86
+ events, and the regression test drives a <b>captured real stream</b>.
87
+
88
+ <b>The second host arm is still unwritten, and should stay that way until the fixed probe is
89
+ re-run.</b> Building arm two on a probe that cannot tell an offer from a call would produce two
90
+ hosts scoring an identical, meaningless 1.00. When it is built, the candidate is <b>Gemini CLI
91
+ proper</b>, not Antigravity CLI: the delivery claim below is about Gemini's Node bundle, and
92
+ <code>agy</code> is a third mode again &mdash; it receives boost's <code>instructions</code> and
93
+ writes them to <code>~/.gemini/antigravity-cli/mcp/boost/instructions.md</code>, pointing the agent
94
+ at the file rather than inlining it. Substituting it would measure a different mechanism than the
95
+ one this card argues about.
96
+
97
+ <b>Cost, now measured.</b> Two trivial runs on a real host reported <code>$0.657</code> and
98
+ <code>$0.682</code> of <code>total_cost_usd</code>, so 16 prompts &times; 3 runs is roughly
99
+ <b>$30&ndash;50 per host per invocation</b> on a machine with a crowded tool surface.
100
+ <code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
101
+ surface confound in the same move.
80
102
 
81
103
  <b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
82
104
  next surface change can regress against, and a way to retire claims that survive only because
@@ -865,22 +865,44 @@ N runs per prompt with an interval rather than a single pass/fail, the way
865
865
  <code>golden-set-statistical-power</code> established for retrieval — a one-shot replay cannot tell
866
866
  a wording regression from a sampling wobble.
867
867
 
868
- <b>Where this stands (2026-08-30).</b> The Claude Code arm shipped in #616:
868
+ <b>Where this stands (2026-08-31), and a correction.</b> The Claude Code arm shipped in #616:
869
869
  <code>scripts/eval_tools.py</code>, a 16-prompt set halved into should-call and should-NOT-call,
870
- Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false
871
- calls. Its first real run measured <b>3/3 false calls</b> &mdash; boost's tools fired on "What is
872
- the difference between a Python list and a tuple?", which the shipped skip list excuses by name.
873
- Call rate alone would have scored that a perfect 1.00, which is the whole argument for flooring
874
- both directions, now with a number behind it.
875
-
876
- <b>The card stays open because "per host, never averaged" is the binding requirement and only one
877
- host has been driven.</b> Gemini CLI is not installed on the machine this was built on, and its
878
- successor Antigravity CLI (<code>agy</code>, which boost already supports as its fifth agent
879
- target and which has boost registered) cannot be driven from a sandbox: it starts a local
880
- language server and dies on <code>listen tcp 127.0.0.1:0: bind: operation not permitted</code>.
881
- Shipping an arm for a host nobody drove would put a number next to a measurement that never
882
- happened &mdash; the exact unfalsifiable claim this tier exists to retire. The <code>owner</code>
883
- is cleared rather than left on a merged branch, so the second arm is claimable.
870
+ Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false calls.
871
+
872
+ <b>Its probe was broken, and the finding this card recorded was an artifact of it.</b> An earlier
873
+ revision of this card reported &ldquo;3/3 false calls &mdash; boost's tools fired on <em>What is the
874
+ difference between a Python list and a tuple?</em>&rdquo;. They did not fire. <code>called_boost()</code>
875
+ substring-scanned the raw event stream, and <code>claude -p --output-format stream-json --verbose</code>
876
+ opens with a <code>system</code>/<code>init</code> event enumerating <em>every tool available to the
877
+ session</em> &mdash; which on any machine where boost is registered contains
878
+ <code>mcp__boost__boost_search</code> and the other three CONSULT names. So the check returned
879
+ <code>true</code> on every run, including runs with no tool call at all. Measured directly:
880
+ <code>Say OK and nothing else.</code> produced zero <code>tool_use</code> blocks and scored as a
881
+ boost consult.
882
+
883
+ Two consequences shipped with it. <code>make eval-tools</code> could never pass &mdash; eight
884
+ no-call rows &times; three runs is 24 forced trues, so the false-call rate's lower bound sat at
885
+ 1.00 against a 0.20 ceiling, red on every machine forever. And the tier built to retire
886
+ unfalsifiable claims had produced one. <b>The lesson is the tier's own:</b> the existing tests
887
+ passed because they fed hand-written one-line fragments with no <code>init</code> event &mdash; a
888
+ fixture the author invented could not catch the author's wrong model of the input. The probe now
889
+ parses the NDJSON and counts only <code>tool_use</code> blocks inside <code>assistant</code>
890
+ events, and the regression test drives a <b>captured real stream</b>.
891
+
892
+ <b>The second host arm is still unwritten, and should stay that way until the fixed probe is
893
+ re-run.</b> Building arm two on a probe that cannot tell an offer from a call would produce two
894
+ hosts scoring an identical, meaningless 1.00. When it is built, the candidate is <b>Gemini CLI
895
+ proper</b>, not Antigravity CLI: the delivery claim below is about Gemini's Node bundle, and
896
+ <code>agy</code> is a third mode again &mdash; it receives boost's <code>instructions</code> and
897
+ writes them to <code>~/.gemini/antigravity-cli/mcp/boost/instructions.md</code>, pointing the agent
898
+ at the file rather than inlining it. Substituting it would measure a different mechanism than the
899
+ one this card argues about.
900
+
901
+ <b>Cost, now measured.</b> Two trivial runs on a real host reported <code>$0.657</code> and
902
+ <code>$0.682</code> of <code>total_cost_usd</code>, so 16 prompts &times; 3 runs is roughly
903
+ <b>$30&ndash;50 per host per invocation</b> on a machine with a crowded tool surface.
904
+ <code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
905
+ surface confound in the same move.
884
906
 
885
907
  <b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
886
908
  next surface change can regress against, and a way to retire claims that survive only because
@@ -889,7 +911,7 @@ nobody can check them.</p>
889
911
  <span class="m">Complexity <b>L</b></span>
890
912
  <span class="m hi">Impact <b>High</b></span>
891
913
  <span class="m">Wow <b class="wow">★★★★</b></span>
892
- <span class="m">Claude Code arm shipped in</span>
914
+ <span class="m">the Claude Code probe was broken and its finding was an artifact; fixed, second host still unwritten</span>
893
915
  </div>
894
916
  </article>
895
917
 
@@ -191,15 +191,76 @@ def verdict(metrics: dict, floor_call: float, ceiling_false: float) -> list[str]
191
191
 
192
192
  # ----------------------------------------------------------------- probe
193
193
 
194
+ def iter_events(events: str):
195
+ """Yield the parsed NDJSON objects in a host's stream, skipping junk.
196
+
197
+ A stream carries non-JSON lines (warnings, a truncated tail on timeout), and
198
+ a context note must never fail the run it annotates, so bad lines are
199
+ skipped rather than raised.
200
+ """
201
+ for line in (events or "").splitlines():
202
+ line = line.strip()
203
+ if not line.startswith("{"):
204
+ continue
205
+ try:
206
+ yield json.loads(line)
207
+ except ValueError:
208
+ continue
209
+
210
+
211
+ def tool_calls(events: str) -> list[str]:
212
+ """Every tool this run actually invoked, in order.
213
+
214
+ A *call* is a `tool_use` block inside an `assistant` event. Nothing else
215
+ counts, and that distinction is the whole measurement.
216
+ """
217
+ names = []
218
+ for ev in iter_events(events):
219
+ if ev.get("type") != "assistant":
220
+ continue
221
+ content = (ev.get("message") or {}).get("content") or []
222
+ names.extend(b.get("name") or "" for b in content
223
+ if isinstance(b, dict) and b.get("type") == "tool_use")
224
+ return names
225
+
226
+
194
227
  def called_boost(events: str) -> bool:
195
- """Did this run's event stream contain a boost CONSULT tool call?
228
+ """Did this run actually invoke a boost CONSULT tool?
196
229
 
197
230
  Reads the host's own stream rather than the model's prose: an agent that
198
231
  says "let me check boost" and does not is a miss, and one that calls
199
- without narrating is a hit. Substring matching on the bare tool name covers
200
- every host's namespacing (`mcp__boost__boost_search`, `mcp_boost_…`).
232
+ without narrating is a hit.
233
+
234
+ **It must not substring-match the raw stream, and the first version did.**
235
+ `claude -p --output-format stream-json --verbose` opens with a
236
+ `system`/`init` event enumerating every tool available to the session — on
237
+ a machine where boost is registered that list contains
238
+ `mcp__boost__boost_search` and the other three CONSULT names, in every run,
239
+ including runs with no tool call at all. So the old check returned True
240
+ unconditionally: `Say OK and nothing else.` scored as a boost consult, and
241
+ the no-call ceiling could never be met on any machine boost was installed
242
+ on. `make eval-tools` was guaranteed red, and the one finding this tier had
243
+ produced was an artifact of its own probe.
244
+
245
+ A tool being *offered* is not a tool being *called*, so the parse looks for
246
+ the call. Matching stays on the bare suffix, which covers every host's
247
+ namespacing (`mcp__boost__boost_search`, `mcp_boost_…`, `boost/…`).
248
+ """
249
+ return any(any(t in name for t in CONSULT_TOOLS)
250
+ for name in tool_calls(events))
251
+
252
+
253
+ def session_surface(events: str) -> tuple[int, int]:
254
+ """`(tools, mcp_servers)` the host offered this run, from its init event.
255
+
256
+ The confound the old probe hid rather than reported: call rate depends far
257
+ more on how crowded the tool surface is than on any wording edit, and the
258
+ init event has carried both counts all along.
201
259
  """
202
- return any(name in events for name in CONSULT_TOOLS)
260
+ for ev in iter_events(events):
261
+ if ev.get("type") == "system" and ev.get("subtype") == "init":
262
+ return len(ev.get("tools") or []), len(ev.get("mcp_servers") or [])
263
+ return 0, 0
203
264
 
204
265
 
205
266
  def claude_available() -> bool:
@@ -250,6 +311,20 @@ def _print_context() -> None:
250
311
  "for rule + descriptions, not descriptions alone.")
251
312
 
252
313
 
314
+ def _report_surface(tools: int, servers: int) -> None:
315
+ """How crowded the tool surface was — the other half of the context.
316
+
317
+ A call rate depends far more on how many tools competed for the slot than
318
+ on any wording edit, and the host's init event has carried both counts all
319
+ along. Printed, never subtracted: the honest move is to say what was in
320
+ scope, the same rule `_print_context` follows for rules.
321
+ """
322
+ if tools:
323
+ print(" host offered %d tool(s) across %d MCP server(s) this "
324
+ "run; a rate is for that surface, not for boost alone."
325
+ % (tools, servers))
326
+
327
+
253
328
  def _report(host: str, rows: list[dict], metrics: dict,
254
329
  reasons: list[str]) -> None:
255
330
  c, f = metrics["call_rate"], metrics["false_call_rate"]
@@ -318,12 +393,17 @@ def main(argv: list[str] | None = None) -> int:
318
393
  _print_context()
319
394
 
320
395
  observed: dict[str, list[bool]] = {}
396
+ surface = (0, 0)
321
397
  for r in rows:
322
398
  for _ in range(max(1, args.runs)):
323
399
  events = run_claude(r["prompt"], args.timeout)
324
400
  if events is None:
325
401
  continue
402
+ if surface == (0, 0):
403
+ surface = session_surface(events)
326
404
  observed.setdefault(r["id"], []).append(called_boost(events))
405
+ if args.report_context:
406
+ _report_surface(*surface)
327
407
 
328
408
  metrics = score_host(rows, observed)
329
409
  reasons = verdict(metrics, args.floor_call, args.ceiling_false_call)
@@ -0,0 +1,2 @@
1
+ {"type": "system", "subtype": "init", "tools": ["mcp__boost__boost_discover_github", "mcp__boost__boost_doctor", "mcp__boost__boost_info", "mcp__boost__boost_install", "mcp__boost__boost_list", "mcp__boost__boost_read", "mcp__boost__boost_search", "Read", "Bash", "Edit"], "mcp_servers": [{"name": "plugin:context7:context7", "status": "connected"}, {"name": "plugin:playwright:playwright", "status": "failed"}, {"name": "plugin:exa:exa", "status": "connected"}]}
2
+ {"type": "assistant", "message": {"content": [{"type": "text", "text": "OK"}]}}
@@ -207,28 +207,54 @@ class TestTheVerdictJudgesTheInterval:
207
207
  assert MOD.verdict(MOD.score_host(self.ROWS, {}), 0.60, 0.20)
208
208
 
209
209
 
210
+ def _assistant_call(name: str) -> str:
211
+ """One `assistant` event carrying one `tool_use` block — a real call.
212
+
213
+ These fixtures used to be bare fragments like `{"name":"boost_search"}`,
214
+ which no host emits. That shape is why this class passed against a probe
215
+ that substring-scanned the raw stream and therefore answered True on every
216
+ run: the fixtures had no `system`/`init` event, so the tool *list* the real
217
+ host sends was never in the input under test. A fixture the author invented
218
+ cannot catch the author's wrong model of the input, and it did not.
219
+ `tests/unit/test_eval_tools_probe.py` now drives a captured real stream.
220
+ """
221
+ return json.dumps({"type": "assistant", "message": {"content": [
222
+ {"type": "tool_use", "name": name, "input": {}}]}})
223
+
224
+
210
225
  class TestTheProbeReadsTheHostNotTheProse:
211
226
  def test_a_tool_call_counts(self):
212
- assert MOD.called_boost('{"type":"tool_use","name":"boost_search"}')
227
+ assert MOD.called_boost(_assistant_call("boost_search"))
213
228
 
214
229
  def test_a_host_prefixed_name_counts(self):
215
230
  # Hosts namespace MCP tools differently; matching the bare suffix keeps
216
231
  # one list correct across all of them.
217
- for name in ("mcp__boost__boost_search", "mcp_boost_boost_search"):
218
- assert MOD.called_boost('{"name":"%s"}' % name), name
232
+ for name in ("mcp__boost__boost_search", "mcp_boost_boost_search",
233
+ "boost/boost_search"):
234
+ assert MOD.called_boost(_assistant_call(name)), name
235
+
236
+ def test_being_offered_a_tool_is_not_calling_it(self):
237
+ # The bug this class missed: the host's init event lists every
238
+ # available tool, so a stream with no call at all still names them.
239
+ init = json.dumps({"type": "system", "subtype": "init",
240
+ "tools": ["mcp__boost__boost_search",
241
+ "mcp__boost__boost_list"]})
242
+ assert not MOD.called_boost(init)
219
243
 
220
244
  def test_narrating_a_check_without_making_one_is_a_miss(self):
221
245
  # An agent that says it will check and does not is a miss; the event
222
246
  # stream is the record, not the model's account of itself.
223
- assert not MOD.called_boost(
224
- '{"type":"text","text":"Let me check the skill registry first."}')
247
+ assert not MOD.called_boost(json.dumps(
248
+ {"type": "assistant", "message": {"content": [
249
+ {"type": "text",
250
+ "text": "Let me check the skill registry with boost_search."}]}}))
225
251
 
226
252
  def test_installing_is_not_consulting(self):
227
253
  # `boost_install` is downstream of a decision already made. Counting it
228
254
  # would let a run that installed without looking score as a check.
229
255
  assert "boost_install" in MOD.BOOST_TOOLS
230
256
  assert "boost_install" not in MOD.CONSULT_TOOLS
231
- assert not MOD.called_boost('{"name":"boost_install"}')
257
+ assert not MOD.called_boost(_assistant_call("boost_install"))
232
258
 
233
259
  def test_an_empty_stream_is_a_miss(self):
234
260
  assert not MOD.called_boost("")
@@ -0,0 +1,127 @@
1
+ # Copyright the boost contributors.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ """Unit tests: the tool-call probe must tell an offer from a call.
4
+
5
+ `scripts/eval_tools.py` scores whether an agent *called* boost. The first
6
+ version answered that with `any(name in events for name in CONSULT_TOOLS)` — a
7
+ substring scan of the whole stream — and it was wrong in the one direction that
8
+ looks like a result.
9
+
10
+ `claude -p --output-format stream-json --verbose` opens with a `system`/`init`
11
+ event enumerating every tool available to the session. On any machine where
12
+ boost is registered, that list contains `mcp__boost__boost_search` and the
13
+ other three CONSULT names. So the scan matched on every run, including runs
14
+ with no tool call at all, and `called_boost()` returned True unconditionally.
15
+
16
+ Three things followed, and all three shipped:
17
+
18
+ 1. `make eval-tools` could never pass. Eight no-call rows x 3 runs = 24 forced
19
+ True, so the false-call rate's lower bound sat at 1.0 against a 0.20
20
+ ceiling — red on every machine, forever.
21
+ 2. The tier's one recorded finding — "boost's tools fired on 'What is the
22
+ difference between a Python list and a tuple?'" — was an artifact of its own
23
+ probe. Measured here: that prompt makes zero tool calls.
24
+ 3. The existing tests passed, because they fed hand-written one-line fixtures
25
+ that had no init event. They pinned substring behaviour against a stream
26
+ shape the real host does not emit.
27
+
28
+ So the fixture below is **captured from a real `claude -p` run**, not written
29
+ by hand, and its whole job is to assert False. A test whose input the author
30
+ invented cannot catch an author's wrong model of the input.
31
+ """
32
+ from __future__ import annotations
33
+
34
+ import importlib.util
35
+ import json
36
+ from pathlib import Path
37
+
38
+ import pytest
39
+
40
+ ROOT = Path(__file__).resolve().parents[2]
41
+ SCRIPT = ROOT / "scripts" / "eval_tools.py"
42
+ FIXTURE = ROOT / "tests" / "eval" / "fixtures" / "claude_init_event.jsonl"
43
+
44
+ pytestmark = pytest.mark.skipif(
45
+ not SCRIPT.exists() or not FIXTURE.exists(),
46
+ reason="repo-root scripts/tests not reachable (e.g. mutation sandbox)")
47
+
48
+
49
+ def _mod():
50
+ spec = importlib.util.spec_from_file_location("eval_tools_probe", SCRIPT)
51
+ m = importlib.util.module_from_spec(spec)
52
+ assert spec.loader is not None
53
+ spec.loader.exec_module(m)
54
+ return m
55
+
56
+
57
+ def _call(name: str) -> str:
58
+ return json.dumps({"type": "assistant", "message": {"content": [
59
+ {"type": "tool_use", "name": name, "input": {}}]}})
60
+
61
+
62
+ class TestAnOfferIsNotACall:
63
+ """The captured stream. Zero tool calls, every boost tool name present."""
64
+
65
+ def test_the_fixture_really_does_advertise_the_boost_tools(self):
66
+ # Without this the next test could pass by the fixture being empty.
67
+ text = FIXTURE.read_text(encoding="utf-8")
68
+ for name in ("boost_search", "boost_list", "boost_info", "boost_read"):
69
+ assert name in text, name
70
+
71
+ def test_a_run_that_called_nothing_scores_false(self):
72
+ m = _mod()
73
+ assert m.called_boost(FIXTURE.read_text(encoding="utf-8")) is False
74
+
75
+ def test_and_reports_no_tool_calls(self):
76
+ m = _mod()
77
+ assert m.tool_calls(FIXTURE.read_text(encoding="utf-8")) == []
78
+
79
+ def test_the_old_substring_check_would_have_said_true(self):
80
+ # Pins the bug itself, so the fix cannot be quietly reverted into a
81
+ # scan that passes these tests by accident.
82
+ text = FIXTURE.read_text(encoding="utf-8")
83
+ m = _mod()
84
+ assert any(n in text for n in m.CONSULT_TOOLS)
85
+
86
+
87
+ class TestARealCallStillCounts:
88
+ def test_a_namespaced_call_is_found(self):
89
+ m = _mod()
90
+ stream = FIXTURE.read_text(encoding="utf-8") + "\n" + \
91
+ _call("mcp__boost__boost_search")
92
+ assert m.called_boost(stream) is True
93
+ assert m.tool_calls(stream) == ["mcp__boost__boost_search"]
94
+
95
+ @pytest.mark.parametrize("name", [
96
+ "boost_search", "mcp__boost__boost_search",
97
+ "mcp_boost_boost_search", "boost/boost_search"])
98
+ def test_every_hosts_namespacing_still_matches(self, name):
99
+ # The suffix match is what keeps one CONSULT list correct across hosts.
100
+ assert _mod().called_boost(_call(name)) is True
101
+
102
+ def test_install_alone_is_not_a_consult(self):
103
+ # Installing is downstream of a decision already made; scoring it would
104
+ # let a run that installed without looking count as a check.
105
+ assert _mod().called_boost(_call("mcp__boost__boost_install")) is False
106
+
107
+ def test_a_non_boost_call_is_not_a_consult(self):
108
+ assert _mod().called_boost(_call("Read")) is False
109
+
110
+
111
+ class TestTheParseSurvivesRealStreams:
112
+ def test_non_json_lines_are_skipped(self):
113
+ m = _mod()
114
+ assert m.called_boost("warning: something\nnot json\n") is False
115
+
116
+ def test_a_truncated_tail_does_not_raise(self):
117
+ # A timeout kills the host mid-line; the probe must still answer.
118
+ m = _mod()
119
+ assert m.called_boost(_call("boost_search") + '\n{"type": "assis') is True
120
+
121
+ def test_the_surface_is_read_from_the_init_event(self):
122
+ m = _mod()
123
+ tools, servers = m.session_surface(FIXTURE.read_text(encoding="utf-8"))
124
+ assert tools > 0 and servers >= 0
125
+
126
+ def test_a_stream_with_no_init_event_reports_zero(self):
127
+ assert _mod().session_surface(_call("boost_search")) == (0, 0)
File without changes
File without changes