boost-skill-cli 1.2.149__tar.gz → 1.2.151__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 (1114) hide show
  1. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/dense.py +84 -12
  4. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  5. boost_skill_cli-1.2.151/docs/demo.gif +0 -0
  6. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +5 -3
  7. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap.html +14 -37
  8. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/semantic-search.md +18 -4
  9. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_fix_hint.py +159 -6
  10. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_status.py +27 -0
  11. boost_skill_cli-1.2.149/docs/demo.gif +0 -0
  12. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.gitattributes +0 -0
  13. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.gitignore +0 -0
  14. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.gitleaks.toml +0 -0
  15. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.htmlvalidate.json +0 -0
  16. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.lighthouserc.json +0 -0
  17. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.lycheeignore +0 -0
  18. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.markdownlint-cli2.jsonc +0 -0
  19. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.pre-commit-config.yaml +0 -0
  20. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.stylelintrc.json +0 -0
  21. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.vale/styles/boost/AIWriting.yml +0 -0
  22. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.vale/styles/boost/Terminology.yml +0 -0
  23. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  24. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/.vale.ini +0 -0
  25. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/CLAUDE.md +0 -0
  26. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/CODE_OF_CONDUCT.md +0 -0
  27. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/CONTRIBUTING.md +0 -0
  28. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/DCO +0 -0
  29. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/GOVERNANCE.md +0 -0
  30. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/LICENSE +0 -0
  31. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/MAINTAINERS.md +0 -0
  32. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/MANIFEST.in +0 -0
  33. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/Makefile +0 -0
  34. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/README.md +0 -0
  35. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/SECURITY.md +0 -0
  36. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/SUPPORT.md +0 -0
  37. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost +0 -0
  38. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/__init__.py +0 -0
  39. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/__main__.py +0 -0
  40. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/cli.py +0 -0
  41. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/cliparse.py +0 -0
  42. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/__init__.py +0 -0
  43. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/_common.py +0 -0
  44. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/bmad.py +0 -0
  45. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/configuration.py +0 -0
  46. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/discovery.py +0 -0
  47. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/hooks.py +0 -0
  48. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/info.py +0 -0
  49. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/intelligence.py +0 -0
  50. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/pkg.py +0 -0
  51. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/quality.py +0 -0
  52. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/quickstart.py +0 -0
  53. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/run.py +0 -0
  54. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/safety.py +0 -0
  55. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/taps.py +0 -0
  56. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/commands/team.py +0 -0
  57. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/__init__.py +0 -0
  58. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/adapters.py +0 -0
  59. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/agents.py +0 -0
  60. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/ai.py +0 -0
  61. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/aihost.py +0 -0
  62. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/archive.py +0 -0
  63. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/bmad.py +0 -0
  64. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/bootstrap.py +0 -0
  65. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/browse.py +0 -0
  66. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/builtin.py +0 -0
  67. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/capabilities.py +0 -0
  68. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/catalog.py +0 -0
  69. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/catalogbundle.py +0 -0
  70. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/chat.py +0 -0
  71. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/claude_settings.py +0 -0
  72. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/cohort.py +0 -0
  73. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/compact.py +0 -0
  74. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/complete.py +0 -0
  75. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/config.py +0 -0
  76. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/deps.py +0 -0
  77. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/discovery.py +0 -0
  78. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/ed25519.py +0 -0
  79. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/embed.py +0 -0
  80. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/faithfulness.py +0 -0
  81. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/frontmatter.py +0 -0
  82. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/gitutil.py +0 -0
  83. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/hookhost.py +0 -0
  84. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/imperative.py +0 -0
  85. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/injectscan.py +0 -0
  86. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/installscan.py +0 -0
  87. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/integrity.py +0 -0
  88. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/journal.py +0 -0
  89. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/jsonstate.py +0 -0
  90. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/localembed.py +0 -0
  91. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/lockfile.py +0 -0
  92. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/logs.py +0 -0
  93. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/mcp.py +0 -0
  94. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/mcpdecl.py +0 -0
  95. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/mcphost.py +0 -0
  96. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/minisign.py +0 -0
  97. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/nethttp.py +0 -0
  98. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/output.py +0 -0
  99. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/paths.py +0 -0
  100. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/policy.py +0 -0
  101. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/prereq.py +0 -0
  102. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/projectlock.py +0 -0
  103. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/provenance.py +0 -0
  104. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/rag.py +0 -0
  105. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/registry.py +0 -0
  106. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/report.py +0 -0
  107. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/resolve.py +0 -0
  108. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/rules.py +0 -0
  109. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/scopes.py +0 -0
  110. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/secretscan.py +0 -0
  111. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/selfupdate.py +0 -0
  112. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/serve.py +0 -0
  113. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/shards.py +0 -0
  114. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/stackprobe.py +0 -0
  115. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/staleness.py +0 -0
  116. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/store.py +0 -0
  117. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/trustaudit.py +0 -0
  118. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/typedvalue.py +0 -0
  119. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/typosquat.py +0 -0
  120. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/updatediff.py +0 -0
  121. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/util.py +0 -0
  122. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/core/workflows.py +0 -0
  123. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/data/registries.json +0 -0
  124. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/data/rules/boost-first.mdc +0 -0
  125. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/errors.py +0 -0
  126. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_cli/spin.py +0 -0
  127. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/__init__.py +0 -0
  128. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/_compat.py +0 -0
  129. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/graph.py +0 -0
  130. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/loader.py +0 -0
  131. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/py.typed +0 -0
  132. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_langchain/retriever.py +0 -0
  133. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  134. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  135. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  136. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/requires.txt +0 -0
  137. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/boost_skill_cli.egg-info/top_level.txt +0 -0
  138. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/codecov.yml +0 -0
  139. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/DEBUGGING.md +0 -0
  140. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/adapters.html +0 -0
  141. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/architecture/README.md +0 -0
  142. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/architecture/c4-components-core.md +0 -0
  143. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/architecture/c4-containers.md +0 -0
  144. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/architecture/c4-context.md +0 -0
  145. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/architecture/c4-dynamic-install.md +0 -0
  146. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/bmad.md +0 -0
  147. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/distill.gif +0 -0
  148. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/doctor.gif +0 -0
  149. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/explain.gif +0 -0
  150. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/hooks.gif +0 -0
  151. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/install.gif +0 -0
  152. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/pulse.gif +0 -0
  153. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/search.gif +0 -0
  154. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/gifs/tap.gif +0 -0
  155. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/distill.tape +0 -0
  156. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/doctor.tape +0 -0
  157. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/explain.tape +0 -0
  158. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/hooks.tape +0 -0
  159. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/install.tape +0 -0
  160. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/pulse.tape +0 -0
  161. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/search.tape +0 -0
  162. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel/tapes/tap.tape +0 -0
  163. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/carousel.html +0 -0
  164. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/chat.html +0 -0
  165. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/code-review.md +0 -0
  166. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/commands.html +0 -0
  167. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/commit-audit.md +0 -0
  168. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/demo-index.json +0 -0
  169. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/demo.html +0 -0
  170. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/demo.tape +0 -0
  171. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/dependencies.md +0 -0
  172. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/design-roadmap.html +0 -0
  173. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/eval-latest.json +0 -0
  174. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/eval.html +0 -0
  175. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/index.html +0 -0
  176. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/langchain.html +0 -0
  177. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/mcp-hub.html +0 -0
  178. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/openssf-badge.md +0 -0
  179. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/openssf-playbook.md +0 -0
  180. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/rag-architecture.md +0 -0
  181. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D01.md +0 -0
  182. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D02.md +0 -0
  183. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D03.md +0 -0
  184. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D04.md +0 -0
  185. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D05.md +0 -0
  186. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D06.md +0 -0
  187. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D07.md +0 -0
  188. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D08.md +0 -0
  189. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D09.md +0 -0
  190. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D10.md +0 -0
  191. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D11.md +0 -0
  192. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D12.md +0 -0
  193. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D13.md +0 -0
  194. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D14.md +0 -0
  195. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D15.md +0 -0
  196. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D16.md +0 -0
  197. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D17.md +0 -0
  198. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D18.md +0 -0
  199. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D19.md +0 -0
  200. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D20.md +0 -0
  201. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D21.md +0 -0
  202. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D22.md +0 -0
  203. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D23.md +0 -0
  204. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D24.md +0 -0
  205. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D25.md +0 -0
  206. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D26.md +0 -0
  207. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/BOOST-D27.md +0 -0
  208. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  209. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  210. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  211. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  212. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  213. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  214. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  215. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  216. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  217. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  218. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  219. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  220. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  221. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  222. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  223. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  224. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  225. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  226. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  227. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-attest-findings.md +0 -0
  228. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-audit-findings.md +0 -0
  229. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  230. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-browse-findings.md +0 -0
  231. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  232. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  233. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  234. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  235. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-chat-findings.md +0 -0
  236. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  237. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  238. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  239. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-completions-findings.md +0 -0
  240. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-config-findings.md +0 -0
  241. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  242. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-context-findings.md +0 -0
  243. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  244. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  245. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-create-findings.md +0 -0
  246. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  247. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-deps-findings.md +0 -0
  248. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-discover-findings.md +0 -0
  249. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  250. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  251. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-drift-findings.md +0 -0
  252. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  253. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-edit-findings.md +0 -0
  254. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  255. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-explain-findings.md +0 -0
  256. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-export-findings.md +0 -0
  257. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  258. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  259. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  260. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  261. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  262. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-health-findings.md +0 -0
  263. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  264. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  265. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-import-findings.md +0 -0
  266. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-index-findings.md +0 -0
  267. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  268. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  269. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-install-findings.md +0 -0
  270. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  271. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  272. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-lint-findings.md +0 -0
  273. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-log-findings.md +0 -0
  274. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  275. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  276. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  277. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  278. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  279. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  280. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  281. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  282. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  283. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  284. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  285. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-policy-findings.md +0 -0
  286. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-preview-findings.md +0 -0
  287. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-profile-findings.md +0 -0
  288. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  289. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  290. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  291. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  292. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  293. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  294. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  295. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  296. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  297. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-replay-findings.md +0 -0
  298. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-root-findings.md +0 -0
  299. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  300. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-run-findings.md +0 -0
  301. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  302. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-search-findings.md +0 -0
  303. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  304. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  305. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  306. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  307. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  308. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  309. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  310. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  311. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-sync-findings.md +0 -0
  312. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-tag-findings.md +0 -0
  313. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  314. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-tap-findings.md +0 -0
  315. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-taps-findings.md +0 -0
  316. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  317. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-test-findings.md +0 -0
  318. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-trust-findings.md +0 -0
  319. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  320. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  321. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-untap-findings.md +0 -0
  322. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-update-findings.md +0 -0
  323. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  324. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-verify-findings.md +0 -0
  325. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/audit-who-findings.md +0 -0
  326. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  327. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  328. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  329. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  330. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  331. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  332. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  333. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  334. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  335. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  336. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  337. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  338. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  339. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  340. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  341. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  342. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/boost-first-rule.md +0 -0
  343. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  344. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  345. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/branch-current-gate.md +0 -0
  346. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  347. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  348. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  349. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  350. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  351. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  352. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  353. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  354. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  355. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  356. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  357. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  358. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  359. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  360. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  361. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  362. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  363. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  364. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  365. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  366. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cli-command-audit.md +0 -0
  367. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  368. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  369. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  370. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  371. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  372. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  373. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/command-carousel-page.md +0 -0
  374. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  375. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  376. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  377. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  378. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  379. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  380. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  381. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  382. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  383. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  384. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  385. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  386. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  387. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  388. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  389. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  390. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  391. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  392. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  393. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  394. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  395. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  396. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  397. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  398. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  399. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  400. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  401. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  402. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  403. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  404. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  405. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  406. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  407. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  408. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  409. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  410. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  411. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  412. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  413. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  414. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  415. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  416. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  417. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  418. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  419. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  420. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  421. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  422. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  423. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  424. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  425. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  426. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  427. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  428. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  429. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  430. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  431. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  432. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  433. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  434. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  435. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  436. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  437. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  438. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  439. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  440. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  441. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  442. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  443. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  444. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  445. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  446. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  447. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  448. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  449. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/github-community-health-files.md +0 -0
  450. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  451. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  452. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  453. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  454. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  455. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  456. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  457. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  458. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  459. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  460. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  461. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  462. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  463. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  464. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  465. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  466. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  467. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  468. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  469. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  470. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  471. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  472. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  473. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  474. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  475. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  476. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  477. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  478. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  479. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  480. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  481. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  482. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  483. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  484. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  485. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  486. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  487. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  488. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  489. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  490. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  491. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  492. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  493. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  494. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  495. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  496. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  497. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  498. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  499. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  500. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  501. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  502. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  503. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  504. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  505. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  506. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  507. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  508. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  509. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  510. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  511. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  512. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  513. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  514. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  515. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  516. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  517. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  518. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  519. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  520. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  521. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  522. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  523. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  524. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  525. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  526. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  527. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  528. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  529. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  530. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  531. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  532. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  533. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  534. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  535. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  536. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  537. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  538. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  539. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  540. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  541. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  542. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  543. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  544. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  545. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  546. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  547. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  548. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  549. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  550. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/openssf-playbook.md +0 -0
  551. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/openssf-silver.md +0 -0
  552. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  553. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  554. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  555. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  556. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  557. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  558. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  559. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  560. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  561. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  562. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  563. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  564. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  565. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  566. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  567. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  568. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  569. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  570. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  571. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  572. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  573. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  574. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  575. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  576. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  577. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  578. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  579. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  580. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  581. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  582. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  583. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  584. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  585. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  586. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  587. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  588. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  589. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  590. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  591. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  592. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  593. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  594. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  595. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  596. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  597. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  598. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  599. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/relicence-apache-2.md +0 -0
  600. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  601. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  602. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  603. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  604. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  605. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  606. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  607. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  608. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  609. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  610. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  611. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  612. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  613. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  614. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  615. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  616. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  617. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  618. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  619. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  620. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  621. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  622. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  623. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  624. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  625. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  626. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  627. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  628. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  629. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  630. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  631. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  632. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  633. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  634. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  635. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  636. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  637. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  638. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  639. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  640. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  641. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  642. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  643. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  644. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  645. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  646. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  647. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  648. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  649. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  650. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  651. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  652. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  653. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  654. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  655. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  656. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  657. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  658. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  659. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  660. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  661. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  662. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  663. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  664. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  665. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  666. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  667. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  668. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  669. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  670. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  671. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  672. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  673. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  674. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  675. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  676. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  677. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  678. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  679. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  680. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  681. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  682. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  683. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  684. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  685. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  686. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  687. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  688. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  689. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  690. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  691. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  692. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  693. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  694. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  695. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  696. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  697. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  698. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  699. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  700. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  701. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  702. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  703. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  704. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  705. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  706. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  707. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  708. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/workspace-scope-install.md +0 -0
  709. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/zip-strict-audit.md +0 -0
  710. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  711. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  712. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/security-design.md +0 -0
  713. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  714. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/verifying-releases.md +0 -0
  715. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/meta.md +0 -0
  716. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/openvex.json +0 -0
  717. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  718. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  719. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  720. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  721. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/eslint.config.mjs +0 -0
  722. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/README.md +0 -0
  723. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/__init__.py +0 -0
  724. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/baseline.json +0 -0
  725. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/faithfulness.py +0 -0
  726. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/golden_set.json +0 -0
  727. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/make_corpus.py +0 -0
  728. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/make_golden.py +0 -0
  729. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/metrics.py +0 -0
  730. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/publish_golden_dataset.py +0 -0
  731. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/evals/run_evals.py +0 -0
  732. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/examples/README.md +0 -0
  733. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/examples/adapt-demo.sh +0 -0
  734. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/examples/boost-run-prototype.sh +0 -0
  735. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/index.html +0 -0
  736. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/noxfile.py +0 -0
  737. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/pyproject.toml +0 -0
  738. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/coverage-tools.in +0 -0
  739. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/coverage-tools.txt +0 -0
  740. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/lint-tools.in +0 -0
  741. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/lint-tools.txt +0 -0
  742. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/mutation-tools.in +0 -0
  743. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/mutation-tools.txt +0 -0
  744. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/platform-pins.lock +0 -0
  745. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/release-tools.in +0 -0
  746. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/release-tools.txt +0 -0
  747. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/test-tools.in +0 -0
  748. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/requirements/test-tools.txt +0 -0
  749. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/a11y_check.py +0 -0
  750. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/add_spdx_headers.py +0 -0
  751. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/bench_cli.sh +0 -0
  752. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_command_reference.py +0 -0
  753. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_demo_index.py +0 -0
  754. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_registries.py +0 -0
  755. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_roadmap.py +0 -0
  756. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_scale_corpus.py +0 -0
  757. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/build_vex.py +0 -0
  758. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_anchors.py +0 -0
  759. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_branch_current.py +0 -0
  760. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_dco.py +0 -0
  761. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_licenses.py +0 -0
  762. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_reproducible.py +0 -0
  763. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/check_required_checks.py +0 -0
  764. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/ensure_eval_corpus.sh +0 -0
  765. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_corpus.py +0 -0
  766. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_explain.py +0 -0
  767. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_gate.py +0 -0
  768. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_recommend.py +0 -0
  769. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_retrieval.py +0 -0
  770. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_stats_summary.py +0 -0
  771. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/eval_tools.py +0 -0
  772. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/import_budget.py +0 -0
  773. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/lock_toolchain.py +0 -0
  774. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/measure_near_duplicate_bound.py +0 -0
  775. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/measure_registry.py +0 -0
  776. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/mutation_gate.py +0 -0
  777. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/mutation_shards.py +0 -0
  778. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/mutation_weights.json +0 -0
  779. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/normalize_sdist.py +0 -0
  780. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/page_budget.py +0 -0
  781. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/perf_gate.py +0 -0
  782. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/post_deploy_smoke.py +0 -0
  783. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/publish_eval_json.py +0 -0
  784. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/publish_shards.py +0 -0
  785. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/release_guard.py +0 -0
  786. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/release_preflight.py +0 -0
  787. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/serve_docs.py +0 -0
  788. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/scripts/shard_plan.py +0 -0
  789. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/setup.cfg +0 -0
  790. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/sonar-project.properties +0 -0
  791. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/style/README.md +0 -0
  792. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/style/boost.css +0 -0
  793. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/style/boost.js +0 -0
  794. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/style/demo.html +0 -0
  795. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/adapt.feature +0 -0
  796. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/browse.feature +0 -0
  797. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/count.feature +0 -0
  798. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/discover.feature +0 -0
  799. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/doctor.feature +0 -0
  800. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/environment.py +0 -0
  801. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/explain.feature +0 -0
  802. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/index.feature +0 -0
  803. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/install.feature +0 -0
  804. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/list.feature +0 -0
  805. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/mcp.feature +0 -0
  806. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/search.feature +0 -0
  807. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/steps/cli_steps.py +0 -0
  808. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/steps/discovery_steps.py +0 -0
  809. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/steps/mcp_steps.py +0 -0
  810. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/bdd/features/steps/quality_steps.py +0 -0
  811. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/conftest.py +0 -0
  812. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/baseline.json +0 -0
  813. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/explain.jsonl +0 -0
  814. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  815. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/golden-natural.jsonl +0 -0
  816. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/golden.jsonl +0 -0
  817. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/recommend.jsonl +0 -0
  818. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/taps-scale.txt +0 -0
  819. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/taps.txt +0 -0
  820. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/eval/tool_calls.jsonl +0 -0
  821. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  822. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_bmad_all_hosts.py +0 -0
  823. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_bmad_personas_scope.py +0 -0
  824. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_capabilities_policy.py +0 -0
  825. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_adapt.py +0 -0
  826. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_bmad.py +0 -0
  827. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_catalog.py +0 -0
  828. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_chat.py +0 -0
  829. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_configuration.py +0 -0
  830. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_discovery.py +0 -0
  831. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_hooks.py +0 -0
  832. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_hooks_codex.py +0 -0
  833. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_hooks_gemini.py +0 -0
  834. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_identifier_columns.py +0 -0
  835. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_info.py +0 -0
  836. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_intelligence.py +0 -0
  837. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_json_reports.py +0 -0
  838. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_pane_width.py +0 -0
  839. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_pkg.py +0 -0
  840. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_quality.py +0 -0
  841. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_quickstart.py +0 -0
  842. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_tap_pins.py +0 -0
  843. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_taps.py +0 -0
  844. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_cli_team.py +0 -0
  845. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  846. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  847. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_everyday_loop.py +0 -0
  848. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_integrity_enforce.py +0 -0
  849. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_keyed_no_store_hint.py +0 -0
  850. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_kind_conformance.py +0 -0
  851. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_property_parsers.py +0 -0
  852. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_recommend_because_is_true.py +0 -0
  853. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  854. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_reports_match_reality.py +0 -0
  855. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_run.py +0 -0
  856. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_tap_signing.py +0 -0
  857. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/functional/test_workspace_scope.py +0 -0
  858. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/README.md +0 -0
  859. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  860. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  861. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  862. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  863. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  864. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  865. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  866. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  867. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  868. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  869. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  870. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  871. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  872. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  873. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  874. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  875. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  876. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  877. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  878. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  879. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  880. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  881. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  882. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/fuzz_frontmatter.py +0 -0
  883. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/fuzz/fuzz_registry.py +0 -0
  884. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/langchain/conftest.py +0 -0
  885. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/langchain/test_graph.py +0 -0
  886. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/langchain/test_loader.py +0 -0
  887. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/langchain/test_retriever.py +0 -0
  888. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/make_fixture.py +0 -0
  889. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/perf/test_benchmarks.py +0 -0
  890. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/smoke.sh +0 -0
  891. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  892. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_a11y_check.py +0 -0
  893. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_action_pin_lockstep.py +0 -0
  894. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_adapters.py +0 -0
  895. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_adapters_multi.py +0 -0
  896. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_adapters_runner.py +0 -0
  897. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_agents.py +0 -0
  898. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_ai.py +0 -0
  899. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_aihost.py +0 -0
  900. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_archive.py +0 -0
  901. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_bmad_core.py +0 -0
  902. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_boost_first_offer.py +0 -0
  903. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_bootstrap.py +0 -0
  904. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_bot_pr_dco.py +0 -0
  905. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_branch_current.py +0 -0
  906. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_browse.py +0 -0
  907. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_builtin.py +0 -0
  908. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_canary_deps.py +0 -0
  909. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_capabilities.py +0 -0
  910. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_catalog.py +0 -0
  911. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_catalog_keyword_words.py +0 -0
  912. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_catalogbundle.py +0 -0
  913. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_chat.py +0 -0
  914. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_check_anchors.py +0 -0
  915. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_check_dco.py +0 -0
  916. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_check_licenses.py +0 -0
  917. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_check_reproducible.py +0 -0
  918. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_claude_settings.py +0 -0
  919. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_claude_settings_codex.py +0 -0
  920. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_clean_internal_cache.py +0 -0
  921. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_cli_update_shards.py +0 -0
  922. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_cliparse.py +0 -0
  923. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_codeql_analysis_key.py +0 -0
  924. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_cohort.py +0 -0
  925. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_command_reference_fresh.py +0 -0
  926. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_community_health_files.py +0 -0
  927. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_compact.py +0 -0
  928. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_complete.py +0 -0
  929. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_complete_rc_block.py +0 -0
  930. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_config.py +0 -0
  931. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_content_dedupe.py +0 -0
  932. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_content_identity.py +0 -0
  933. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_corpus_prose.py +0 -0
  934. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  935. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_coverage_gate_prose.py +0 -0
  936. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_crash_redaction.py +0 -0
  937. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dedup_trust.py +0 -0
  938. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_demo_index.py +0 -0
  939. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense.py +0 -0
  940. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  941. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_embed_dedupe.py +0 -0
  942. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_entry_reuse.py +0 -0
  943. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_entry_vectors.py +0 -0
  944. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_fallback.py +0 -0
  945. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_model_unavailable.py +0 -0
  946. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_progress.py +0 -0
  947. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_quantized.py +0 -0
  948. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_ready_order.py +0 -0
  949. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_shard_real_schema.py +0 -0
  950. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  951. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_shards.py +0 -0
  952. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_status_cheap.py +0 -0
  953. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dense_vector_dedupe.py +0 -0
  954. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dependabot_config.py +0 -0
  955. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_deps.py +0 -0
  956. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_discovery.py +0 -0
  957. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_distill_merge.py +0 -0
  958. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_docs_pages_linked.py +0 -0
  959. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_docsite_chrome.py +0 -0
  960. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_doctor_output_polish.py +0 -0
  961. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_drift_hint.py +0 -0
  962. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_dry_run_parity.py +0 -0
  963. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_ed25519.py +0 -0
  964. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_embed.py +0 -0
  965. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_embed_local.py +0 -0
  966. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_embed_outranking.py +0 -0
  967. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_embed_truncated_response.py +0 -0
  968. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_entry_key.py +0 -0
  969. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_errors_and_cli_table.py +0 -0
  970. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_baseline.py +0 -0
  971. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_corpus.py +0 -0
  972. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_corpus_bodies.py +0 -0
  973. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_faithfulness.py +0 -0
  974. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_gate.py +0 -0
  975. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_grading.py +0 -0
  976. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_metrics.py +0 -0
  977. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_query_sets.py +0 -0
  978. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_stats_summary.py +0 -0
  979. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_tools.py +0 -0
  980. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_eval_tools_probe.py +0 -0
  981. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  982. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_faithfulness.py +0 -0
  983. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_first_run_pointer.py +0 -0
  984. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_frontmatter.py +0 -0
  985. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_fuzz_targets.py +0 -0
  986. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  987. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gitleaks_config.py +0 -0
  988. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gitutil.py +0 -0
  989. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gitutil_lfs.py +0 -0
  990. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gitutil_sparse.py +0 -0
  991. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_gstack_coexistence.py +0 -0
  992. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_help_contracts.py +0 -0
  993. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_hook_settings_hosts.py +0 -0
  994. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_hookhost.py +0 -0
  995. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_hookhost_codex.py +0 -0
  996. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_imperative.py +0 -0
  997. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_import_budget.py +0 -0
  998. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_injectscan.py +0 -0
  999. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_install_permission_error.py +0 -0
  1000. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_installscan.py +0 -0
  1001. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_integrity.py +0 -0
  1002. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_journal.py +0 -0
  1003. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_jsonstate.py +0 -0
  1004. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_langchain_packaging.py +0 -0
  1005. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_launcher_python_floor.py +0 -0
  1006. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_lighthouse_budgets.py +0 -0
  1007. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_link_ownership.py +0 -0
  1008. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_localembed.py +0 -0
  1009. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_localembed_e2e.py +0 -0
  1010. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_lockfile.py +0 -0
  1011. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_logs.py +0 -0
  1012. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_marketing_counts.py +0 -0
  1013. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcp.py +0 -0
  1014. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1015. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcp_install_scan.py +0 -0
  1016. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcp_read.py +0 -0
  1017. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcpdecl.py +0 -0
  1018. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mcphost.py +0 -0
  1019. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_measure_registry.py +0 -0
  1020. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_minisign.py +0 -0
  1021. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mutation_hardening.py +0 -0
  1022. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mutation_shards.py +0 -0
  1023. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mutation_subfile_shards.py +0 -0
  1024. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_mutmut_source_paths.py +0 -0
  1025. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1026. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_nethttp.py +0 -0
  1027. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_normalize_sdist.py +0 -0
  1028. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_output.py +0 -0
  1029. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_output_table_drop.py +0 -0
  1030. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_output_table_whole.py +0 -0
  1031. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_page_budget.py +0 -0
  1032. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_paths.py +0 -0
  1033. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_perf_gate.py +0 -0
  1034. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_pkg_confusions.py +0 -0
  1035. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_pkg_injection.py +0 -0
  1036. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_pkg_secrets.py +0 -0
  1037. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_platform_pins.py +0 -0
  1038. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_policy.py +0 -0
  1039. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_post_deploy_smoke.py +0 -0
  1040. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_prereq.py +0 -0
  1041. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1042. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_projectlock.py +0 -0
  1043. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_provenance.py +0 -0
  1044. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_publish_golden_dataset.py +0 -0
  1045. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_quickstart_readiness.py +0 -0
  1046. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rag.py +0 -0
  1047. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rag_completeness.py +0 -0
  1048. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rag_extra_hint.py +0 -0
  1049. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rag_fastpath.py +0 -0
  1050. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rag_fusion.py +0 -0
  1051. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_read_text_arg.py +0 -0
  1052. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_registries_fresh.py +0 -0
  1053. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_registry.py +0 -0
  1054. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_registry_categories.py +0 -0
  1055. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_registry_control_chars.py +0 -0
  1056. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_registry_parallel.py +0 -0
  1057. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_release_guard.py +0 -0
  1058. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_release_preflight.py +0 -0
  1059. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_repo_root_guard.py +0 -0
  1060. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_report.py +0 -0
  1061. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_required_checks.py +0 -0
  1062. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rerank_cache.py +0 -0
  1063. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_resolve.py +0 -0
  1064. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1065. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_roadmap_fresh.py +0 -0
  1066. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_rules.py +0 -0
  1067. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1068. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_scale_corpus.py +0 -0
  1069. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_schedule_plist.py +0 -0
  1070. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_scopes.py +0 -0
  1071. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_sdist_contents.py +0 -0
  1072. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_secretscan.py +0 -0
  1073. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_selfupdate.py +0 -0
  1074. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_serve.py +0 -0
  1075. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_serve_docs.py +0 -0
  1076. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shard_plan.py +0 -0
  1077. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shards.py +0 -0
  1078. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shards_carry_forward.py +0 -0
  1079. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shards_incremental.py +0 -0
  1080. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shards_ingest.py +0 -0
  1081. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_shards_matrix.py +0 -0
  1082. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1083. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_spdx_headers.py +0 -0
  1084. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_spin.py +0 -0
  1085. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_stackprobe.py +0 -0
  1086. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_staleness.py +0 -0
  1087. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_store.py +0 -0
  1088. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_store_materialize.py +0 -0
  1089. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_sync_blocked_links.py +0 -0
  1090. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_sync_lost_lock.py +0 -0
  1091. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1092. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_tap_pins.py +0 -0
  1093. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_token_parity.py +0 -0
  1094. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_toolchain_lock.py +0 -0
  1095. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_trustaudit.py +0 -0
  1096. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_typedvalue.py +0 -0
  1097. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_typosquat.py +0 -0
  1098. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_updatediff.py +0 -0
  1099. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_upstream_path.py +0 -0
  1100. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_util.py +0 -0
  1101. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_version.py +0 -0
  1102. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_version_tags.py +0 -0
  1103. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_vex.py +0 -0
  1104. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_visual_harness_capture.py +0 -0
  1105. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_visual_harness_flags.py +0 -0
  1106. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_workflow_concurrency.py +0 -0
  1107. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1108. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1109. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_workflow_timeouts.py +0 -0
  1110. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_workflows.py +0 -0
  1111. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1112. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/visual/a11y_check.mjs +0 -0
  1113. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/visual/console_check.mjs +0 -0
  1114. {boost_skill_cli-1.2.149 → boost_skill_cli-1.2.151}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.149
3
+ Version: 1.2.151
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.149'
22
- __version_tuple__ = version_tuple = (1, 2, 149)
21
+ __version__ = version = '1.2.151'
22
+ __version_tuple__ = version_tuple = (1, 2, 151)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -568,10 +568,12 @@ _FIX = {
568
568
  # instead: with it in force, this build goes through the paid API.
569
569
  "no-store": "build it: `boost reindex --dense`",
570
570
  "version-changed": "rebuild it: `boost reindex --dense --force`",
571
- # Only right when the live space is the one the user wants. A store built
572
- # through a paid provider that has merely lost its key lands here too, and
573
- # for that user this row is the bill `no-key`'s guard exists to prevent —
574
- # so `fix_hint` answers it from the status dict before reaching this table.
571
+ # Only right when the live space is the one the user wants. Two kinds of
572
+ # store land here without wanting it: one built through a paid provider
573
+ # that has merely lost its key, and one the local model built on a machine
574
+ # that has since exported a key. For both this row is the bill the guards
575
+ # in `fix_hint` exist to prevent, so it answers from the status dict —
576
+ # `_restore_built_space` and `_restore_local_space` — before reaching here.
575
577
  "provider-changed": "rebuild it: `boost reindex --dense --force`",
576
578
  "model-changed": "rebuild it: `boost reindex --dense --force`",
577
579
  "dim-changed": "rebuild it: `boost reindex --dense --force`",
@@ -664,6 +666,49 @@ def _restore_built_space(built: str, env: str) -> str | None:
664
666
  return None
665
667
 
666
668
 
669
+ def _restore_local_space() -> str | None:
670
+ """How to put the *local* model back in front of a key, or None.
671
+
672
+ The mirror of :func:`_restore_built_space`, and the expensive direction.
673
+ A store the local model built is displaced by exactly the mechanism that
674
+ displaces a keyed one — a provider `embed.provider` prefers appears on the
675
+ machine — and it is the common case rather than the exotic one: `boost
676
+ quickstart` imports the published shards, those are keyless 384-d local
677
+ vectors by policy, so the default on-ramp leaves every user one `export`
678
+ away from this.
679
+
680
+ Separate from :func:`_restore_built_space` rather than a fourth branch in
681
+ it, because the predicate is different in two ways:
682
+
683
+ * **`unset` is only right advice when the local model is installed.**
684
+ Dropping the one key in force on a partial ``[rag]`` install sends
685
+ `embed.provider` to ``None`` and the ladder to ``no-key`` — advice that
686
+ switches off the only backend that was working. :func:`free_shard_path`
687
+ guards the same way and for the same reason; ``local_installed`` rather
688
+ than ``local_available`` because wording a hint must not import an ONNX
689
+ runtime.
690
+ * **There is no ``export`` half.** Local has no key, so the two-fact shape
691
+ collapses to one, and the sentence has to say what is being put back —
692
+ the local model, not "the store's own key", which a keyless store does
693
+ not have.
694
+
695
+ None when nothing outranks local, which through :func:`status` means the
696
+ store is not displaced at all. :func:`fix_hint` is a pure function of its
697
+ arguments, though, so the case is reachable by a caller and answered.
698
+ """
699
+ if not embed.local_installed():
700
+ return None
701
+ # `outranking` reads the one preference order there is. Local is not in
702
+ # `KEY_ENV`, and its docstring is explicit that a name outside the table
703
+ # is outranked by every key in force — which is the semantics wanted here:
704
+ # dropping `VOYAGE_API_KEY` alone falls through to `OPENAI_API_KEY`, no
705
+ # nearer the local space than the key it replaced.
706
+ drop = embed.outranking("local")
707
+ if not drop:
708
+ return None
709
+ return "`unset %s` puts the local model back in front" % " ".join(drop)
710
+
711
+
667
712
  def fix_hint(reason: str, status: dict | None = None) -> str:
668
713
  """The single next action for a `status()` reason, or a safe default.
669
714
 
@@ -686,6 +731,17 @@ def fix_hint(reason: str, status: dict | None = None) -> str:
686
731
  ``built_provider`` is what separates a store worth reviving from an
687
732
  unfinished install with nothing to revive.
688
733
 
734
+ ``built_provider`` is also read for the mirror case, which is the one most
735
+ users can reach: a store the **local** model built, on a machine that has
736
+ since exported a key. `boost quickstart` imports keyless 384-d shards, so
737
+ that is the default shape, and one `export` for an unrelated tool takes
738
+ semantic search off. `_restore_local_space` answers it with the `unset`
739
+ that is free, where the table would sell a re-embed through the very API
740
+ whose key caused the problem. Only ``local`` and the names in
741
+ :data:`embed.KEY_ENV` are admitted — a blank ``built_provider`` is not a
742
+ store to revive, and `embed.outranking` would answer for it with every
743
+ key on the machine.
744
+
689
745
  The two remedies differ in their tail, because the cost differs. Under
690
746
  ``no-key`` the local model is missing, so the alternative is installing it
691
747
  — which is what re-embeds everything. Under ``provider-changed`` a
@@ -719,23 +775,39 @@ def fix_hint(reason: str, status: dict | None = None) -> str:
719
775
  built = status.get("built_provider") or ""
720
776
  env = embed.KEY_ENV.get(built)
721
777
  # `chunks` guards the unfinished-install case: without vectors on disk
722
- # there is nothing a key would revive, and "build it" is the real next
723
- # step. A store built by the local model has no env var and correctly
724
- # falls through — that user does need the package back.
778
+ # there is nothing to revive, and "build it" is the real next step.
725
779
  count = status.get("chunks")
726
780
  # `None` is "a store is here and never recorded its total" — a legacy
727
781
  # store, not an unfinished one. Only a *known* zero means there are no
728
782
  # vectors to revive; reading unknown as zero would send exactly the
729
783
  # user this branch exists to protect to the re-embed-everything answer.
730
- if env and (count is None or count > 0):
784
+ #
785
+ # `env or built == "local"` is the admission test, and it is spelled
786
+ # out rather than "has a recorded provider" on purpose: `outranking`
787
+ # answers for a name outside `KEY_ENV` with *every* key in force, so a
788
+ # store whose meta records no provider — `""` here, from a legacy
789
+ # cache or a synthesised status — would be handed `unset` over the
790
+ # machine's entire keyring on the strength of a blank field.
791
+ if (env or built == "local") and (count is None or count > 0):
731
792
  n = (f"{int(count):,} vector{'' if count == 1 else 's'}"
732
793
  if count else "vectors")
733
794
  if reason == "no-key":
734
- return ("set the key it was built with: `export %s=...` — "
735
- "reinstalling the extra swaps in the local model and "
736
- "forces all %s to be re-embedded" % (env, n))
795
+ if env:
796
+ return ("set the key it was built with: `export %s=...` — "
797
+ "reinstalling the extra swaps in the local model "
798
+ "and forces all %s to be re-embedded" % (env, n))
799
+ # Local-built, and the model it was built with is what went
800
+ # missing. The table's row would be nearly right and ends in
801
+ # the one suggestion that is wrong for this store: setting a
802
+ # key displaces it into another space, and with the local
803
+ # backend still absent the next status is `provider-changed`
804
+ # with nothing to unset back to — the full re-embed.
805
+ return ("reinstall the extra: `%s` — it is the model all %s "
806
+ "were built with, and a key instead re-embeds them"
807
+ % (install_extra(), n))
737
808
  live = status.get("provider")
738
- restore = _restore_built_space(built, env)
809
+ restore = (_restore_built_space(built, env) if env
810
+ else _restore_local_space())
739
811
  if restore:
740
812
  # Names the live space rather than "the local model": the
741
813
  # provider that displaced this store is whatever `provider()`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.149
3
+ Version: 1.2.151
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
Binary file
@@ -1,14 +1,16 @@
1
1
  ---
2
2
  id: dense-local-built-store-displaced-by-a-key
3
3
  board: code
4
- section: planned
5
- status: planned
4
+ section: shipped
5
+ status: shipped
6
6
  category: Quality · Retrieval eval
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 4
10
10
  note: Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.
11
11
  order: 353
12
+ owner: loop/dense-local-displaced
13
+ pr: 990
12
14
  title: A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free
13
15
  ---
14
16
  <b>The mirror of #989, and the expensive direction.</b> #989 taught <code>fix_hint</code> that a store built with an API key can be displaced two ways, and to name the <code>export</code> or the <code>unset</code> that restores it. A store built by the <b>local</b> model is displaced by exactly the same mechanism — a key the resolver prefers appears on the machine — and gets none of it: the branch is gated on <code>env = embed.KEY_ENV.get(built)</code> being truthy, and <code>local</code> has no env var, so it falls through to the table.
@@ -34,4 +36,4 @@ title: A locally built vector store displaced by a new API key is told to re-emb
34
36
 
35
37
  Two more things fall out of that. The sentence needs a third variant — "puts the store's own key back in front" is false for a store that has no key; it is the local model being put back in front. And the admission test must be <code>built in embed.KEY_ENV or built == "local"</code>, never "has a recorded provider": <code>embed.outranking("")</code> returns <b>every</b> set key, so a store whose meta records no provider would be told to unset the machine's entire keyring on the strength of a blank field.
36
38
 
37
- <b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and <code>docs/semantic-search.md</code> carries a qualifier pointing at this card until it lands.
39
+ <b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and #990 removes the qualifier <code>docs/semantic-search.md</code> was carrying in the meantime.
@@ -140,9 +140,9 @@
140
140
  <section class="block reveal">
141
141
  <div class="stats">
142
142
  <!-- ROADMAP:stats -->
143
- <div class="stat"><b>22</b><span>Shipped</span></div>
143
+ <div class="stat"><b>23</b><span>Shipped</span></div>
144
144
  <div class="stat"><b>1</b><span>Next up</span></div>
145
- <div class="stat"><b>79</b><span>Planned</span></div>
145
+ <div class="stat"><b>78</b><span>Planned</span></div>
146
146
  <div class="stat"><b>505</b><span>Loop finds</span></div>
147
147
  <!-- /ROADMAP:stats -->
148
148
  </div>
@@ -419,6 +419,18 @@
419
419
  <span class="m">The premise was wrong — boost has always followed <code>requires:</code>. It is the narrowest spelling in the ecosystem (101 values); <code>skills:</code> and <code>dependencies:</code> carry 2,388 more and were invisible.</span>
420
420
  </div>
421
421
  </article>
422
+
423
+ <article class="cap rcard" id="dense-local-built-store-displaced-by-a-key">
424
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
425
+ <h3>A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free</h3>
426
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md">Write-up &middot; dense-local-built-store-displaced-by-a-key.md</a></p>
427
+ <div class="meta">
428
+ <span class="m">Complexity <b>S</b></span>
429
+ <span class="m hi">Impact <b>High</b></span>
430
+ <span class="m">Wow <b class="wow">★★★★</b></span>
431
+ <span class="m">Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.</span>
432
+ </div>
433
+ </article>
422
434
  <!-- /ROADMAP:cards -->
423
435
 
424
436
  </div>
@@ -2171,41 +2183,6 @@ instead of on a user's machine.</p>
2171
2183
  <span class="m">Two functions built the same `mcp add` command line, one had never heard of agy, and both got Gemini wrong…</span>
2172
2184
  </div>
2173
2185
  </article>
2174
-
2175
- <article class="cap rcard" id="dense-local-built-store-displaced-by-a-key">
2176
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
2177
- <h3>A locally built vector store displaced by a new API key is told to re-embed through the paid provider, where unsetting the key is free</h3>
2178
- <p><b>The mirror of #989, and the expensive direction.</b> #989 taught <code>fix_hint</code> that a store built with an API key can be displaced two ways, and to name the <code>export</code> or the <code>unset</code> that restores it. A store built by the <b>local</b> model is displaced by exactly the same mechanism — a key the resolver prefers appears on the machine — and gets none of it: the branch is gated on <code>env = embed.KEY_ENV.get(built)</code> being truthy, and <code>local</code> has no env var, so it falls through to the table.
2179
-
2180
- <b>Measured.</b> Two stores of 645,592 chunks, same machine, only <code>VOYAGE_API_KEY</code> set. Verbatim, through the real <code>dense.status()</code> ladder:
2181
-
2182
- <code>##### store built with 'local', live key = VOYAGE</code><br>
2183
- <code> status reason : provider-changed</code><br>
2184
- <code> outranking('local') : ('VOYAGE_API_KEY',)</code><br>
2185
- <code> DOCTOR | ! semantic search silently off — 645592-chunk vector store built with</code><br>
2186
- <code> DOCTOR | rebuild it: `boost reindex --dense --force`</code><br>
2187
- <br>
2188
- <code>##### store built with 'openai', live key = VOYAGE</code><br>
2189
- <code> status reason : provider-changed</code><br>
2190
- <code> DOCTOR | set the key it was built with: `export OPENAI_API_KEY=...`, then</code><br>
2191
- <code> DOCTOR | `unset VOYAGE_API_KEY` puts it back in front — or …</code>
2192
-
2193
- <code>embed.outranking('local')</code> already computes the answer — <code>unset VOYAGE_API_KEY</code> — and restores that store instantly and for nothing. The line boost actually prints re-embeds 645,592 chunks through a metered API.
2194
-
2195
- <b>Why it is not a corner case.</b> <code>boost quickstart</code> imports the published vector shards, and those are keyless: <code>BAAI/bge-small-en-v1.5</code> at 384 dimensions, built by the local model. So the default on-ramp leaves every user with a local-built store, and the first time one of them exports a Voyage or OpenAI key for anything at all, semantic search goes quiet and doctor bills them to get it back.
2196
-
2197
- <b>The constraint any fix has to clear</b>, and the reason this is a separate card rather than a line in #989: <code>unset</code> is only the right advice for a local-built store <b>if the local model is installed</b>. On a partial <code>[rag]</code> install, unsetting the one key in force sends <code>provider()</code> to <code>None</code> and the ladder to <code>no-key</code> — the advice would switch off the only thing making search work. So the predicate needs to ask whether the local model is there — and the one to ask is <code>embed.local_installed()</code>, not <code>embed.local_available()</code>: <code>local_available</code> answers by importing the ONNX runtime, which is right for a caller about to embed and wrong for one about to word a sentence. <code>dense.free_shard_path</code>, the sibling that words the other keyed-machine hint, already uses <code>local_installed</code> for exactly that reason. Either way it is a check the key-built branches do not need.
2198
-
2199
- Two more things fall out of that. The sentence needs a third variant — "puts the store's own key back in front" is false for a store that has no key; it is the local model being put back in front. And the admission test must be <code>built in embed.KEY_ENV or built == "local"</code>, never "has a recorded provider": <code>embed.outranking("")</code> returns <b>every</b> set key, so a store whose meta records no provider would be told to unset the machine's entire keyring on the strength of a blank field.
2200
-
2201
- <b>Where it was found.</b> The adversarial verification pass on #989, which is also why the measurement exists. #989's PR body originally scoped this out as "not measured here"; it is measured now, and <code>docs/semantic-search.md</code> carries a qualifier pointing at this card until it lands.</p>
2202
- <div class="meta">
2203
- <span class="m">Complexity <b>S</b></span>
2204
- <span class="m hi">Impact <b>High</b></span>
2205
- <span class="m">Wow <b class="wow">★★★★</b></span>
2206
- <span class="m">Exporting an API key takes a locally built store off the air, and doctor answers with a paid re-embed where `unset` is free. Every user who came in through `boost quickstart` is one `export` away from this.</span>
2207
- </div>
2208
- </article>
2209
2186
  <!-- /ROADMAP:cards -->
2210
2187
 
2211
2188
  </div>
@@ -146,6 +146,12 @@ A key buys a larger embedding model. Nothing else changes.
146
146
  Set one and boost prefers it automatically, re-embedding on your next
147
147
  `boost reindex --dense`. Voyage wins if both are set.
148
148
 
149
+ If you came in through `boost quickstart`, your vectors are the keyless local
150
+ ones, and exporting a key is what takes them out of service — boost prefers
151
+ the key, and nothing it has on disk is in that key's space. `boost doctor`
152
+ names the `unset` that puts them back, so this is recoverable for free rather
153
+ than at the price of a re-embed.
154
+
149
155
  Be deliberate about this, because switching providers is not free. Vectors are
150
156
  only meaningful inside the embedding space that produced them, so changing
151
157
  provider or model invalidates every vector you have and forces a full re-embed.
@@ -187,6 +193,7 @@ deliberately no vectors, for the same reason.
187
193
  | store is empty | `boost reindex --dense --force` |
188
194
  | version, model or dimension changed | `boost reindex --dense --force` |
189
195
  | provider changed, and a store built with a key | put that key back in force. The rebuild is offered as the alternative, and it re-embeds everything |
196
+ | provider changed, and a store built by the local model | `unset` the keys in front of it. Free, and instant |
190
197
  | no key, and a store built with one | set the key it was built with. Reinstalling the extra swaps in the local model and forces a full re-embed |
191
198
 
192
199
  Those last two rows are the ones worth reading twice, and the first of them is
@@ -208,10 +215,17 @@ its own provider, and doctor names whichever applies:
208
215
  Both can be true at once, and then doctor names both steps. Running only the
209
216
  export would leave the resolver exactly where it was.
210
217
 
211
- A store built by the **local** model is displaced the same way — exporting a
212
- key on a machine whose vectors are local ones takes semantic search off — but
213
- doctor does not yet name the `unset` for it, and offers the rebuild instead.
214
- Tracked as a follow-up; `unset` is the free fix in the meantime.
218
+ A store built by the **local** model is displaced the same way, and it is the
219
+ case most people can reach: `boost quickstart` imports keyless vectors, so
220
+ exporting a key for anything at all takes semantic search off. Doctor answers
221
+ that one with the `unset` too — every key in front of local, since dropping
222
+ `VOYAGE_API_KEY` alone falls through to `OPENAI_API_KEY`, which is no nearer
223
+ the local space. There is no `export` half, because a local store has no key
224
+ of its own.
225
+
226
+ The one time doctor withholds that advice is when the local model is not
227
+ installed. Dropping your only key there would leave no provider at all, so
228
+ the rebuild really is the way out, and that is what it says.
215
229
 
216
230
  If you would rather move to the live provider than restore the old one,
217
231
  `boost reindex --dense --force` is the command, and doctor names the space it
@@ -200,12 +200,20 @@ class TestNoKeyReadsTheStore:
200
200
  chunks=0, store_exists=False))
201
201
  assert hint == _table("no-key")
202
202
 
203
- def test_a_locally_built_store_still_gets_the_table_answer(self):
204
- # `local` has no API key to set — this user genuinely dropped the
205
- # package and needs it back.
203
+ def test_a_locally_built_store_keeps_the_extra_and_loses_the_key_offer(
204
+ self):
205
+ # `local` has no API key to set, so this user does genuinely need the
206
+ # package back and the table's first clause is right. Its second is
207
+ # not: "(or set VOYAGE_API_KEY / OPENAI_API_KEY for a larger model)"
208
+ # sells this particular user a full re-embed of vectors already on
209
+ # disk, since a key displaces their store and the local model is
210
+ # still missing to unset back to. Same remedy, without the bait.
206
211
  hint = dense.fix_hint("no-key", self._status(built_provider="local",
207
212
  built_model="BAAI/bge-small-en-v1.5"))
208
- assert hint == _table("no-key")
213
+ assert hint.startswith("reinstall the extra: `%s`"
214
+ % dense.install_extra())
215
+ assert hint != _table("no-key")
216
+ assert "VOYAGE_API_KEY" not in hint
209
217
 
210
218
  def test_no_status_argument_keeps_the_old_answer(self):
211
219
  # Every pre-existing caller passes one argument; none may regress.
@@ -372,8 +380,11 @@ class TestProviderChangedIsWhereALostKeyActuallyLands:
372
380
  assert dense.fix_hint("provider-changed", st) == \
373
381
  _table("provider-changed")
374
382
 
375
- def test_a_locally_built_store_keeps_the_table(self):
376
- # No key would revive it — the rebuild really is the answer.
383
+ def test_a_locally_built_store_is_not_this_branch(self):
384
+ # It has its own, below: no key to export, and an `unset` that is
385
+ # only safe when the local model is installed. Under this class's
386
+ # fixture no key is set at all, so nothing outranks local and the
387
+ # rebuild really is the answer.
377
388
  st = self._status(built_provider="local", provider="voyage")
378
389
  assert dense.fix_hint("provider-changed", st) == \
379
390
  _table("provider-changed")
@@ -536,6 +547,148 @@ class TestProviderChangedIsWhereALostKeyActuallyLands:
536
547
  assert env in hint
537
548
 
538
549
 
550
+ class TestALocallyBuiltStoreDisplacedByAKey:
551
+ """The mirror of the class above, and the direction that costs money.
552
+
553
+ `boost quickstart` imports the published shards, and those are keyless by
554
+ policy — 384-d `BAAI/bge-small-en-v1.5`, built by the local model. So the
555
+ default on-ramp leaves every user with a local-built store, and the first
556
+ time one of them exports a Voyage or OpenAI key for anything at all,
557
+ `embed.provider` prefers it, semantic search goes quiet, and the table's
558
+ row bills them to get it back. `embed.outranking("local")` already knows
559
+ the free answer; before this class nothing asked it.
560
+
561
+ Reproduced at 645,592 chunks during the adversarial pass on the keyed
562
+ branch, which is why that PR shipped with a qualifier in
563
+ `docs/semantic-search.md` pointing at this one.
564
+ """
565
+
566
+ def _status(self, **over):
567
+ st = {"reason": "provider-changed", "provider": "voyage",
568
+ "built_provider": "local", "built_model": "bge-small-en-v1.5",
569
+ "built_dim": 384, "chunks": 645592, "store_exists": True,
570
+ "degraded": True}
571
+ st.update(over)
572
+ return st
573
+
574
+ @pytest.fixture(autouse=True)
575
+ def _local_is_installed(self, monkeypatch):
576
+ """The local model present, and the keys under the test's control.
577
+
578
+ Patched on `embed` itself rather than on `localembed.installed`:
579
+ `local_installed` consults the memoised `_backend_cache` *first*, so a
580
+ test earlier in the same process that cached a missing backend makes a
581
+ patch one layer down invisible. Patching the name this module actually
582
+ calls cannot be shadowed that way.
583
+ """
584
+ from boost_cli.core import embed
585
+ for env in embed.KEY_ENV.values():
586
+ monkeypatch.delenv(env, raising=False)
587
+ monkeypatch.delenv("BOOST_NO_EMBED", raising=False)
588
+ monkeypatch.setattr(embed, "local_installed", lambda: True)
589
+
590
+ def test_the_remedy_is_the_unset_not_the_rebuild(self, monkeypatch):
591
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
592
+ assert dense.fix_hint("provider-changed", self._status()) == (
593
+ "`unset VOYAGE_API_KEY` puts the local model back in front — or "
594
+ "`boost reindex --dense --force` re-embeds all 645,592 vectors "
595
+ "in voyage's space")
596
+
597
+ def test_every_key_in_front_is_named_in_one_unset(self, monkeypatch):
598
+ # Dropping `VOYAGE_API_KEY` alone falls through to `OPENAI_API_KEY`,
599
+ # which is no nearer the local space than the key it replaced — so a
600
+ # remedy naming only the live provider's key does not restore
601
+ # anything, and the user runs it to no effect.
602
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
603
+ monkeypatch.setenv("OPENAI_API_KEY", "o")
604
+ hint = dense.fix_hint("provider-changed", self._status())
605
+ assert "`unset VOYAGE_API_KEY OPENAI_API_KEY`" in hint
606
+
607
+ def test_it_never_says_the_store_has_a_key_of_its_own(self, monkeypatch):
608
+ # The keyed branch's sentence is "puts the store's own key back in
609
+ # front". A keyless store has no such key; what goes back in front is
610
+ # the model.
611
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
612
+ hint = dense.fix_hint("provider-changed", self._status())
613
+ assert "own key" not in hint
614
+ assert "export" not in hint
615
+
616
+ def test_without_the_local_model_the_unset_is_never_offered(
617
+ self, monkeypatch):
618
+ # The whole reason this is not a fourth branch of
619
+ # `_restore_built_space`. On a partial `[rag]` install, unsetting the
620
+ # one key in force sends `provider()` to None and the ladder to
621
+ # `no-key` — advice that switches off the only backend that worked.
622
+ from boost_cli.core import embed
623
+ monkeypatch.setattr(embed, "local_installed", lambda: False)
624
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
625
+ assert dense.fix_hint("provider-changed", self._status()) == \
626
+ _table("provider-changed")
627
+
628
+ def test_with_nothing_in_front_of_it_the_table_stands(self):
629
+ # No key set, so nothing displaced this store and there is nothing to
630
+ # unset. Unreachable through `status()` — `provider()` would resolve
631
+ # to local and the reason would not be `provider-changed` — but
632
+ # `fix_hint` is a pure function of its arguments and callers build
633
+ # these dicts by hand.
634
+ assert dense.fix_hint("provider-changed", self._status()) == \
635
+ _table("provider-changed")
636
+
637
+ @pytest.mark.parametrize("built", [None, "", "garbage"])
638
+ def test_a_store_naming_no_provider_is_never_told_to_unset(
639
+ self, monkeypatch, built):
640
+ # The hazard that makes the admission test explicit rather than
641
+ # "has a recorded provider": `embed.outranking` answers for a name
642
+ # outside `KEY_ENV` with *every* key in force, so a blank field would
643
+ # otherwise earn this user an `unset` over their whole keyring.
644
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
645
+ monkeypatch.setenv("OPENAI_API_KEY", "o")
646
+ hint = dense.fix_hint("provider-changed",
647
+ self._status(built_provider=built))
648
+ assert hint == _table("provider-changed")
649
+ assert "unset" not in hint
650
+
651
+ def test_an_empty_store_keeps_the_table(self, monkeypatch):
652
+ # Nothing on disk to put back in front of anything.
653
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
654
+ assert dense.fix_hint("provider-changed", self._status(chunks=0)) == \
655
+ _table("provider-changed")
656
+
657
+ def test_a_store_that_never_recorded_a_total_is_still_revived(
658
+ self, monkeypatch):
659
+ monkeypatch.setenv("VOYAGE_API_KEY", "v")
660
+ hint = dense.fix_hint("provider-changed", self._status(chunks=None))
661
+ assert "`unset VOYAGE_API_KEY`" in hint
662
+ assert "all vectors" in hint
663
+
664
+ def test_no_key_offers_the_extra_and_warns_off_the_key(self):
665
+ # `no-key` is "no key *and* no local backend", so for this store the
666
+ # model it was built with is precisely what went missing. The table's
667
+ # row is nearly right and ends in the one suggestion that is wrong
668
+ # here: setting a key displaces the store into another space, and
669
+ # with the local backend still absent the next status is
670
+ # `provider-changed` with nothing to unset back to.
671
+ #
672
+ # Pinned as the whole sentence, not a prefix: the clause that does the
673
+ # warning off is the *tail*, so a prefix assertion would let it be
674
+ # reworded — or emptied — without a test noticing.
675
+ hint = dense.fix_hint("no-key", self._status())
676
+ assert hint == (
677
+ "reinstall the extra: `%s` — it is the model all 645,592 vectors "
678
+ "were built with, and a key instead re-embeds them"
679
+ % dense.install_extra())
680
+ assert hint != _table("no-key")
681
+ assert "VOYAGE_API_KEY" not in hint
682
+
683
+ def test_no_key_still_exports_for_a_store_built_with_one(self):
684
+ # The widened admission must not swallow the keyed branch: a store
685
+ # built through a paid provider still gets its `export`, not the
686
+ # reinstall.
687
+ hint = dense.fix_hint("no-key", self._status(built_provider="voyage"))
688
+ assert "`export VOYAGE_API_KEY=...`" in hint
689
+ assert "reinstall the extra:" not in hint
690
+
691
+
539
692
  class TestFallback:
540
693
  """An unknown reason must degrade to advice, not a KeyError in front of a user."""
541
694
 
@@ -385,6 +385,33 @@ def test_doctor_names_both_steps_when_a_preferred_key_displaced_the_store(
385
385
  assert "unset VOYAGE_API_KEY" in res.out
386
386
 
387
387
 
388
+ def test_doctor_hands_a_local_store_the_unset_not_the_bill(
389
+ boost, sandbox, monkeypatch):
390
+ """The end-to-end shape of the direction that costs money.
391
+
392
+ A `boost quickstart` machine: keyless 384-d shards imported, then a
393
+ Voyage key exported for something unrelated. `embed.provider` prefers the
394
+ key, dense goes quiet, and the table's row would re-embed every vector
395
+ through the very API whose key caused it. `local_installed` is forced on
396
+ because CI has no `[rag]` extra and the assertion must not flip with the
397
+ interpreter it runs under.
398
+ """
399
+ monkeypatch.setattr(embed, "local_available", lambda: True)
400
+ monkeypatch.setattr(embed, "local_installed", lambda: True)
401
+ monkeypatch.setenv("VOYAGE_API_KEY", "v-test")
402
+ monkeypatch.delenv("OPENAI_API_KEY", raising=False)
403
+ _write_store(provider="local", model="BAAI/bge-small-en-v1.5", dim=384,
404
+ chunks=7)
405
+ res = boost("doctor", expect=None)
406
+ assert res.rc == 1
407
+ assert "unset VOYAGE_API_KEY" in res.out
408
+ # The two wordings that would be wrong here, pinned as absences: this
409
+ # store has no key of its own to export, and leading with the rebuild is
410
+ # the bill the whole branch exists to avoid.
411
+ assert "export VOYAGE_API_KEY" not in res.out
412
+ assert "own key" not in res.out
413
+
414
+
388
415
  def test_doctor_says_an_empty_store_holds_no_vectors(boost, sandbox, keyed):
389
416
  _write_store(chunks=0)
390
417
  res = boost("doctor", expect=None)
Binary file
File without changes