boost-skill-cli 1.2.62__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.62 → boost_skill_cli-1.2.64}/.gitignore +7 -0
  2. {boost_skill_cli-1.2.62/boost_skill_cli.egg-info → boost_skill_cli-1.2.64}/PKG-INFO +1 -1
  3. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/dense.py +87 -14
  5. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  6. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/SOURCES.txt +4 -0
  7. boost_skill_cli-1.2.64/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +79 -0
  8. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/tool-call-eval-tier.md +37 -15
  9. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap.html +114 -17
  10. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_tools.py +84 -4
  11. boost_skill_cli-1.2.64/tests/eval/fixtures/claude_init_event.jsonl +2 -0
  12. boost_skill_cli-1.2.64/tests/unit/test_dense_boilerplate_cluster.py +229 -0
  13. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_tools.py +32 -6
  14. boost_skill_cli-1.2.64/tests/unit/test_eval_tools_probe.py +127 -0
  15. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.gitattributes +0 -0
  16. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.gitleaks.toml +0 -0
  17. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.htmlvalidate.json +0 -0
  18. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.lighthouserc.json +0 -0
  19. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.lycheeignore +0 -0
  20. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.markdownlint-cli2.jsonc +0 -0
  21. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.pre-commit-config.yaml +0 -0
  22. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.stylelintrc.json +0 -0
  23. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.vale/styles/boost/AIWriting.yml +0 -0
  24. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.vale/styles/boost/Terminology.yml +0 -0
  25. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  26. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/.vale.ini +0 -0
  27. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/CLAUDE.md +0 -0
  28. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/CODE_OF_CONDUCT.md +0 -0
  29. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/CONTRIBUTING.md +0 -0
  30. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/DCO +0 -0
  31. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/GOVERNANCE.md +0 -0
  32. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/LICENSE +0 -0
  33. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/MAINTAINERS.md +0 -0
  34. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/MANIFEST.in +0 -0
  35. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/Makefile +0 -0
  36. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/README.md +0 -0
  37. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/SECURITY.md +0 -0
  38. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/SUPPORT.md +0 -0
  39. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost +0 -0
  40. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/__init__.py +0 -0
  41. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/__main__.py +0 -0
  42. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/cli.py +0 -0
  43. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/cliparse.py +0 -0
  44. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/__init__.py +0 -0
  45. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/_common.py +0 -0
  46. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/bmad.py +0 -0
  47. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/configuration.py +0 -0
  48. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/discovery.py +0 -0
  49. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/hooks.py +0 -0
  50. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/info.py +0 -0
  51. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/intelligence.py +0 -0
  52. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/pkg.py +0 -0
  53. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/quality.py +0 -0
  54. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/quickstart.py +0 -0
  55. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/run.py +0 -0
  56. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/safety.py +0 -0
  57. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/taps.py +0 -0
  58. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/commands/team.py +0 -0
  59. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/__init__.py +0 -0
  60. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/adapters.py +0 -0
  61. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/agents.py +0 -0
  62. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/ai.py +0 -0
  63. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/aihost.py +0 -0
  64. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/bmad.py +0 -0
  65. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/bootstrap.py +0 -0
  66. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/browse.py +0 -0
  67. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/builtin.py +0 -0
  68. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/capabilities.py +0 -0
  69. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/catalog.py +0 -0
  70. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/catalogbundle.py +0 -0
  71. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/chat.py +0 -0
  72. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/claude_settings.py +0 -0
  73. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/complete.py +0 -0
  74. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/config.py +0 -0
  75. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/ed25519.py +0 -0
  76. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/embed.py +0 -0
  77. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/faithfulness.py +0 -0
  78. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/frontmatter.py +0 -0
  79. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/gitutil.py +0 -0
  80. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/hookhost.py +0 -0
  81. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/imperative.py +0 -0
  82. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/injectscan.py +0 -0
  83. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/installscan.py +0 -0
  84. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/integrity.py +0 -0
  85. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/journal.py +0 -0
  86. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/localembed.py +0 -0
  87. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/lockfile.py +0 -0
  88. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/logs.py +0 -0
  89. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/mcp.py +0 -0
  90. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/mcpdecl.py +0 -0
  91. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/mcphost.py +0 -0
  92. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/minisign.py +0 -0
  93. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/nethttp.py +0 -0
  94. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/output.py +0 -0
  95. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/paths.py +0 -0
  96. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/policy.py +0 -0
  97. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/projectlock.py +0 -0
  98. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/provenance.py +0 -0
  99. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/rag.py +0 -0
  100. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/registry.py +0 -0
  101. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/resolve.py +0 -0
  102. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/rules.py +0 -0
  103. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/scopes.py +0 -0
  104. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/secretscan.py +0 -0
  105. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/selfupdate.py +0 -0
  106. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/serve.py +0 -0
  107. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/shards.py +0 -0
  108. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/stackprobe.py +0 -0
  109. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/staleness.py +0 -0
  110. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/store.py +0 -0
  111. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/trustaudit.py +0 -0
  112. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/typosquat.py +0 -0
  113. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/updatediff.py +0 -0
  114. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/util.py +0 -0
  115. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/core/workflows.py +0 -0
  116. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/data/registries.json +0 -0
  117. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/data/rules/boost-first.mdc +0 -0
  118. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/errors.py +0 -0
  119. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_cli/spin.py +0 -0
  120. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/__init__.py +0 -0
  121. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/_compat.py +0 -0
  122. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/graph.py +0 -0
  123. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/loader.py +0 -0
  124. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/py.typed +0 -0
  125. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_langchain/retriever.py +0 -0
  126. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  127. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  128. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/requires.txt +0 -0
  129. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/boost_skill_cli.egg-info/top_level.txt +0 -0
  130. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/codecov.yml +0 -0
  131. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/.claude/settings.local.json +0 -0
  132. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/DEBUGGING.md +0 -0
  133. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/adapters.html +0 -0
  134. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/architecture/README.md +0 -0
  135. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/architecture/c4-components-core.md +0 -0
  136. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/architecture/c4-containers.md +0 -0
  137. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/architecture/c4-context.md +0 -0
  138. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/architecture/c4-dynamic-install.md +0 -0
  139. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/bmad.md +0 -0
  140. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/distill.gif +0 -0
  141. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/doctor.gif +0 -0
  142. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/explain.gif +0 -0
  143. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/hooks.gif +0 -0
  144. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/install.gif +0 -0
  145. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/pulse.gif +0 -0
  146. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/search.gif +0 -0
  147. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/gifs/tap.gif +0 -0
  148. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/distill.tape +0 -0
  149. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/doctor.tape +0 -0
  150. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/explain.tape +0 -0
  151. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/hooks.tape +0 -0
  152. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/install.tape +0 -0
  153. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/pulse.tape +0 -0
  154. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/search.tape +0 -0
  155. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel/tapes/tap.tape +0 -0
  156. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/carousel.html +0 -0
  157. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/chat.html +0 -0
  158. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/code-review.md +0 -0
  159. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/commands.html +0 -0
  160. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/commit-audit.md +0 -0
  161. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/demo-index.json +0 -0
  162. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/demo.gif +0 -0
  163. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/demo.html +0 -0
  164. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/demo.tape +0 -0
  165. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/dependencies.md +0 -0
  166. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/design-roadmap.html +0 -0
  167. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/eval-latest.json +0 -0
  168. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/eval.html +0 -0
  169. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/index.html +0 -0
  170. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/langchain.html +0 -0
  171. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/mcp-hub.html +0 -0
  172. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/openssf-badge.md +0 -0
  173. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/openssf-playbook.md +0 -0
  174. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/rag-architecture.md +0 -0
  175. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D01.md +0 -0
  176. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D02.md +0 -0
  177. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D03.md +0 -0
  178. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D04.md +0 -0
  179. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D05.md +0 -0
  180. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D06.md +0 -0
  181. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D07.md +0 -0
  182. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D08.md +0 -0
  183. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D09.md +0 -0
  184. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D10.md +0 -0
  185. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D11.md +0 -0
  186. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D12.md +0 -0
  187. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D13.md +0 -0
  188. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D14.md +0 -0
  189. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D15.md +0 -0
  190. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D16.md +0 -0
  191. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D17.md +0 -0
  192. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D18.md +0 -0
  193. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D19.md +0 -0
  194. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D20.md +0 -0
  195. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D21.md +0 -0
  196. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D22.md +0 -0
  197. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D23.md +0 -0
  198. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D24.md +0 -0
  199. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D25.md +0 -0
  200. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D26.md +0 -0
  201. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/BOOST-D27.md +0 -0
  202. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  203. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  204. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  205. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  206. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  207. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  208. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  209. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  210. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  211. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  212. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  213. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  214. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  215. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  216. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  217. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  218. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-first-rule.md +0 -0
  219. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  220. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  221. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/branch-current-gate.md +0 -0
  222. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  223. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  224. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  225. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  226. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  227. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  228. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  229. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  230. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  231. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  232. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  233. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  234. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  235. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  236. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/cli-command-audit.md +0 -0
  237. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  238. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  239. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  240. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  241. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/command-carousel-page.md +0 -0
  242. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  243. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  244. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  245. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  246. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  247. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  248. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  249. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  250. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  251. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  252. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  253. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  254. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  255. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  256. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  257. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  258. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  259. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  260. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  261. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  262. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  263. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  264. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  265. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  266. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  267. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  268. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  269. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  270. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  271. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  272. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  273. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  274. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  275. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  276. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  277. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  278. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  279. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  280. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  281. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  282. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  283. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  284. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  285. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  286. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  287. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  288. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  289. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  290. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  291. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  292. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  293. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  294. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/github-community-health-files.md +0 -0
  295. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  296. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  297. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  298. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  299. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  300. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  301. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  302. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  303. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  304. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  305. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  306. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  307. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  308. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  309. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  310. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  311. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  312. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  313. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  314. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  315. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  316. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  317. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  318. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  319. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  320. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  321. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  322. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  323. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  324. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  325. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  326. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  327. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  328. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  329. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  330. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  331. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  332. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  333. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  334. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  335. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  336. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  337. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  338. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  339. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  340. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  341. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  342. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  343. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  344. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  345. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  346. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  347. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  348. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  349. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  350. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  351. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  352. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  353. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  354. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  355. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  356. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  357. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  358. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  359. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  360. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  361. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  362. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  363. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  364. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  365. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  366. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  367. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  368. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  369. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  370. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  371. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  372. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-playbook.md +0 -0
  373. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/openssf-silver.md +0 -0
  374. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  375. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  376. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  377. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  378. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  379. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  380. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  381. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  382. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  383. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  384. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  385. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  386. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  387. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  388. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  389. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  390. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  391. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  392. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  393. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  394. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  395. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  396. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  397. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  398. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  399. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  400. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  401. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  402. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  403. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  404. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  405. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  406. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/relicence-apache-2.md +0 -0
  407. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  408. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  409. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  410. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  411. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  412. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  413. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  414. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  415. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  416. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  417. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  418. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  419. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  420. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  421. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  422. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  423. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  424. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  425. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  426. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  427. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  428. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  429. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  430. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  431. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  432. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  433. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  434. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  435. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  436. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  437. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  438. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  439. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  440. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  441. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  442. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  443. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  444. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  445. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  446. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  447. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  448. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  449. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  450. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  451. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  452. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  453. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  454. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  455. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  456. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  457. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  458. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  459. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  460. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  461. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  462. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  463. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  464. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  465. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  466. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  467. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  468. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  469. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  470. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  471. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  472. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  473. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  474. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  475. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  476. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  477. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  478. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  479. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  480. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  481. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  482. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  483. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  484. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  485. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  486. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  487. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/workspace-scope-install.md +0 -0
  488. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/zip-strict-audit.md +0 -0
  489. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  490. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  491. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/security-design.md +0 -0
  492. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/semantic-search.md +0 -0
  493. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  494. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/verifying-releases.md +0 -0
  495. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/meta.md +0 -0
  496. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/openvex.json +0 -0
  497. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  498. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  499. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  500. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  501. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/eslint.config.mjs +0 -0
  502. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/README.md +0 -0
  503. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/__init__.py +0 -0
  504. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/baseline.json +0 -0
  505. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/faithfulness.py +0 -0
  506. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/golden_set.json +0 -0
  507. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/make_corpus.py +0 -0
  508. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/make_golden.py +0 -0
  509. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/metrics.py +0 -0
  510. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/publish_golden_dataset.py +0 -0
  511. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/evals/run_evals.py +0 -0
  512. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/examples/README.md +0 -0
  513. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/examples/adapt-demo.sh +0 -0
  514. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/examples/boost-run-prototype.sh +0 -0
  515. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/index.html +0 -0
  516. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/noxfile.py +0 -0
  517. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/pyproject.toml +0 -0
  518. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/coverage-tools.in +0 -0
  519. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/coverage-tools.txt +0 -0
  520. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/lint-tools.in +0 -0
  521. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/lint-tools.txt +0 -0
  522. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/mutation-tools.in +0 -0
  523. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/mutation-tools.txt +0 -0
  524. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/platform-pins.lock +0 -0
  525. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/release-tools.in +0 -0
  526. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/release-tools.txt +0 -0
  527. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/test-tools.in +0 -0
  528. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/requirements/test-tools.txt +0 -0
  529. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/a11y_check.py +0 -0
  530. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/add_spdx_headers.py +0 -0
  531. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/bench_cli.sh +0 -0
  532. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_command_reference.py +0 -0
  533. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_demo_index.py +0 -0
  534. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_registries.py +0 -0
  535. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_roadmap.py +0 -0
  536. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_scale_corpus.py +0 -0
  537. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/build_vex.py +0 -0
  538. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_anchors.py +0 -0
  539. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_branch_current.py +0 -0
  540. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_dco.py +0 -0
  541. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_licenses.py +0 -0
  542. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_reproducible.py +0 -0
  543. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/check_required_checks.py +0 -0
  544. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/ensure_eval_corpus.sh +0 -0
  545. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_corpus.py +0 -0
  546. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_explain.py +0 -0
  547. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_gate.py +0 -0
  548. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_recommend.py +0 -0
  549. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_retrieval.py +0 -0
  550. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/eval_stats_summary.py +0 -0
  551. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/import_budget.py +0 -0
  552. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/lock_toolchain.py +0 -0
  553. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/measure_registry.py +0 -0
  554. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/mutation_gate.py +0 -0
  555. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/mutation_shards.py +0 -0
  556. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/mutation_weights.json +0 -0
  557. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/normalize_sdist.py +0 -0
  558. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/page_budget.py +0 -0
  559. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/perf_gate.py +0 -0
  560. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/post_deploy_smoke.py +0 -0
  561. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/publish_eval_json.py +0 -0
  562. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/publish_shards.py +0 -0
  563. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/release_guard.py +0 -0
  564. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/release_preflight.py +0 -0
  565. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/serve_docs.py +0 -0
  566. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/scripts/shard_plan.py +0 -0
  567. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/setup.cfg +0 -0
  568. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/sonar-project.properties +0 -0
  569. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/style/README.md +0 -0
  570. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/style/boost.css +0 -0
  571. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/style/boost.js +0 -0
  572. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/style/demo.html +0 -0
  573. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/adapt.feature +0 -0
  574. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/browse.feature +0 -0
  575. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/count.feature +0 -0
  576. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/discover.feature +0 -0
  577. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/doctor.feature +0 -0
  578. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/environment.py +0 -0
  579. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/explain.feature +0 -0
  580. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/index.feature +0 -0
  581. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/install.feature +0 -0
  582. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/list.feature +0 -0
  583. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/mcp.feature +0 -0
  584. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/search.feature +0 -0
  585. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/cli_steps.py +0 -0
  586. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/discovery_steps.py +0 -0
  587. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/mcp_steps.py +0 -0
  588. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/bdd/features/steps/quality_steps.py +0 -0
  589. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/conftest.py +0 -0
  590. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/baseline.json +0 -0
  591. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/explain.jsonl +0 -0
  592. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/golden-natural.jsonl +0 -0
  593. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/golden.jsonl +0 -0
  594. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/recommend.jsonl +0 -0
  595. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/taps-scale.txt +0 -0
  596. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/taps.txt +0 -0
  597. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/eval/tool_calls.jsonl +0 -0
  598. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_bmad_all_hosts.py +0 -0
  599. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_capabilities_policy.py +0 -0
  600. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_adapt.py +0 -0
  601. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_bmad.py +0 -0
  602. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_catalog.py +0 -0
  603. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_chat.py +0 -0
  604. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_configuration.py +0 -0
  605. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_discovery.py +0 -0
  606. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_hooks.py +0 -0
  607. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_hooks_gemini.py +0 -0
  608. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_info.py +0 -0
  609. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_intelligence.py +0 -0
  610. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_pane_width.py +0 -0
  611. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_pkg.py +0 -0
  612. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_quality.py +0 -0
  613. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_quickstart.py +0 -0
  614. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_tap_pins.py +0 -0
  615. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_taps.py +0 -0
  616. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_cli_team.py +0 -0
  617. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_everyday_loop.py +0 -0
  618. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_integrity_enforce.py +0 -0
  619. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_kind_conformance.py +0 -0
  620. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_property_parsers.py +0 -0
  621. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_run.py +0 -0
  622. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_tap_signing.py +0 -0
  623. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/functional/test_workspace_scope.py +0 -0
  624. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/README.md +0 -0
  625. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  626. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  627. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  628. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  629. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  630. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  631. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  632. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  633. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  634. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  635. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  636. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  637. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  638. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  639. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  640. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  641. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  642. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  643. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  644. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  645. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  646. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  647. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  648. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/fuzz_frontmatter.py +0 -0
  649. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/fuzz/fuzz_registry.py +0 -0
  650. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/langchain/conftest.py +0 -0
  651. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/langchain/test_graph.py +0 -0
  652. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/langchain/test_loader.py +0 -0
  653. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/langchain/test_retriever.py +0 -0
  654. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/make_fixture.py +0 -0
  655. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/perf/test_benchmarks.py +0 -0
  656. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/smoke.sh +0 -0
  657. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_a11y_check.py +0 -0
  658. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_action_pin_lockstep.py +0 -0
  659. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_adapters.py +0 -0
  660. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_adapters_multi.py +0 -0
  661. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_adapters_runner.py +0 -0
  662. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_agents.py +0 -0
  663. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_ai.py +0 -0
  664. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_aihost.py +0 -0
  665. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_bmad_core.py +0 -0
  666. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_boost_first_offer.py +0 -0
  667. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_bootstrap.py +0 -0
  668. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_bot_pr_dco.py +0 -0
  669. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_branch_current.py +0 -0
  670. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_browse.py +0 -0
  671. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_builtin.py +0 -0
  672. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_capabilities.py +0 -0
  673. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_catalog.py +0 -0
  674. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_catalogbundle.py +0 -0
  675. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_chat.py +0 -0
  676. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_check_anchors.py +0 -0
  677. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_check_dco.py +0 -0
  678. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_check_licenses.py +0 -0
  679. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_check_reproducible.py +0 -0
  680. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_claude_settings.py +0 -0
  681. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_clean_internal_cache.py +0 -0
  682. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_cli_update_shards.py +0 -0
  683. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_cliparse.py +0 -0
  684. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_codeql_analysis_key.py +0 -0
  685. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_command_reference_fresh.py +0 -0
  686. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_community_health_files.py +0 -0
  687. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_compact.py +0 -0
  688. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_complete.py +0 -0
  689. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_complete_rc_block.py +0 -0
  690. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_config.py +0 -0
  691. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_content_dedupe.py +0 -0
  692. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_content_identity.py +0 -0
  693. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_crash_redaction.py +0 -0
  694. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dedup_trust.py +0 -0
  695. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_demo_index.py +0 -0
  696. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense.py +0 -0
  697. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_embed_dedupe.py +0 -0
  698. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_entry_reuse.py +0 -0
  699. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_fallback.py +0 -0
  700. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_fix_hint.py +0 -0
  701. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_progress.py +0 -0
  702. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_quantized.py +0 -0
  703. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_ready_order.py +0 -0
  704. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shard_real_schema.py +0 -0
  705. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  706. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_shards.py +0 -0
  707. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_status.py +0 -0
  708. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dense_status_cheap.py +0 -0
  709. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_dependabot_config.py +0 -0
  710. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_docs_pages_linked.py +0 -0
  711. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_docsite_chrome.py +0 -0
  712. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_ed25519.py +0 -0
  713. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_embed.py +0 -0
  714. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_embed_local.py +0 -0
  715. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_embed_truncated_response.py +0 -0
  716. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_entry_key.py +0 -0
  717. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_errors_and_cli_table.py +0 -0
  718. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_baseline.py +0 -0
  719. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_corpus.py +0 -0
  720. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_faithfulness.py +0 -0
  721. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_gate.py +0 -0
  722. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_grading.py +0 -0
  723. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_metrics.py +0 -0
  724. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_eval_stats_summary.py +0 -0
  725. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  726. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_faithfulness.py +0 -0
  727. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_frontmatter.py +0 -0
  728. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_fuzz_targets.py +0 -0
  729. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  730. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gitleaks_config.py +0 -0
  731. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil.py +0 -0
  732. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil_lfs.py +0 -0
  733. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gitutil_sparse.py +0 -0
  734. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_gstack_coexistence.py +0 -0
  735. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_hook_settings_hosts.py +0 -0
  736. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_hookhost.py +0 -0
  737. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_imperative.py +0 -0
  738. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_import_budget.py +0 -0
  739. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_injectscan.py +0 -0
  740. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_install_permission_error.py +0 -0
  741. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_installscan.py +0 -0
  742. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_integrity.py +0 -0
  743. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_journal.py +0 -0
  744. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_langchain_packaging.py +0 -0
  745. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_link_ownership.py +0 -0
  746. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_localembed.py +0 -0
  747. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_localembed_e2e.py +0 -0
  748. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_lockfile.py +0 -0
  749. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_logs.py +0 -0
  750. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_marketing_counts.py +0 -0
  751. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mcp.py +0 -0
  752. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mcp_install_scan.py +0 -0
  753. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mcp_read.py +0 -0
  754. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mcpdecl.py +0 -0
  755. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mcphost.py +0 -0
  756. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_measure_registry.py +0 -0
  757. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_minisign.py +0 -0
  758. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_hardening.py +0 -0
  759. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_shards.py +0 -0
  760. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mutation_subfile_shards.py +0 -0
  761. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_mutmut_source_paths.py +0 -0
  762. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_nethttp.py +0 -0
  763. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_normalize_sdist.py +0 -0
  764. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_output.py +0 -0
  765. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_page_budget.py +0 -0
  766. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_paths.py +0 -0
  767. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_perf_gate.py +0 -0
  768. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_confusions.py +0 -0
  769. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_injection.py +0 -0
  770. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_pkg_secrets.py +0 -0
  771. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_platform_pins.py +0 -0
  772. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_policy.py +0 -0
  773. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_post_deploy_smoke.py +0 -0
  774. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_project_mcp_sidecar.py +0 -0
  775. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_projectlock.py +0 -0
  776. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_provenance.py +0 -0
  777. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_publish_golden_dataset.py +0 -0
  778. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_rag.py +0 -0
  779. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_rag_fastpath.py +0 -0
  780. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_rag_fusion.py +0 -0
  781. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_registries_fresh.py +0 -0
  782. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_registry.py +0 -0
  783. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_registry_categories.py +0 -0
  784. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_registry_control_chars.py +0 -0
  785. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_registry_parallel.py +0 -0
  786. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_release_guard.py +0 -0
  787. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_release_preflight.py +0 -0
  788. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_required_checks.py +0 -0
  789. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_rerank_cache.py +0 -0
  790. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_resolve.py +0 -0
  791. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_roadmap_fresh.py +0 -0
  792. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_rules.py +0 -0
  793. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_scale_corpus.py +0 -0
  794. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_scopes.py +0 -0
  795. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_secretscan.py +0 -0
  796. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_selfupdate.py +0 -0
  797. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_serve.py +0 -0
  798. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_serve_docs.py +0 -0
  799. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_shard_plan.py +0 -0
  800. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_shards.py +0 -0
  801. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_shards_incremental.py +0 -0
  802. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_shards_ingest.py +0 -0
  803. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_shards_matrix.py +0 -0
  804. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_smoke_covers_every_command.py +0 -0
  805. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_spdx_headers.py +0 -0
  806. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_spin.py +0 -0
  807. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_stackprobe.py +0 -0
  808. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_staleness.py +0 -0
  809. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_store.py +0 -0
  810. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_store_materialize.py +0 -0
  811. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_sync_blocked_links.py +0 -0
  812. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  813. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_tap_pins.py +0 -0
  814. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_token_parity.py +0 -0
  815. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_toolchain_lock.py +0 -0
  816. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_trustaudit.py +0 -0
  817. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_typosquat.py +0 -0
  818. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_updatediff.py +0 -0
  819. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_util.py +0 -0
  820. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_version.py +0 -0
  821. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_version_tags.py +0 -0
  822. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_vex.py +0 -0
  823. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_visual_harness_flags.py +0 -0
  824. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_concurrency.py +0 -0
  825. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  826. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  827. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_workflow_timeouts.py +0 -0
  828. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_workflows.py +0 -0
  829. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  830. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/visual/a11y_check.mjs +0 -0
  831. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/visual/console_check.mjs +0 -0
  832. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/visual/package-lock.json +0 -0
  833. {boost_skill_cli-1.2.62 → boost_skill_cli-1.2.64}/tests/visual/package.json +0 -0
  834. {boost_skill_cli-1.2.62 → 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.62
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.62'
22
- __version_tuple__ = version_tuple = (1, 2, 62)
21
+ __version__ = version = '1.2.64'
22
+ __version_tuple__ = version_tuple = (1, 2, 64)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -15,6 +15,7 @@ are the expensive step, so an unchanged tap is never re-embedded.
15
15
  from __future__ import annotations
16
16
 
17
17
  import base64
18
+ import hashlib
18
19
  import json
19
20
  import sqlite3
20
21
  from pathlib import Path
@@ -84,6 +85,27 @@ def _connect() -> sqlite3.Connection | None:
84
85
  # and returns the same 60 rows, so the extra candidates are pure overhead.
85
86
  RESCORE_POOL = 2048
86
87
 
88
+ #: How many result entries may share one byte-identical embedding.
89
+ #:
90
+ #: Registries paste boilerplate. On a real 657,587-chunk store the largest
91
+ #: cluster of byte-identical vectors is **1,464 copies spanning 1,464 distinct
92
+ #: skills across 2 taps** — one Composio/Rube tool-calling paragraph, vendored
93
+ #: into every skill in two registries. Identical vectors score an identical
94
+ #: distance, so `retrieve`'s tie-break (the displayed name) decided the page:
95
+ #: a query landing near that paragraph returned the alphabetically-first 60 of
96
+ #: the 1,464, measured **60 of 60 slots**, and every one of them matched on
97
+ #: text its skill did not write.
98
+ #:
99
+ #: `rag.dedupe_by_content` cannot reach this. It keys on the *entry* body
100
+ #: digest, and these are 1,464 genuinely different entries — correctly kept
101
+ #: apart. The repetition is one chunk *inside* each of them, which is a
102
+ #: different axis and the one `near-duplicate-items-eat-the-result-slots`
103
+ #: leaves open.
104
+ #:
105
+ #: Not 1, because two skills can legitimately share a paragraph that really is
106
+ #: the best answer; a handful shows that without letting it own the page.
107
+ MAX_PER_VECTOR = 3
108
+
87
109
 
88
110
  def _quantizable(dim: int) -> bool:
89
111
  """Whether ``dim`` can be binary-quantized at all.
@@ -1101,8 +1123,11 @@ def quantize() -> dict | None:
1101
1123
 
1102
1124
 
1103
1125
  def _knn(con: sqlite3.Connection, qblob: bytes,
1104
- pool: int) -> list[tuple[int, float]]:
1105
- """``(chunk_id, cosine_distance)`` for the ``pool`` nearest chunks.
1126
+ pool: int) -> list[tuple[int, float, bytes]]:
1127
+ """``(chunk_id, cosine_distance, vector_key)`` for the nearest chunks.
1128
+
1129
+ ``vector_key`` identifies the *embedding*, not the row: byte-identical
1130
+ vectors share one key, which is what :data:`MAX_PER_VECTOR` caps on.
1106
1131
 
1107
1132
  Two-stage on a quantized store, one stage on a legacy one, and the answer
1108
1133
  is the same either way — which is the whole point. `vec0` has no ANN index,
@@ -1132,14 +1157,43 @@ def _knn(con: sqlite3.Connection, qblob: bytes,
1132
1157
  # Exact cosine over the candidates only. `vec_raw` is an ordinary
1133
1158
  # rowid-keyed table precisely so this `IN` is an index lookup; the same
1134
1159
  # clause against a vec0 table plans as a full scan (see _ensure_schema).
1135
- return con.execute(
1136
- "SELECT id, vec_distance_cosine(embedding, ?) AS d FROM vec_raw " # noqa: S608 interpolates only `?` placeholders
1137
- "WHERE id IN (%s) ORDER BY d LIMIT ?"
1138
- % ",".join("?" * len(cand)), (qblob, *cand, pool)).fetchall()
1139
- return con.execute(
1160
+ #
1161
+ # The embedding comes back too, and it is not waste: hashing it is what
1162
+ # lets `retrieve` tell "60 entries that each matched something" from
1163
+ # "60 copies of one paragraph". The bytes were already read to compute
1164
+ # the distance, so the only new cost is one sha256 per candidate.
1165
+ # No LIMIT, and that is the point: sqlite computes a distance for all
1166
+ # `cand` rows either way — a LIMIT only truncates what it hands back.
1167
+ # Truncating here is what let one cluster own the pool. The largest on
1168
+ # a real store is 1,464 copies of one pasted paragraph, so a 480-row
1169
+ # cut was 480 copies of it and the page had nothing else to rank.
1170
+ rows = con.execute(
1171
+ "SELECT id, vec_distance_cosine(embedding, ?) AS d, embedding " # noqa: S608 interpolates only `?` placeholders
1172
+ "FROM vec_raw WHERE id IN (%s) ORDER BY d"
1173
+ % ",".join("?" * len(cand)), (qblob, *cand)).fetchall()
1174
+ # Thin to `pool` while letting no single embedding take more than
1175
+ # MAX_PER_VECTOR of it. Rows arrive sorted, so the copies that survive
1176
+ # are the nearest ones and the slots freed go to the next *distinct*
1177
+ # vector rather than to the next copy of this one.
1178
+ out: list[tuple[int, float, bytes]] = []
1179
+ per: dict[bytes, int] = {}
1180
+ for rid, dist, blob in rows:
1181
+ if len(out) >= pool:
1182
+ break
1183
+ vkey = hashlib.sha256(blob).digest()[:16]
1184
+ if per.get(vkey, 0) >= MAX_PER_VECTOR:
1185
+ continue
1186
+ per[vkey] = per.get(vkey, 0) + 1
1187
+ out.append((rid, dist, vkey))
1188
+ return out
1189
+ # Legacy float32 layout: one row per chunk with no separate blob table, so
1190
+ # there is nothing cheap to hash. Each row becomes its own group, which
1191
+ # makes the cap a no-op — correct rather than clever, because this path
1192
+ # exists for widths `bit[N]` cannot take and no real store is on it.
1193
+ return [(rid, dist, b"%d" % rid) for rid, dist in con.execute(
1140
1194
  "SELECT rowid, distance FROM vec_chunks "
1141
1195
  "WHERE embedding MATCH ? ORDER BY distance LIMIT ?",
1142
- (qblob, pool)).fetchall()
1196
+ (qblob, pool)).fetchall()]
1143
1197
 
1144
1198
 
1145
1199
  def retrieve(query: str, k: int = 60, kind: str | None = None,
@@ -1169,14 +1223,18 @@ def retrieve(query: str, k: int = 60, kind: str | None = None,
1169
1223
  return []
1170
1224
  by_id = {r[0]: (r[1], r[2], r[3], r[4]) for r in con.execute(
1171
1225
  "SELECT id, tap, path, kind, snip FROM chunks WHERE id IN (%s)" # noqa: S608 interpolates only `?` placeholders; ids are bound params
1172
- % ",".join("?" * len(knn)), [rid for rid, _d in knn])}
1226
+ % ",".join("?" * len(knn)), [rid for rid, _d, _v in knn])}
1173
1227
  finally:
1174
1228
  con.close()
1175
1229
 
1176
1230
  entries = catalog.all_entries() if entries is None else entries
1177
1231
  live = {entry_key(e): e for e in entries}
1178
1232
  best: dict[tuple[str, str], tuple[float, str]] = {}
1179
- for rid, dist in knn:
1233
+ # Which embedding won each entry its score. An entry that also matched on
1234
+ # a chunk of its own keeps *that* pairing, because `best` only records the
1235
+ # winner — so capping below never costs an entry a hit it earned itself.
1236
+ won_by: dict[tuple[str, str], bytes] = {}
1237
+ for rid, dist, vkey in knn:
1180
1238
  meta = by_id.get(rid)
1181
1239
  if meta is None:
1182
1240
  continue
@@ -1190,11 +1248,26 @@ def retrieve(query: str, k: int = 60, kind: str | None = None,
1190
1248
  prev = best.get(key)
1191
1249
  if prev is None or score > prev[0]:
1192
1250
  best[key] = (score, snip)
1251
+ won_by[key] = vkey
1193
1252
  # Tie-break on the displayed name (see rag.retrieve for why).
1194
1253
  ranked = sorted(best.items(),
1195
1254
  key=lambda kv: (-kv[1][0], live[kv[0]]["name"], kv[0]))
1196
- hits: list[Hit] = [
1197
- {"entry": live[key], "score": score,
1198
- "snippet": snip} # type: ignore[typeddict-item]
1199
- for key, (score, snip) in ranked[:k]]
1255
+ hits: list[Hit] = []
1256
+ seen_vec: dict[bytes, int] = {}
1257
+ for key, (score, snip) in ranked:
1258
+ if len(hits) >= k:
1259
+ break
1260
+ # The cap, and the reason the sort above is not enough on its own:
1261
+ # byte-identical vectors produce a byte-identical distance, so every
1262
+ # entry sharing one arrives with the *same* score and the tie-break
1263
+ # decides the page alphabetically. Measured on a real store, one
1264
+ # 1,464-copy cluster took 60 of 60 slots that way. Skipping past the
1265
+ # cap rather than truncating keeps the page full: the freed slots go
1266
+ # to the next entries that matched on something else.
1267
+ vkey = won_by[key]
1268
+ if seen_vec.get(vkey, 0) >= MAX_PER_VECTOR:
1269
+ continue
1270
+ seen_vec[vkey] = seen_vec.get(vkey, 0) + 1
1271
+ hits.append({"entry": live[key], "score": score,
1272
+ "snippet": snip}) # type: ignore[typeddict-item]
1200
1273
  return hits
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.62
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
@@ -257,6 +257,7 @@ docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md
257
257
  docs/roadmap/items/dense-reindex-reuses-whole-taps.md
258
258
  docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md
259
259
  docs/roadmap/items/dense-search-rescans-every-vector.md
260
+ docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md
260
261
  docs/roadmap/items/dependabot-missing-pip-ecosystem.md
261
262
  docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md
262
263
  docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md
@@ -591,6 +592,7 @@ tests/eval/recommend.jsonl
591
592
  tests/eval/taps-scale.txt
592
593
  tests/eval/taps.txt
593
594
  tests/eval/tool_calls.jsonl
595
+ tests/eval/fixtures/claude_init_event.jsonl
594
596
  tests/functional/test_bmad_all_hosts.py
595
597
  tests/functional/test_capabilities_policy.py
596
598
  tests/functional/test_cli_adapt.py
@@ -688,6 +690,7 @@ tests/unit/test_crash_redaction.py
688
690
  tests/unit/test_dedup_trust.py
689
691
  tests/unit/test_demo_index.py
690
692
  tests/unit/test_dense.py
693
+ tests/unit/test_dense_boilerplate_cluster.py
691
694
  tests/unit/test_dense_embed_dedupe.py
692
695
  tests/unit/test_dense_entry_reuse.py
693
696
  tests/unit/test_dense_fallback.py
@@ -717,6 +720,7 @@ tests/unit/test_eval_grading.py
717
720
  tests/unit/test_eval_metrics.py
718
721
  tests/unit/test_eval_stats_summary.py
719
722
  tests/unit/test_eval_tools.py
723
+ tests/unit/test_eval_tools_probe.py
720
724
  tests/unit/test_failure_alerting_covers_unattended.py
721
725
  tests/unit/test_faithfulness.py
722
726
  tests/unit/test_frontmatter.py
@@ -0,0 +1,79 @@
1
+ ---
2
+ id: dense-store-holds-every-vector-once-per-copy
3
+ board: code
4
+ section: internals
5
+ status: planned
6
+ category: Search · Storage
7
+ complexity: L
8
+ impact: Med
9
+ wow: 3
10
+ note: 39.7% of vector rows are byte-identical repeats; 1.43x whole-store, no re-embedding
11
+ order: 128
12
+ owner:
13
+ pr:
14
+ title: The dense store keeps one vector per <em>copy</em>, not one per distinct text
15
+ ---
16
+ <code>_embed_and_store</code> already buys each distinct text <b>once</b> &mdash; <code>seen</code>
17
+ de-duplicates before the provider call, which is why <code>build</code>'s progress total counts
18
+ distinct texts rather than rows. The <em>storage</em> never got the same treatment: every chunk row
19
+ still gets its own <code>vec_raw</code> blob and its own <code>vec_chunks_bin</code> row, so a text
20
+ vendored into 1,464 skills is stored 1,464 times.
21
+
22
+ <b>Measured on a real store</b> (657,587 chunks, 384-d <code>BAAI/bge-small-en-v1.5</code>):
23
+ 657,587 vector rows collapse to <b>396,638 distinct</b> &mdash; 39.7% repeats, <b>1.658&times;</b>.
24
+ The earlier 750,416-chunk / 1024-d Voyage store measured 42.9%, so the ratio is a property of the
25
+ corpus rather than of one embedder.
26
+
27
+ <b>State the payoff in the right scope.</b> The <code>#544</code> note said &ldquo;~1.75&times;&rdquo;
28
+ without saying of what, and that reads as a whole-store number. It is not. From <code>dbstat</code>
29
+ on the live file: <code>vec_raw</code> 1,287.6&nbsp;MB and <code>vec_chunks_bin</code> 45.1&nbsp;MB
30
+ of a 1,634&nbsp;MB total, so vectors are <b>81.6%</b> of the file. Deduplicating them saves
31
+ <b>529&nbsp;MB</b>; add back a <code>vid</code> column, a hash index and a <code>chunks(vid)</code>
32
+ index and the honest figure is <b>1,634 &rarr; ~1,140&nbsp;MB, 1.43&times; whole-store</b>. On a
33
+ 1024-d store, where vectors are ~90% of the file, it lands nearer 1.6&times;.
34
+
35
+ <b>The key must be the embedding blob, not the text &mdash; and this is the constraint that decides
36
+ the design.</b> <code>export_shard</code> emits <code>name/tap/path/kind/cix/snip/digest/embedding</code>
37
+ and <code>snip</code> is <code>text[:200]</code>: <b>the full chunk text is not in the store and not
38
+ in the shard</b>, so <code>import_shard</code> has nothing to hash. A <code>text_hash</code> column
39
+ is unpopulatable on the import path. <code>sha256(embedding)</code> is equivalent by construction
40
+ &mdash; identical texts are embedded once and serialize to identical bytes &mdash; and it works for
41
+ imports and for the migration.
42
+
43
+ <b>No join table.</b> <code>#544</code> proposed a chunk&rarr;tap join table; <code>chunks</code>
44
+ already <em>is</em> that table and already carries <code>tap</code>. The change is one
45
+ <code>vid</code> column on <code>chunks</code>, a <code>vectors</code> relation, and
46
+ <code>vec_chunks_bin</code> keyed by <code>vid</code>.
47
+
48
+ <b>Three things break, and one of them is an ordering.</b> <code>_delete_matching</code> drops
49
+ vectors <em>then</em> rows; refcounted GC must run <em>after</em> the row delete or it counts
50
+ references about to vanish. <code>_store_vector</code>'s orphan guard stops being sufficient, because
51
+ under dedup a <code>_COMMIT_EVERY</code> interrupt makes orphans structural rather than exceptional.
52
+ And <code>export_shard</code>'s <code>v.id = c.id</code> join becomes <code>v.vid = c.vid</code>
53
+ &mdash; the same shape whose breakage the docstring already records as having killed two scheduled
54
+ <code>shards</code> runs.
55
+
56
+ <b>In place, not an <code>INDEX_VERSION</code> bump.</b> Every input is already on disk, so the
57
+ migration re-encodes rather than re-embeds &mdash; the posture <code>quantize()</code> established,
58
+ and roughly its cost (~1360&nbsp;s, ~2&times; peak while both copies coexist), except that this one
59
+ ends <em>smaller</em>. <code>dense.py</code> promises in writing that v3's re-embed is
60
+ &ldquo;the last one this mechanism needs&rdquo;; a v4 wipe would charge every user a full re-embed
61
+ to reclaim disk, which is the wrong trade even where the embedder is free.
62
+
63
+ <b>The quality half is already fixed, and this card is not blocked on it.</b>
64
+ <code>MAX_PER_VECTOR</code> thins the candidate pool and caps the page, which is what stopped one
65
+ 1,464-copy cluster taking 60 of 60 result slots. Dedup would make the pool distinct
66
+ <em>structurally</em> rather than by thinning, and would let <code>_knn</code> stop hashing 2,048
67
+ blobs per query &mdash; a simplification, not a rescue.
68
+
69
+ <b>The free bonus nobody has claimed:</b> <code>seen</code> in <code>_embed_and_store</code> is a
70
+ local rebuilt per call, so reuse is <em>per build</em>. A persisted blob-keyed table makes it
71
+ cross-build and cross-tap: a newly tapped mirror registry would cost zero embeddings.
72
+
73
+ <b>Biggest risk, named:</b> a third schema state. The store already branches float32 vs quantized
74
+ through every vector-touching function; &ldquo;deduplicated or not&rdquo; makes four combinations,
75
+ each needing mutant-killing tests. And the one invariant that catches silent corruption &mdash;
76
+ <code>test_dense_entry_reuse.py</code>'s two-way <code>chunks.id</code> &harr; <code>vec_raw.id</code>
77
+ bijection &mdash; must be <b>rewritten</b> rather than extended, because dedup breaks one direction
78
+ by design. Its replacement: every <code>chunks.vid</code> resolves, and every <code>vectors</code>
79
+ row has at least one referent.
@@ -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
@@ -133,7 +133,7 @@
133
133
  <div class="stat"><b>20</b><span>Shipped</span></div>
134
134
  <div class="stat"><b>1</b><span>Next up</span></div>
135
135
  <div class="stat"><b>7</b><span>Planned</span></div>
136
- <div class="stat"><b>290</b><span>Loop finds</span></div>
136
+ <div class="stat"><b>291</b><span>Loop finds</span></div>
137
137
  <!-- /ROADMAP:stats -->
138
138
  </div>
139
139
  </section>
@@ -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
 
@@ -4886,6 +4908,81 @@ existing table, and <code>build</code> already wipes on a version change. One fu
4886
4908
  <span class="m">one changed file re-embeds 29 min for 1.9 s of new text</span>
4887
4909
  </div>
4888
4910
  </article>
4911
+
4912
+ <article class="cap rcard" id="dense-store-holds-every-vector-once-per-copy">
4913
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Search · Storage</span></div>
4914
+ <h3>The dense store keeps one vector per <em>copy</em>, not one per distinct text</h3>
4915
+ <p><code>_embed_and_store</code> already buys each distinct text <b>once</b> &mdash; <code>seen</code>
4916
+ de-duplicates before the provider call, which is why <code>build</code>'s progress total counts
4917
+ distinct texts rather than rows. The <em>storage</em> never got the same treatment: every chunk row
4918
+ still gets its own <code>vec_raw</code> blob and its own <code>vec_chunks_bin</code> row, so a text
4919
+ vendored into 1,464 skills is stored 1,464 times.
4920
+
4921
+ <b>Measured on a real store</b> (657,587 chunks, 384-d <code>BAAI/bge-small-en-v1.5</code>):
4922
+ 657,587 vector rows collapse to <b>396,638 distinct</b> &mdash; 39.7% repeats, <b>1.658&times;</b>.
4923
+ The earlier 750,416-chunk / 1024-d Voyage store measured 42.9%, so the ratio is a property of the
4924
+ corpus rather than of one embedder.
4925
+
4926
+ <b>State the payoff in the right scope.</b> The <code>#544</code> note said &ldquo;~1.75&times;&rdquo;
4927
+ without saying of what, and that reads as a whole-store number. It is not. From <code>dbstat</code>
4928
+ on the live file: <code>vec_raw</code> 1,287.6&nbsp;MB and <code>vec_chunks_bin</code> 45.1&nbsp;MB
4929
+ of a 1,634&nbsp;MB total, so vectors are <b>81.6%</b> of the file. Deduplicating them saves
4930
+ <b>529&nbsp;MB</b>; add back a <code>vid</code> column, a hash index and a <code>chunks(vid)</code>
4931
+ index and the honest figure is <b>1,634 &rarr; ~1,140&nbsp;MB, 1.43&times; whole-store</b>. On a
4932
+ 1024-d store, where vectors are ~90% of the file, it lands nearer 1.6&times;.
4933
+
4934
+ <b>The key must be the embedding blob, not the text &mdash; and this is the constraint that decides
4935
+ the design.</b> <code>export_shard</code> emits <code>name/tap/path/kind/cix/snip/digest/embedding</code>
4936
+ and <code>snip</code> is <code>text[:200]</code>: <b>the full chunk text is not in the store and not
4937
+ in the shard</b>, so <code>import_shard</code> has nothing to hash. A <code>text_hash</code> column
4938
+ is unpopulatable on the import path. <code>sha256(embedding)</code> is equivalent by construction
4939
+ &mdash; identical texts are embedded once and serialize to identical bytes &mdash; and it works for
4940
+ imports and for the migration.
4941
+
4942
+ <b>No join table.</b> <code>#544</code> proposed a chunk&rarr;tap join table; <code>chunks</code>
4943
+ already <em>is</em> that table and already carries <code>tap</code>. The change is one
4944
+ <code>vid</code> column on <code>chunks</code>, a <code>vectors</code> relation, and
4945
+ <code>vec_chunks_bin</code> keyed by <code>vid</code>.
4946
+
4947
+ <b>Three things break, and one of them is an ordering.</b> <code>_delete_matching</code> drops
4948
+ vectors <em>then</em> rows; refcounted GC must run <em>after</em> the row delete or it counts
4949
+ references about to vanish. <code>_store_vector</code>'s orphan guard stops being sufficient, because
4950
+ under dedup a <code>_COMMIT_EVERY</code> interrupt makes orphans structural rather than exceptional.
4951
+ And <code>export_shard</code>'s <code>v.id = c.id</code> join becomes <code>v.vid = c.vid</code>
4952
+ &mdash; the same shape whose breakage the docstring already records as having killed two scheduled
4953
+ <code>shards</code> runs.
4954
+
4955
+ <b>In place, not an <code>INDEX_VERSION</code> bump.</b> Every input is already on disk, so the
4956
+ migration re-encodes rather than re-embeds &mdash; the posture <code>quantize()</code> established,
4957
+ and roughly its cost (~1360&nbsp;s, ~2&times; peak while both copies coexist), except that this one
4958
+ ends <em>smaller</em>. <code>dense.py</code> promises in writing that v3's re-embed is
4959
+ &ldquo;the last one this mechanism needs&rdquo;; a v4 wipe would charge every user a full re-embed
4960
+ to reclaim disk, which is the wrong trade even where the embedder is free.
4961
+
4962
+ <b>The quality half is already fixed, and this card is not blocked on it.</b>
4963
+ <code>MAX_PER_VECTOR</code> thins the candidate pool and caps the page, which is what stopped one
4964
+ 1,464-copy cluster taking 60 of 60 result slots. Dedup would make the pool distinct
4965
+ <em>structurally</em> rather than by thinning, and would let <code>_knn</code> stop hashing 2,048
4966
+ blobs per query &mdash; a simplification, not a rescue.
4967
+
4968
+ <b>The free bonus nobody has claimed:</b> <code>seen</code> in <code>_embed_and_store</code> is a
4969
+ local rebuilt per call, so reuse is <em>per build</em>. A persisted blob-keyed table makes it
4970
+ cross-build and cross-tap: a newly tapped mirror registry would cost zero embeddings.
4971
+
4972
+ <b>Biggest risk, named:</b> a third schema state. The store already branches float32 vs quantized
4973
+ through every vector-touching function; &ldquo;deduplicated or not&rdquo; makes four combinations,
4974
+ each needing mutant-killing tests. And the one invariant that catches silent corruption &mdash;
4975
+ <code>test_dense_entry_reuse.py</code>'s two-way <code>chunks.id</code> &harr; <code>vec_raw.id</code>
4976
+ bijection &mdash; must be <b>rewritten</b> rather than extended, because dedup breaks one direction
4977
+ by design. Its replacement: every <code>chunks.vid</code> resolves, and every <code>vectors</code>
4978
+ row has at least one referent.</p>
4979
+ <div class="meta">
4980
+ <span class="m">Complexity <b>L</b></span>
4981
+ <span class="m">Impact <b>Med</b></span>
4982
+ <span class="m">Wow <b class="wow">★★★</b></span>
4983
+ <span class="m">39.7% of vector rows are byte-identical repeats; 1.43x whole-store, no re-embedding</span>
4984
+ </div>
4985
+ </article>
4889
4986
  <!-- /ROADMAP:cards -->
4890
4987
 
4891
4988
  </div>