boost-skill-cli 1.2.107__tar.gz → 1.2.109__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 (1027) hide show
  1. {boost_skill_cli-1.2.107/boost_skill_cli.egg-info → boost_skill_cli-1.2.109}/PKG-INFO +6 -3
  2. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/README.md +5 -2
  3. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/configuration.py +20 -3
  5. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/discovery.py +29 -0
  6. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/rag.py +123 -15
  7. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109/boost_skill_cli.egg-info}/PKG-INFO +6 -3
  8. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/SOURCES.txt +7 -0
  9. boost_skill_cli-1.2.109/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +42 -0
  10. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +13 -2
  11. boost_skill_cli-1.2.109/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +36 -0
  12. boost_skill_cli-1.2.109/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +44 -0
  13. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-the-keyword-index.md +26 -1
  14. boost_skill_cli-1.2.109/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +41 -0
  15. boost_skill_cli-1.2.109/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +55 -0
  16. boost_skill_cli-1.2.109/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +42 -0
  17. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap.html +202 -35
  18. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_discovery.py +41 -0
  19. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_compact.py +45 -0
  20. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag.py +8 -8
  21. boost_skill_cli-1.2.109/tests/unit/test_rag_completeness.py +255 -0
  22. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitattributes +0 -0
  23. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitignore +0 -0
  24. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.gitleaks.toml +0 -0
  25. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.htmlvalidate.json +0 -0
  26. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.lighthouserc.json +0 -0
  27. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.lycheeignore +0 -0
  28. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.markdownlint-cli2.jsonc +0 -0
  29. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.pre-commit-config.yaml +0 -0
  30. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.stylelintrc.json +0 -0
  31. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/boost/AIWriting.yml +0 -0
  32. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/boost/Terminology.yml +0 -0
  33. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  34. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/.vale.ini +0 -0
  35. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CLAUDE.md +0 -0
  36. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CODE_OF_CONDUCT.md +0 -0
  37. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/CONTRIBUTING.md +0 -0
  38. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/DCO +0 -0
  39. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/GOVERNANCE.md +0 -0
  40. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/LICENSE +0 -0
  41. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/MAINTAINERS.md +0 -0
  42. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/MANIFEST.in +0 -0
  43. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/Makefile +0 -0
  44. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/SECURITY.md +0 -0
  45. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/SUPPORT.md +0 -0
  46. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost +0 -0
  47. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/__init__.py +0 -0
  48. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/__main__.py +0 -0
  49. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/cli.py +0 -0
  50. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/cliparse.py +0 -0
  51. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/__init__.py +0 -0
  52. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/_common.py +0 -0
  53. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/bmad.py +0 -0
  54. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/hooks.py +0 -0
  55. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/info.py +0 -0
  56. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/intelligence.py +0 -0
  57. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/pkg.py +0 -0
  58. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/quality.py +0 -0
  59. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/quickstart.py +0 -0
  60. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/run.py +0 -0
  61. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/safety.py +0 -0
  62. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/taps.py +0 -0
  63. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/commands/team.py +0 -0
  64. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/__init__.py +0 -0
  65. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/adapters.py +0 -0
  66. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/agents.py +0 -0
  67. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/ai.py +0 -0
  68. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/aihost.py +0 -0
  69. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/archive.py +0 -0
  70. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/bmad.py +0 -0
  71. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/bootstrap.py +0 -0
  72. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/browse.py +0 -0
  73. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/builtin.py +0 -0
  74. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/capabilities.py +0 -0
  75. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/catalog.py +0 -0
  76. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/catalogbundle.py +0 -0
  77. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/chat.py +0 -0
  78. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/claude_settings.py +0 -0
  79. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/cohort.py +0 -0
  80. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/complete.py +0 -0
  81. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/config.py +0 -0
  82. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/dense.py +0 -0
  83. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/deps.py +0 -0
  84. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/discovery.py +0 -0
  85. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/ed25519.py +0 -0
  86. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/embed.py +0 -0
  87. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/faithfulness.py +0 -0
  88. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/frontmatter.py +0 -0
  89. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/gitutil.py +0 -0
  90. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/hookhost.py +0 -0
  91. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/imperative.py +0 -0
  92. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/injectscan.py +0 -0
  93. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/installscan.py +0 -0
  94. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/integrity.py +0 -0
  95. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/journal.py +0 -0
  96. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/jsonstate.py +0 -0
  97. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/localembed.py +0 -0
  98. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/lockfile.py +0 -0
  99. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/logs.py +0 -0
  100. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcp.py +0 -0
  101. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcpdecl.py +0 -0
  102. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/mcphost.py +0 -0
  103. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/minisign.py +0 -0
  104. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/nethttp.py +0 -0
  105. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/output.py +0 -0
  106. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/paths.py +0 -0
  107. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/policy.py +0 -0
  108. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/projectlock.py +0 -0
  109. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/provenance.py +0 -0
  110. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/registry.py +0 -0
  111. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/report.py +0 -0
  112. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/resolve.py +0 -0
  113. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/rules.py +0 -0
  114. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/scopes.py +0 -0
  115. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/secretscan.py +0 -0
  116. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/selfupdate.py +0 -0
  117. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/serve.py +0 -0
  118. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/shards.py +0 -0
  119. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/stackprobe.py +0 -0
  120. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/staleness.py +0 -0
  121. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/store.py +0 -0
  122. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/trustaudit.py +0 -0
  123. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/typedvalue.py +0 -0
  124. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/typosquat.py +0 -0
  125. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/updatediff.py +0 -0
  126. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/util.py +0 -0
  127. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/core/workflows.py +0 -0
  128. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/data/registries.json +0 -0
  129. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/data/rules/boost-first.mdc +0 -0
  130. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/errors.py +0 -0
  131. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_cli/spin.py +0 -0
  132. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/__init__.py +0 -0
  133. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/_compat.py +0 -0
  134. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/graph.py +0 -0
  135. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/loader.py +0 -0
  136. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/py.typed +0 -0
  137. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_langchain/retriever.py +0 -0
  138. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  139. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  140. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/requires.txt +0 -0
  141. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/boost_skill_cli.egg-info/top_level.txt +0 -0
  142. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/codecov.yml +0 -0
  143. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/.claude/settings.local.json +0 -0
  144. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/DEBUGGING.md +0 -0
  145. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/adapters.html +0 -0
  146. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/README.md +0 -0
  147. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-components-core.md +0 -0
  148. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-containers.md +0 -0
  149. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-context.md +0 -0
  150. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/architecture/c4-dynamic-install.md +0 -0
  151. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/bmad.md +0 -0
  152. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/distill.gif +0 -0
  153. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/doctor.gif +0 -0
  154. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/explain.gif +0 -0
  155. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/hooks.gif +0 -0
  156. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/install.gif +0 -0
  157. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/pulse.gif +0 -0
  158. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/search.gif +0 -0
  159. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/gifs/tap.gif +0 -0
  160. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/distill.tape +0 -0
  161. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/doctor.tape +0 -0
  162. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/explain.tape +0 -0
  163. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/hooks.tape +0 -0
  164. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/install.tape +0 -0
  165. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/pulse.tape +0 -0
  166. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/search.tape +0 -0
  167. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel/tapes/tap.tape +0 -0
  168. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/carousel.html +0 -0
  169. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/chat.html +0 -0
  170. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/code-review.md +0 -0
  171. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/commands.html +0 -0
  172. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/commit-audit.md +0 -0
  173. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo-index.json +0 -0
  174. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.gif +0 -0
  175. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.html +0 -0
  176. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/demo.tape +0 -0
  177. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/dependencies.md +0 -0
  178. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/design-roadmap.html +0 -0
  179. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/eval-latest.json +0 -0
  180. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/eval.html +0 -0
  181. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/index.html +0 -0
  182. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/langchain.html +0 -0
  183. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/mcp-hub.html +0 -0
  184. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/openssf-badge.md +0 -0
  185. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/openssf-playbook.md +0 -0
  186. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/rag-architecture.md +0 -0
  187. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D01.md +0 -0
  188. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D02.md +0 -0
  189. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D03.md +0 -0
  190. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D04.md +0 -0
  191. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D05.md +0 -0
  192. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D06.md +0 -0
  193. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D07.md +0 -0
  194. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D08.md +0 -0
  195. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D09.md +0 -0
  196. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D10.md +0 -0
  197. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D11.md +0 -0
  198. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D12.md +0 -0
  199. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D13.md +0 -0
  200. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D14.md +0 -0
  201. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D15.md +0 -0
  202. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D16.md +0 -0
  203. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D17.md +0 -0
  204. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D18.md +0 -0
  205. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D19.md +0 -0
  206. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D20.md +0 -0
  207. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D21.md +0 -0
  208. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D22.md +0 -0
  209. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D23.md +0 -0
  210. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D24.md +0 -0
  211. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D25.md +0 -0
  212. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D26.md +0 -0
  213. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/BOOST-D27.md +0 -0
  214. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  215. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  216. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  217. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  218. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  219. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  220. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  221. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  222. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  223. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  224. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  225. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  226. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  227. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  228. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  229. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-attest-findings.md +0 -0
  230. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-audit-findings.md +0 -0
  231. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  232. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-browse-findings.md +0 -0
  233. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  234. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  235. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  236. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  237. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-chat-findings.md +0 -0
  238. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  239. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  240. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  241. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-completions-findings.md +0 -0
  242. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-config-findings.md +0 -0
  243. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  244. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-context-findings.md +0 -0
  245. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  246. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  247. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-create-findings.md +0 -0
  248. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  249. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-deps-findings.md +0 -0
  250. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-discover-findings.md +0 -0
  251. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  252. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  253. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-drift-findings.md +0 -0
  254. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  255. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-edit-findings.md +0 -0
  256. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  257. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-explain-findings.md +0 -0
  258. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-export-findings.md +0 -0
  259. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  260. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  261. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  262. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  263. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  264. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-health-findings.md +0 -0
  265. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  266. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  267. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-import-findings.md +0 -0
  268. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-index-findings.md +0 -0
  269. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  270. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  271. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-findings.md +0 -0
  272. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  273. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  274. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-lint-findings.md +0 -0
  275. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-log-findings.md +0 -0
  276. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  277. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  278. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  279. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  280. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  281. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  282. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  283. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  284. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  285. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  286. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-policy-findings.md +0 -0
  287. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-preview-findings.md +0 -0
  288. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-profile-findings.md +0 -0
  289. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  290. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  291. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  292. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  293. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  294. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  295. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  296. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  297. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  298. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-replay-findings.md +0 -0
  299. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-root-findings.md +0 -0
  300. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  301. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-run-findings.md +0 -0
  302. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  303. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-search-findings.md +0 -0
  304. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  305. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  306. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  307. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  308. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  309. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  310. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  311. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  312. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-sync-findings.md +0 -0
  313. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tag-findings.md +0 -0
  314. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  315. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-tap-findings.md +0 -0
  316. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-taps-findings.md +0 -0
  317. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  318. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-test-findings.md +0 -0
  319. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-trust-findings.md +0 -0
  320. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  321. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  322. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-untap-findings.md +0 -0
  323. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-update-findings.md +0 -0
  324. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  325. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-verify-findings.md +0 -0
  326. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/audit-who-findings.md +0 -0
  327. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  328. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  329. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  330. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  331. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  332. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  333. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  334. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  335. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-first-rule.md +0 -0
  336. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  337. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  338. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/branch-current-gate.md +0 -0
  339. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  340. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  341. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  342. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  343. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  344. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  345. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  346. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  347. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  348. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  349. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  350. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  351. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  352. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  353. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  354. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  355. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  356. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-command-audit.md +0 -0
  357. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  358. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  359. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  360. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  361. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/command-carousel-page.md +0 -0
  362. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  363. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  364. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  365. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  366. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  367. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  368. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  369. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  370. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  371. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  372. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  373. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  374. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  375. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  376. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  377. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  378. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  379. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  380. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  381. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  382. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  383. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  384. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  385. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  386. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  387. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  388. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  389. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  390. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  391. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  392. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  393. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  394. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  395. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  396. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  397. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  398. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  399. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  400. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  401. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  402. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  403. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  404. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  405. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  406. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  407. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  408. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  409. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  410. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  411. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  412. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  413. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  414. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  415. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  416. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  417. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  418. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  419. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  420. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  421. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  422. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  423. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  424. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  425. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  426. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  427. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  428. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  429. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  430. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  431. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  432. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/github-community-health-files.md +0 -0
  433. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  434. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  435. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  436. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  437. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  438. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  439. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  440. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  441. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  442. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  443. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  444. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  445. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  446. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  447. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  448. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  449. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  450. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  451. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  452. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  453. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  454. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  455. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  456. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  457. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  458. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  459. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  460. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  461. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  462. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  463. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  464. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  465. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  466. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  467. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  468. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  469. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  470. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  471. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  472. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  473. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  474. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  475. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  476. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  477. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  478. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  479. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  480. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  481. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  482. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  483. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  484. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  485. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  486. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  487. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  488. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  489. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  490. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  491. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  492. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  493. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  494. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  495. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  496. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  497. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  498. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  499. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  500. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  501. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  502. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  503. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  504. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  505. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  506. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  507. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  508. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  509. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  510. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  511. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  512. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  513. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  514. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  515. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  516. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-playbook.md +0 -0
  517. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/openssf-silver.md +0 -0
  518. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  519. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  520. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  521. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  522. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  523. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  524. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  525. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  526. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  527. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  528. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  529. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  530. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  531. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  532. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  533. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  534. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  535. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  536. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  537. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  538. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  539. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  540. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  541. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  542. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  543. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  544. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  545. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  546. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  547. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  548. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  549. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  550. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  551. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  552. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  553. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  554. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  555. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  556. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  557. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  558. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  559. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/relicence-apache-2.md +0 -0
  560. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  561. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  562. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  563. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  564. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  565. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  566. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  567. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  568. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  569. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  570. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  571. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  572. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  573. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  574. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  575. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  576. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  577. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  578. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  579. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  580. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  581. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  582. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  583. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  584. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  585. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  586. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  587. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  588. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  589. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  590. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  591. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  592. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  593. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  594. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  595. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  596. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  597. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  598. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  599. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  600. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  601. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  602. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  603. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  604. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  605. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  606. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  607. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  608. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  609. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  610. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  611. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  612. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  613. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  614. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  615. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  616. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  617. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  618. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  619. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  620. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  621. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  622. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  623. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  624. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  625. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  626. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  627. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  628. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  629. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  630. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  631. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  632. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  633. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  634. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  635. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  636. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  637. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  638. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  639. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  640. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  641. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  642. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  643. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  644. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  645. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  646. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  647. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  648. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  649. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  650. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  651. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  652. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  653. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  654. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  655. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  656. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  657. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  658. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  659. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/workspace-scope-install.md +0 -0
  660. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zip-strict-audit.md +0 -0
  661. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  662. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  663. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/security-design.md +0 -0
  664. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/semantic-search.md +0 -0
  665. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  666. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/verifying-releases.md +0 -0
  667. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/meta.md +0 -0
  668. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/openvex.json +0 -0
  669. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  670. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  671. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  672. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  673. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/eslint.config.mjs +0 -0
  674. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/README.md +0 -0
  675. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/__init__.py +0 -0
  676. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/baseline.json +0 -0
  677. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/faithfulness.py +0 -0
  678. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/golden_set.json +0 -0
  679. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/make_corpus.py +0 -0
  680. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/make_golden.py +0 -0
  681. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/metrics.py +0 -0
  682. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/publish_golden_dataset.py +0 -0
  683. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/evals/run_evals.py +0 -0
  684. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/README.md +0 -0
  685. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/adapt-demo.sh +0 -0
  686. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/examples/boost-run-prototype.sh +0 -0
  687. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/index.html +0 -0
  688. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/noxfile.py +0 -0
  689. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/pyproject.toml +0 -0
  690. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/coverage-tools.in +0 -0
  691. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/coverage-tools.txt +0 -0
  692. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/lint-tools.in +0 -0
  693. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/lint-tools.txt +0 -0
  694. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/mutation-tools.in +0 -0
  695. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/mutation-tools.txt +0 -0
  696. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/platform-pins.lock +0 -0
  697. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/release-tools.in +0 -0
  698. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/release-tools.txt +0 -0
  699. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/test-tools.in +0 -0
  700. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/requirements/test-tools.txt +0 -0
  701. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/a11y_check.py +0 -0
  702. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/add_spdx_headers.py +0 -0
  703. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/bench_cli.sh +0 -0
  704. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_command_reference.py +0 -0
  705. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_demo_index.py +0 -0
  706. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_registries.py +0 -0
  707. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_roadmap.py +0 -0
  708. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_scale_corpus.py +0 -0
  709. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/build_vex.py +0 -0
  710. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_anchors.py +0 -0
  711. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_branch_current.py +0 -0
  712. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_dco.py +0 -0
  713. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_licenses.py +0 -0
  714. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_reproducible.py +0 -0
  715. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/check_required_checks.py +0 -0
  716. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/ensure_eval_corpus.sh +0 -0
  717. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_corpus.py +0 -0
  718. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_explain.py +0 -0
  719. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_gate.py +0 -0
  720. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_recommend.py +0 -0
  721. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_retrieval.py +0 -0
  722. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_stats_summary.py +0 -0
  723. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/eval_tools.py +0 -0
  724. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/import_budget.py +0 -0
  725. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/lock_toolchain.py +0 -0
  726. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/measure_near_duplicate_bound.py +0 -0
  727. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/measure_registry.py +0 -0
  728. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_gate.py +0 -0
  729. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_shards.py +0 -0
  730. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/mutation_weights.json +0 -0
  731. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/normalize_sdist.py +0 -0
  732. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/page_budget.py +0 -0
  733. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/perf_gate.py +0 -0
  734. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/post_deploy_smoke.py +0 -0
  735. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/publish_eval_json.py +0 -0
  736. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/publish_shards.py +0 -0
  737. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/release_guard.py +0 -0
  738. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/release_preflight.py +0 -0
  739. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/serve_docs.py +0 -0
  740. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/scripts/shard_plan.py +0 -0
  741. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/setup.cfg +0 -0
  742. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/sonar-project.properties +0 -0
  743. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/README.md +0 -0
  744. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/boost.css +0 -0
  745. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/boost.js +0 -0
  746. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/style/demo.html +0 -0
  747. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/adapt.feature +0 -0
  748. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/browse.feature +0 -0
  749. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/count.feature +0 -0
  750. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/discover.feature +0 -0
  751. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/doctor.feature +0 -0
  752. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/environment.py +0 -0
  753. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/explain.feature +0 -0
  754. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/index.feature +0 -0
  755. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/install.feature +0 -0
  756. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/list.feature +0 -0
  757. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/mcp.feature +0 -0
  758. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/search.feature +0 -0
  759. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/cli_steps.py +0 -0
  760. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/discovery_steps.py +0 -0
  761. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/mcp_steps.py +0 -0
  762. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/bdd/features/steps/quality_steps.py +0 -0
  763. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/conftest.py +0 -0
  764. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/baseline.json +0 -0
  765. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/explain.jsonl +0 -0
  766. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  767. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/golden-natural.jsonl +0 -0
  768. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/golden.jsonl +0 -0
  769. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/recommend.jsonl +0 -0
  770. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/taps-scale.txt +0 -0
  771. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/taps.txt +0 -0
  772. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/eval/tool_calls.jsonl +0 -0
  773. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_bmad_all_hosts.py +0 -0
  774. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_capabilities_policy.py +0 -0
  775. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_adapt.py +0 -0
  776. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_bmad.py +0 -0
  777. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_catalog.py +0 -0
  778. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_chat.py +0 -0
  779. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_configuration.py +0 -0
  780. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_hooks.py +0 -0
  781. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_hooks_gemini.py +0 -0
  782. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_info.py +0 -0
  783. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_intelligence.py +0 -0
  784. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_json_reports.py +0 -0
  785. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_pane_width.py +0 -0
  786. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_pkg.py +0 -0
  787. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_quality.py +0 -0
  788. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_quickstart.py +0 -0
  789. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_tap_pins.py +0 -0
  790. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_taps.py +0 -0
  791. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_cli_team.py +0 -0
  792. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_everyday_loop.py +0 -0
  793. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_integrity_enforce.py +0 -0
  794. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_kind_conformance.py +0 -0
  795. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_property_parsers.py +0 -0
  796. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_run.py +0 -0
  797. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_tap_signing.py +0 -0
  798. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/functional/test_workspace_scope.py +0 -0
  799. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/README.md +0 -0
  800. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  801. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  802. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  803. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  804. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  805. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  806. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  807. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  808. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  809. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  810. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  811. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  812. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  813. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  814. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  815. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  816. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  817. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  818. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  819. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  820. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  821. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  822. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  823. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/fuzz_frontmatter.py +0 -0
  824. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/fuzz/fuzz_registry.py +0 -0
  825. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/conftest.py +0 -0
  826. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_graph.py +0 -0
  827. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_loader.py +0 -0
  828. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/langchain/test_retriever.py +0 -0
  829. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/make_fixture.py +0 -0
  830. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/perf/test_benchmarks.py +0 -0
  831. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/smoke.sh +0 -0
  832. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_a11y_check.py +0 -0
  833. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_action_pin_lockstep.py +0 -0
  834. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters.py +0 -0
  835. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters_multi.py +0 -0
  836. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_adapters_runner.py +0 -0
  837. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_agents.py +0 -0
  838. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_ai.py +0 -0
  839. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_aihost.py +0 -0
  840. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_archive.py +0 -0
  841. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bmad_core.py +0 -0
  842. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_boost_first_offer.py +0 -0
  843. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bootstrap.py +0 -0
  844. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_bot_pr_dco.py +0 -0
  845. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_branch_current.py +0 -0
  846. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_browse.py +0 -0
  847. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_builtin.py +0 -0
  848. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_capabilities.py +0 -0
  849. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_catalog.py +0 -0
  850. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_catalogbundle.py +0 -0
  851. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_chat.py +0 -0
  852. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_anchors.py +0 -0
  853. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_dco.py +0 -0
  854. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_licenses.py +0 -0
  855. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_check_reproducible.py +0 -0
  856. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_claude_settings.py +0 -0
  857. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_clean_internal_cache.py +0 -0
  858. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cli_update_shards.py +0 -0
  859. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cliparse.py +0 -0
  860. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_codeql_analysis_key.py +0 -0
  861. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_cohort.py +0 -0
  862. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_command_reference_fresh.py +0 -0
  863. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_community_health_files.py +0 -0
  864. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_complete.py +0 -0
  865. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_complete_rc_block.py +0 -0
  866. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_config.py +0 -0
  867. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_content_dedupe.py +0 -0
  868. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_content_identity.py +0 -0
  869. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_crash_redaction.py +0 -0
  870. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dedup_trust.py +0 -0
  871. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_demo_index.py +0 -0
  872. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense.py +0 -0
  873. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  874. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_embed_dedupe.py +0 -0
  875. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_entry_reuse.py +0 -0
  876. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_entry_vectors.py +0 -0
  877. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_fallback.py +0 -0
  878. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_fix_hint.py +0 -0
  879. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_progress.py +0 -0
  880. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_quantized.py +0 -0
  881. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_ready_order.py +0 -0
  882. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shard_real_schema.py +0 -0
  883. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  884. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_shards.py +0 -0
  885. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_status.py +0 -0
  886. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_status_cheap.py +0 -0
  887. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dense_vector_dedupe.py +0 -0
  888. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_dependabot_config.py +0 -0
  889. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_deps.py +0 -0
  890. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_discovery.py +0 -0
  891. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_distill_merge.py +0 -0
  892. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_docs_pages_linked.py +0 -0
  893. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_docsite_chrome.py +0 -0
  894. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_doctor_output_polish.py +0 -0
  895. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_drift_hint.py +0 -0
  896. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_ed25519.py +0 -0
  897. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed.py +0 -0
  898. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed_local.py +0 -0
  899. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_embed_truncated_response.py +0 -0
  900. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_entry_key.py +0 -0
  901. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_errors_and_cli_table.py +0 -0
  902. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_baseline.py +0 -0
  903. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_corpus.py +0 -0
  904. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_faithfulness.py +0 -0
  905. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_gate.py +0 -0
  906. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_grading.py +0 -0
  907. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_metrics.py +0 -0
  908. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_stats_summary.py +0 -0
  909. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_tools.py +0 -0
  910. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_eval_tools_probe.py +0 -0
  911. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  912. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_faithfulness.py +0 -0
  913. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_frontmatter.py +0 -0
  914. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_fuzz_targets.py +0 -0
  915. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  916. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitleaks_config.py +0 -0
  917. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil.py +0 -0
  918. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil_lfs.py +0 -0
  919. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gitutil_sparse.py +0 -0
  920. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_gstack_coexistence.py +0 -0
  921. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_hook_settings_hosts.py +0 -0
  922. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_hookhost.py +0 -0
  923. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_imperative.py +0 -0
  924. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_import_budget.py +0 -0
  925. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_injectscan.py +0 -0
  926. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_install_permission_error.py +0 -0
  927. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_installscan.py +0 -0
  928. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_integrity.py +0 -0
  929. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_journal.py +0 -0
  930. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_jsonstate.py +0 -0
  931. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_langchain_packaging.py +0 -0
  932. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_launcher_python_floor.py +0 -0
  933. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_link_ownership.py +0 -0
  934. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_localembed.py +0 -0
  935. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_localembed_e2e.py +0 -0
  936. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_lockfile.py +0 -0
  937. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_logs.py +0 -0
  938. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_marketing_counts.py +0 -0
  939. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp.py +0 -0
  940. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp_install_scan.py +0 -0
  941. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcp_read.py +0 -0
  942. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcpdecl.py +0 -0
  943. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mcphost.py +0 -0
  944. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_measure_registry.py +0 -0
  945. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_minisign.py +0 -0
  946. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_hardening.py +0 -0
  947. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_shards.py +0 -0
  948. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutation_subfile_shards.py +0 -0
  949. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_mutmut_source_paths.py +0 -0
  950. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_near_duplicate_collapse.py +0 -0
  951. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_nethttp.py +0 -0
  952. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_normalize_sdist.py +0 -0
  953. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_output.py +0 -0
  954. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_page_budget.py +0 -0
  955. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_paths.py +0 -0
  956. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_perf_gate.py +0 -0
  957. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_confusions.py +0 -0
  958. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_injection.py +0 -0
  959. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_pkg_secrets.py +0 -0
  960. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_platform_pins.py +0 -0
  961. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_policy.py +0 -0
  962. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_post_deploy_smoke.py +0 -0
  963. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_project_mcp_sidecar.py +0 -0
  964. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_projectlock.py +0 -0
  965. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_provenance.py +0 -0
  966. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_publish_golden_dataset.py +0 -0
  967. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag_fastpath.py +0 -0
  968. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rag_fusion.py +0 -0
  969. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registries_fresh.py +0 -0
  970. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry.py +0 -0
  971. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_categories.py +0 -0
  972. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_control_chars.py +0 -0
  973. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_registry_parallel.py +0 -0
  974. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_release_guard.py +0 -0
  975. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_release_preflight.py +0 -0
  976. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_report.py +0 -0
  977. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_required_checks.py +0 -0
  978. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rerank_cache.py +0 -0
  979. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_resolve.py +0 -0
  980. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  981. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_roadmap_fresh.py +0 -0
  982. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_rules.py +0 -0
  983. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_scale_corpus.py +0 -0
  984. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_schedule_plist.py +0 -0
  985. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_scopes.py +0 -0
  986. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_secretscan.py +0 -0
  987. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_selfupdate.py +0 -0
  988. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_serve.py +0 -0
  989. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_serve_docs.py +0 -0
  990. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shard_plan.py +0 -0
  991. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards.py +0 -0
  992. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_incremental.py +0 -0
  993. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_ingest.py +0 -0
  994. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_shards_matrix.py +0 -0
  995. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_smoke_covers_every_command.py +0 -0
  996. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_spdx_headers.py +0 -0
  997. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_spin.py +0 -0
  998. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_stackprobe.py +0 -0
  999. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_staleness.py +0 -0
  1000. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_store.py +0 -0
  1001. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_store_materialize.py +0 -0
  1002. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_sync_blocked_links.py +0 -0
  1003. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1004. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_tap_pins.py +0 -0
  1005. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_token_parity.py +0 -0
  1006. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_toolchain_lock.py +0 -0
  1007. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_trustaudit.py +0 -0
  1008. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_typedvalue.py +0 -0
  1009. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_typosquat.py +0 -0
  1010. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_updatediff.py +0 -0
  1011. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_util.py +0 -0
  1012. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_version.py +0 -0
  1013. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_version_tags.py +0 -0
  1014. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_vex.py +0 -0
  1015. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_visual_harness_capture.py +0 -0
  1016. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_visual_harness_flags.py +0 -0
  1017. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_concurrency.py +0 -0
  1018. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1019. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1020. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflow_timeouts.py +0 -0
  1021. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_workflows.py +0 -0
  1022. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1023. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/a11y_check.mjs +0 -0
  1024. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/console_check.mjs +0 -0
  1025. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/package-lock.json +0 -0
  1026. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/tests/visual/package.json +0 -0
  1027. {boost_skill_cli-1.2.107 → boost_skill_cli-1.2.109}/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.107
3
+ Version: 1.2.109
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -217,8 +217,11 @@ refused rather than silently picking one.
217
217
 
218
218
  Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
219
219
  it fetches vectors for, and `boost update` skips a pinned tap rather than moving
220
- it out from under them (`--force` moves it anyway and drops the pin). When a tap
221
- does move, boost checks whether a newer shard exists for the new commit and
220
+ it out from under them (`--force` moves it anyway and drops the pin). A pinned
221
+ tap with *no* clone is not skipped — there is nothing to hold still, so it is
222
+ cloned and checked out at its pin; if that pin cannot be reached the clone is
223
+ removed rather than left on HEAD with a pin that no longer describes it, and
224
+ `compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
222
225
  imports it; if none does, it says so instead of leaving stale vectors looking
223
226
  fresh. `boost search` never refreshes taps behind your back, and never checks
224
227
  the manifest either — acting on that answer means moving taps and downloading
@@ -175,8 +175,11 @@ refused rather than silently picking one.
175
175
 
176
176
  Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
177
177
  it fetches vectors for, and `boost update` skips a pinned tap rather than moving
178
- it out from under them (`--force` moves it anyway and drops the pin). When a tap
179
- does move, boost checks whether a newer shard exists for the new commit and
178
+ it out from under them (`--force` moves it anyway and drops the pin). A pinned
179
+ tap with *no* clone is not skipped — there is nothing to hold still, so it is
180
+ cloned and checked out at its pin; if that pin cannot be reached the clone is
181
+ removed rather than left on HEAD with a pin that no longer describes it, and
182
+ `compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
180
183
  imports it; if none does, it says so instead of leaving stale vectors looking
181
184
  fresh. `boost search` never refreshes taps behind your back, and never checks
182
185
  the manifest either — acting on that answer means moving taps and downloading
@@ -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.107'
22
- __version_tuple__ = version_tuple = (1, 2, 107)
21
+ __version__ = version = '1.2.109'
22
+ __version_tuple__ = version_tuple = (1, 2, 109)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -370,9 +370,26 @@ def cmd_compact(argv) -> int:
370
370
  # other — nothing about `--reclone` consults the pin — so
371
371
  # without this the clone silently lands on HEAD while
372
372
  # config.json, the catalog cache and `boost taps` keep
373
- # naming the old commit. checkout_commit's own BoostError
374
- # (unresolvable pin) surfaces through the except below.
375
- gitutil.checkout_commit(tap.path, tap.pin)
373
+ # naming the old commit.
374
+ try:
375
+ gitutil.checkout_commit(tap.path, tap.pin)
376
+ except BoostError:
377
+ # `--reclone` removed the clone before making this
378
+ # one, so the pinned tree is already gone and there is
379
+ # nothing to fall back to. Letting the `except` below
380
+ # warn and carry on would leave a clone sitting on
381
+ # HEAD with the old pin still recorded beside it, and
382
+ # the next `update` reads `is_cloned` true plus a pin
383
+ # and answers "pinned at <sha> (skipped)" — forever,
384
+ # for a tree that is not on that commit. Remove it
385
+ # instead: `doctor` names a tap with no clone (`! tap
386
+ # <x> not cloned`, exit 1) and `update` re-clones it
387
+ # back onto its pin, so the tap ends in a state
388
+ # something reports and something repairs.
389
+ # `registry.update` takes the same exit on the same
390
+ # failure; this is the path that gets there first.
391
+ util.rmtree(tap.path)
392
+ raise
376
393
  # The re-clone can change what's on disk even when the byte
377
394
  # count doesn't (a pinned tap's tree is identical, but the
378
395
  # cache's recorded commit and mtime are now stale either way).
@@ -573,6 +573,35 @@ def cmd_reindex(argv):
573
573
  % (len(stats["reused"]),
574
574
  "" if len(stats["reused"]) == 1 else "s",
575
575
  ", ".join(stats["reindexed"]) or "none"), "muted"))
576
+ # The line that was missing. `boost catalog --import` restores catalogues
577
+ # with no repositories cloned, so every entry indexes from its frontmatter
578
+ # and the count above reads exactly as it does for a full corpus. Say what
579
+ # the index actually holds, in the share of TEXT rather than of documents —
580
+ # a document share reads 100% until it reads 0%.
581
+ #
582
+ # The share quoted is of the tokens THIS INDEX holds, and the sentence says
583
+ # so. It used to read "this index holds N% of the searchable text", which
584
+ # is a share of the corpus — a number nothing here can compute, because the
585
+ # bodies that were never read have no token count to compare against. Since
586
+ # a body runs about an order of magnitude longer than the metadata standing
587
+ # in for it, that reading overstated badly in exactly the partly-cloned case
588
+ # this warning exists for: a half-cloned index announced itself as 94%
589
+ # complete, and one unreadable file among a thousand rendered as "100.0% of
590
+ # the searchable text" inside a warning about missing text.
591
+ if stats["metadata_only"]:
592
+ share = rag.index_completeness() or {}
593
+ tokens = share.get("tokens") or 0
594
+ meta_tokens = share.get("metadata_only_tokens") or 0
595
+ # No tokens at all means nothing but metadata got as far as the index,
596
+ # so 100% is the honest reading rather than a division to protect.
597
+ meta_pct = (100.0 * meta_tokens / tokens) if tokens else 100.0
598
+ out.warn("%d of %d indexed items have no body text — their registries "
599
+ "are not cloned here, so only their catalog metadata was "
600
+ "indexed, and that metadata is %.1f%% of everything this "
601
+ "index holds. Clone them with `boost update`, then re-run "
602
+ "`boost reindex --force` to index their bodies."
603
+ % (stats["metadata_only"], stats["docs"], meta_pct),
604
+ wrap=True)
576
605
  if args.dense:
577
606
  if dense_stats is None:
578
607
  out.warn("dense index skipped — %s" % embed.fallback_note(),
@@ -51,7 +51,7 @@ from . import ai, catalog, config, frontmatter, gitutil, paths, registry, util
51
51
  # reach the entries spelling it that way. `build` reuses a tap only when
52
52
  # `_load_raw` returned an index, and a version mismatch returns None — so the
53
53
  # bump re-indexes every tap rather than half of them.
54
- INDEX_VERSION = 8
54
+ INDEX_VERSION = 9
55
55
  ENGINE = "bm25"
56
56
 
57
57
  # Chunking defaults (documented in docs/rag-architecture.md §4).
@@ -294,23 +294,51 @@ def entry_path(entry: dict, tap_paths: dict[str, Path] | None = None
294
294
  return Path(base) / rel
295
295
 
296
296
 
297
- def read_body(entry: dict, tap_paths: dict[str, Path] | None = None) -> str:
298
- """Return an item's searchable text: name + description + prose body.
299
-
300
- The frontmatter is stripped (reusing ``frontmatter.parse``); the name and
301
- description are prepended so short items keep keyword parity with the old
302
- search. Missing files degrade to just the catalog metadata.
297
+ def read_body_full(entry: dict, tap_paths: dict[str, Path] | None = None
298
+ ) -> tuple[str, bool]:
299
+ """Return ``(text, has_body)`` — the searchable text, and whether it is
300
+ actually the item's body rather than its catalog metadata standing in.
301
+
302
+ The degradation itself is unchanged and deliberate: a tap whose clone is
303
+ absent still contributes its name and description, because a smaller index
304
+ beats no index. What was missing is that it happened *silently*.
305
+ ``boost catalog --import`` restores catalogues with zero repositories
306
+ cloned, so every entry takes this path, and the index it produces is not
307
+ the full-content index the ``evals`` gate floors — it is a frontmatter
308
+ index wearing the same file name. Measured over 3,015 real entries,
309
+ indexed with and then without their clones: 3,041,326 tokens against
310
+ 182,507, or **6.0%** of the searchable text, with nothing in the output
311
+ saying so.
312
+
313
+ ``has_body`` is False in both degrade cases, and they are one answer on
314
+ purpose: whether the entry names no file or names one that cannot be read,
315
+ the document carries only metadata, which is the thing a caller needs to
316
+ know. :func:`build` counts them and :func:`index_completeness` reports the
317
+ share.
303
318
  """
304
319
  header = "%s\n%s" % (entry.get("name", ""), entry.get("description", ""))
305
320
  src = entry_path(entry, tap_paths)
306
321
  if src is None:
307
- return header.strip()
322
+ return header.strip(), False
308
323
  try:
309
324
  text = src.read_text(encoding="utf-8", errors="replace")
310
325
  except OSError:
311
- return header.strip()
326
+ return header.strip(), False
312
327
  _meta, body = frontmatter.parse(text)
313
- return ("%s\n%s" % (header, body)).strip()
328
+ return ("%s\n%s" % (header, body)).strip(), True
329
+
330
+
331
+ def read_body(entry: dict, tap_paths: dict[str, Path] | None = None) -> str:
332
+ """An item's searchable text: name + description + prose body.
333
+
334
+ The frontmatter is stripped (reusing ``frontmatter.parse``); the name and
335
+ description are prepended so short items keep keyword parity with the old
336
+ search. Missing files degrade to just the catalog metadata — ask
337
+ :func:`read_body_full` when you need to know that it happened. This
338
+ signature is load-bearing: ``dense`` and ``boost_langchain`` both call it
339
+ and several tests monkeypatch it.
340
+ """
341
+ return read_body_full(entry, tap_paths)[0]
314
342
 
315
343
 
316
344
  # ----------------------------------------------------------------- build
@@ -349,7 +377,7 @@ def _make_docs(entries: list[dict], tap_paths: dict[str, Path]) -> list[dict]:
349
377
  """
350
378
  docs: list[dict] = []
351
379
  for e in entries:
352
- body = read_body(e, tap_paths)
380
+ body, has_body = read_body_full(e, tap_paths)
353
381
  # The scanner already hashed this exact text (`catalog._content_digest`
354
382
  # assembles name + description + body, the same string `read_body`
355
383
  # returns), so an entry from a current cache hands the value over. The
@@ -365,6 +393,13 @@ def _make_docs(entries: list[dict], tap_paths: dict[str, Path]) -> list[dict]:
365
393
  docs.append({
366
394
  "n": e["name"], "t": e["tap"], "f": e["skill_md"], "h": digest,
367
395
  "k": e.get("kind", "skill"),
396
+ # Written only when the body is MISSING, so a fully cloned corpus
397
+ # pays nothing for the flag — which matters on an index measured at
398
+ # 43.7 MB. Absence therefore means "has a body", and that reading
399
+ # is only safe because INDEX_VERSION moved with it: `_load_raw`
400
+ # rejects any other version outright, so no document written before
401
+ # this change can be misread as complete.
402
+ **({"m": 1} if not has_body else {}),
368
403
  "c": 0, "l": sum(tf.values()),
369
404
  "snip": body[:SNIP_STORE].strip(), # windowed at retrieve time
370
405
  "tf": dict(tf), # noqa: FURB123 tf is a defaultdict; .copy() would keep the factory
@@ -428,7 +463,7 @@ def build(entries: list[dict] | None = None, force: bool = False) -> dict:
428
463
  if old is not None and reused_safe:
429
464
  docs = _kept_docs(old, reused_safe) + docs
430
465
 
431
- _save(docs, commits)
466
+ saved = _save(docs, commits)
432
467
  reindexed = sorted({e["tap"] for e in fresh})
433
468
  # `reindexed` names taps by their real name ("owner/repo"); `reused_safe`
434
469
  # is keyed by the safe name ("owner__repo") that `_tap_commits` uses to
@@ -446,6 +481,10 @@ def build(entries: list[dict] | None = None, force: bool = False) -> dict:
446
481
  "taps": len(commits),
447
482
  "reindexed": reindexed,
448
483
  "reused": reused,
484
+ # Counted over every document written, reused ones included — an
485
+ # incremental build that reported only what it re-indexed would say
486
+ # zero on the run after a bundle import.
487
+ "metadata_only": saved["metadata_only"],
449
488
  }
450
489
 
451
490
 
@@ -640,17 +679,38 @@ def _all_postings() -> dict[str, list[list[int]]]:
640
679
  return dict(out) # noqa: FURB123 out is a defaultdict; .copy() would keep the factory
641
680
 
642
681
 
643
- def _save(docs: list[dict], commits: dict[str, str]) -> None:
682
+ def _save(docs: list[dict], commits: dict[str, str]) -> dict:
683
+ """Persist the index and return the ``stats`` block it wrote.
684
+
685
+ Returning the stats rather than recomputing them in :func:`build` keeps one
686
+ definition of "how much of this index is real body text": the totals are
687
+ summed here, over the same documents that are being written.
688
+ """
644
689
  postings: dict[str, list[list[int]]] = defaultdict(list)
645
690
  meta_docs: list[dict] = []
646
691
  total_len = 0
692
+ metadata_only = 0
693
+ metadata_only_len = 0
647
694
  for doc_id, d in enumerate(docs):
648
695
  for term, tf in d["tf"].items():
649
696
  postings[term].append([doc_id, tf])
650
697
  total_len += d["l"]
698
+ # `.get`, because a document reused from the previous index carries
699
+ # whatever it was written with, and a hand-built one (several tests)
700
+ # carries nothing. Absence is "has a body" — see `_make_docs`.
701
+ bodyless = bool(d.get("m"))
702
+ if bodyless:
703
+ metadata_only += 1
704
+ metadata_only_len += d["l"]
651
705
  meta_docs.append({"n": d["n"], "t": d["t"], "f": d["f"], "k": d["k"],
652
706
  "h": d.get("h", ""),
707
+ **({"m": 1} if bodyless else {}),
653
708
  "c": d["c"], "l": d["l"], "snip": d["snip"]})
709
+ stats: dict = {"docs": len(docs),
710
+ "avg_len": (total_len / len(docs)) if docs else 0.0,
711
+ "tokens": total_len,
712
+ "metadata_only": metadata_only,
713
+ "metadata_only_tokens": metadata_only_len}
654
714
  payload = {
655
715
  "version": INDEX_VERSION,
656
716
  "engine": ENGINE,
@@ -658,8 +718,7 @@ def _save(docs: list[dict], commits: dict[str, str]) -> None:
658
718
  "commits": commits,
659
719
  "params": {"chunk_chars": CHUNK_CHARS, "overlap": OVERLAP,
660
720
  "k1": K1, "b": B},
661
- "stats": {"docs": len(docs),
662
- "avg_len": (total_len / len(docs)) if docs else 0.0},
721
+ "stats": stats,
663
722
  "docs": meta_docs,
664
723
  }
665
724
  paths.ensure_dirs()
@@ -671,6 +730,7 @@ def _save(docs: list[dict], commits: dict[str, str]) -> None:
671
730
  # Drop the mtime-keyed cache so a reindex is visible to an immediately
672
731
  # following query even when the filesystem mtime granularity is coarse.
673
732
  _CACHE.pop(str(p), None)
733
+ return stats
674
734
 
675
735
 
676
736
  def _now() -> str:
@@ -718,6 +778,54 @@ def ready() -> bool:
718
778
  return bool(raw and raw.get("docs") and postings_path().exists())
719
779
 
720
780
 
781
+ def index_completeness() -> dict | None:
782
+ """How much of the index on disk is the corpus, and how much is its labels.
783
+
784
+ Returns ``None`` when there is no readable index — the same answer
785
+ :func:`_load_raw` gives, rather than a zeroed dict, because "no index" and
786
+ "an index carrying no bodies" are different situations with different
787
+ remedies and must not render alike.
788
+
789
+ ``body_share`` is a share of **tokens**, not of documents, and that is the
790
+ whole point. An entry whose body is missing still produces a document, so a
791
+ document share sits at 1.0 until the moment it drops to 0.0 and tells a
792
+ partially-cloned machine nothing.
793
+
794
+ It describes **this index**, not the corpus behind it: the fraction of the
795
+ tokens actually indexed that came from a document carrying a body. The
796
+ share of the *corpus's* text that made it in is a different number, and it
797
+ is not computable here — the bodies that were never read have no token
798
+ count to compare against, by construction. An earlier version of this
799
+ docstring claimed the value "reproduces the measurement the roadmap card
800
+ made by hand ... or 6.0% of the searchable text". It does not: for that
801
+ input every token indexed came from metadata, so it returns **0.0**. The
802
+ two move in opposite directions, and because a body runs about an order of
803
+ magnitude longer than the metadata standing in for it, presenting this as
804
+ corpus completeness overstates a half-cloned machine badly. Callers must
805
+ say which share they are quoting; :func:`cmd_reindex` quotes
806
+ ``metadata_only_tokens / tokens`` and names it.
807
+
808
+ Reads the persisted totals rather than re-deriving them, so asking is a
809
+ stat plus a cached parse — nothing walks the corpus.
810
+ """
811
+ raw = _load_raw()
812
+ if raw is None:
813
+ return None
814
+ stats = raw.get("stats") or {}
815
+ tokens = int(stats.get("tokens") or 0)
816
+ metadata_only_tokens = int(stats.get("metadata_only_tokens") or 0)
817
+ return {
818
+ "docs": int(stats.get("docs") or 0),
819
+ "metadata_only": int(stats.get("metadata_only") or 0),
820
+ "tokens": tokens,
821
+ "metadata_only_tokens": metadata_only_tokens,
822
+ # Guarded on `tokens`, not on `docs`: an index of documents that all
823
+ # tokenized to nothing would divide by zero, and 0.0 is the honest
824
+ # answer there — no body text is present.
825
+ "body_share": (1.0 - metadata_only_tokens / tokens) if tokens else 0.0,
826
+ }
827
+
828
+
721
829
  def stale() -> bool:
722
830
  """True when the index no longer reflects the taps on disk.
723
831
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.107
3
+ Version: 1.2.109
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -217,8 +217,11 @@ refused rather than silently picking one.
217
217
 
218
218
  Because vectors are keyed to a registry's commit, `quickstart` **pins** each tap
219
219
  it fetches vectors for, and `boost update` skips a pinned tap rather than moving
220
- it out from under them (`--force` moves it anyway and drops the pin). When a tap
221
- does move, boost checks whether a newer shard exists for the new commit and
220
+ it out from under them (`--force` moves it anyway and drops the pin). A pinned
221
+ tap with *no* clone is not skipped — there is nothing to hold still, so it is
222
+ cloned and checked out at its pin; if that pin cannot be reached the clone is
223
+ removed rather than left on HEAD with a pin that no longer describes it, and
224
+ `compact --reclone` follows the same rule. When a tap does move, boost checks whether a newer shard exists for the new commit and
222
225
  imports it; if none does, it says so instead of leaving stale vectors looking
223
226
  fresh. `boost search` never refreshes taps behind your back, and never checks
224
227
  the manifest either — acting on that answer means moving taps and downloading
@@ -207,6 +207,7 @@ docs/roadmap/items/BOOST-D24.md
207
207
  docs/roadmap/items/BOOST-D25.md
208
208
  docs/roadmap/items/BOOST-D26.md
209
209
  docs/roadmap/items/BOOST-D27.md
210
+ docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md
210
211
  docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md
211
212
  docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md
212
213
  docs/roadmap/items/actionlint-skips-shellcheck-silently.md
@@ -357,6 +358,7 @@ docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md
357
358
  docs/roadmap/items/cold-search-reads-the-whole-catalogue.md
358
359
  docs/roadmap/items/command-carousel-page.md
359
360
  docs/roadmap/items/command-reference-docs-site.md
361
+ docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md
360
362
  docs/roadmap/items/completions-complete-only-command-names.md
361
363
  docs/roadmap/items/completions-install-could-eat-your-rc-file.md
362
364
  docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
@@ -455,6 +457,7 @@ docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md
455
457
  docs/roadmap/items/layering-guard-import-linter.md
456
458
  docs/roadmap/items/license-compliance-scanning.md
457
459
  docs/roadmap/items/lighthouse-ci-on-the-pages-site.md
460
+ docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md
458
461
  docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md
459
462
  docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md
460
463
  docs/roadmap/items/list-rules-and-workflows.md
@@ -548,10 +551,12 @@ docs/roadmap/items/ranx-significance-monitor.md
548
551
  docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md
549
552
  docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md
550
553
  docs/roadmap/items/readme-prune-and-search-guide.md
554
+ docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md
551
555
  docs/roadmap/items/recommend-recomputes-its-columns-per-row.md
552
556
  docs/roadmap/items/reconcile-the-theme-drift.md
553
557
  docs/roadmap/items/refresh-strands-the-natural-set-baseline.md
554
558
  docs/roadmap/items/refresh-the-marketing-surface.md
559
+ docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md
555
560
  docs/roadmap/items/rel-time-tests-race-the-wall-clock.md
556
561
  docs/roadmap/items/release-verifies-the-wrong-commit.md
557
562
  docs/roadmap/items/relicence-apache-2.md
@@ -624,6 +629,7 @@ docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md
624
629
  docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md
625
630
  docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md
626
631
  docs/roadmap/items/taps-check-out-freight-they-never-index.md
632
+ docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md
627
633
  docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md
628
634
  docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md
629
635
  docs/roadmap/items/the-shard-job-that-could-not-finish.md
@@ -956,6 +962,7 @@ tests/unit/test_projectlock.py
956
962
  tests/unit/test_provenance.py
957
963
  tests/unit/test_publish_golden_dataset.py
958
964
  tests/unit/test_rag.py
965
+ tests/unit/test_rag_completeness.py
959
966
  tests/unit/test_rag_fastpath.py
960
967
  tests/unit/test_rag_fusion.py
961
968
  tests/unit/test_registries_fresh.py
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: a-new-shipped-card-always-404s-its-own-write-up-link
3
+ board: code
4
+ section: pipeline
5
+ status: planned
6
+ category: CI · Bug
7
+ complexity: S
8
+ impact: Medium
9
+ wow: 3
10
+ note: the links check goes red on every correct PR that files a new card as shipped, and green again on merge
11
+ order: 313
12
+ owner:
13
+ pr:
14
+ title: "A new card filed as <code>shipped</code> always 404s its own write-up link"
15
+ ---
16
+ <code>build_roadmap.py</code> renders a settled card's body as a link to the item file on
17
+ <b><code>main</code></b> &mdash; <code>ITEMS_URL</code> (line 206) is
18
+ <code>https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items</code>, and
19
+ <code>_body_html</code> emits it for any status in <code>_SETTLED</code>. The
20
+ <code>links</code> job runs on <code>pull_request</code> over
21
+ <code>docs/*.html</code>. So a PR that files a <em>new</em> card at
22
+ <code>status: shipped</code> renders a link to a file that does not exist on
23
+ <code>main</code> yet, and lychee rejects it 404 &mdash; on a PR where nothing is wrong.
24
+ It goes green by itself the moment the PR merges.
25
+
26
+ Observed on PR <code>#845</code>, whose 22 required checks were all green:
27
+ <em>&ldquo;[404] &lt;&hellip;/blob/main/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md&gt; (at 4125:54) | Rejected status code: 404 Not Found&rdquo;</em>.
28
+ The mechanism is deterministic from the three sources above rather than inferred from that
29
+ one run: any new item file whose first committed status is settled hits it. Cards that were
30
+ already on <code>main</code> and merely change status do not, which is why this went
31
+ unnoticed &mdash; the usual shape is claim-then-ship across two PRs.
32
+
33
+ It matters because the remedy people reach for is the wrong one: either the card gets
34
+ filed at a status that misdescribes it to keep CI quiet, or a check that is right about
35
+ everything else gets learned as noise. <code>links</code> is advisory rather than
36
+ required, which caps the damage and is also what lets it rot unnoticed. Options, cheapest
37
+ first: resolve the link against the <em>head</em> ref in CI
38
+ (<code>GITHUB_HEAD_REF</code>) and <code>main</code> elsewhere; or let lychee treat a
39
+ <code>blob/main</code> URL whose path exists in the working tree as satisfied; or link the
40
+ raw file relatively and accept that GitHub Pages serves <code>.md</code> as a download
41
+ rather than rendered Markdown &mdash; which is the reason the absolute URL was chosen, so
42
+ that one is a trade, not a fix.
@@ -2,12 +2,12 @@
2
2
  id: audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co
3
3
  board: code
4
4
  section: internals
5
- status: inflight
5
+ status: shipped
6
6
  category: Safety · Bug
7
7
  complexity: M
8
8
  impact: High
9
9
  wow: 2
10
- note: compact --reclone moved a pin to HEAD and printed "every tap is already compact"
10
+ note: three broken paths, three PRs claiming it, and one residual that took a second item to finish
11
11
  order: 216
12
12
  owner: loop/tap-pin-integrity
13
13
  pr: 725
@@ -43,3 +43,14 @@ size-only report at <code>configuration.py:288-292</code> is what hid the move.
43
43
  pinned-tap paragraph (lines 176-178) and its <code>compact --reclone</code> line (274); regenerate
44
44
  <code>docs/commands.html</code> only if the <code>--force</code> help string changes. Found by the
45
45
  2026-08 CLI audit (cluster <code>pinned-tap-integrity</code>); repro in the audit log.
46
+
47
+
48
+ <b>Closed 2026-09-10.</b> <code>#725</code> landed the <code>registry.update</code> half
49
+ (both the <code>--force</code> unpin and the re-clone of a pinned tap whose clone had
50
+ vanished, with <code>tests/unit/test_tap_pins.py</code> covering each). The
51
+ <code>compact --reclone</code> half landed in two pieces: the pin checkout, the
52
+ <code>catalog.rebuild_tap</code> and the size-independent report came with
53
+ <code>#725</code>; the unresolvable-pin guard was left behind when three PRs claimed this
54
+ one item and only one could merge, and is its own card &mdash;
55
+ <code>reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin</code>. All three paths
56
+ named above are now closed, and README's pinned-tap paragraph says what the code does.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: compact-answers-a-named-tap-with-a-global-all-clear
3
+ board: code
4
+ section: internals
5
+ status: planned
6
+ category: CLI · Bug
7
+ complexity: S
8
+ impact: Medium
9
+ wow: 2
10
+ note: boost compact &lt;tap&gt; on an uncloned tap prints a green "no cloned taps to compact" and exits 0
11
+ order: 311
12
+ owner:
13
+ pr:
14
+ title: "<code>compact &lt;tap&gt;</code> answers a question about one tap with a global all-clear"
15
+ ---
16
+ <code>cmd_compact</code> resolves its named taps and then filters
17
+ (<code>taps = [t for t in taps if t.is_cloned]</code>). A tap that is configured but has
18
+ no clone falls out of that list silently, so the empty-list branch fires and prints
19
+ <em>&ldquo;&#10003; no cloned taps to compact&rdquo;</em> with exit 0 &mdash; a green,
20
+ plural, global-sounding all-clear in answer to a question about one specific tap, which
21
+ it never names.
22
+
23
+ Reproduced on a scratch <code>BOOST_HOME</code>: tap a repo, delete its clone directory,
24
+ then <code>boost compact &lt;that-tap&gt;</code> &rarr; <code>rc=0</code>,
25
+ <em>&ldquo;&#10003; no cloned taps to compact&rdquo;</em>. Meanwhile
26
+ <code>boost doctor</code> exits 1 on the same machine and says
27
+ <em>&ldquo;! tap &lt;x&gt; not cloned &mdash; run <code>boost update</code>&rdquo;</em>,
28
+ so the information exists and this command is the one that withholds it.
29
+
30
+ This contradicts the convention <code>registry.update</code> states in its own docstring:
31
+ <em>&ldquo;A named tap still raises. <code>boost update sometap</code> is a request about
32
+ that one tap, so its failure is the answer to the question asked.&rdquo;</em> The sweep
33
+ form is right to stay quiet; the named form is not. Fix: when <code>args.tap</code> named
34
+ taps and the filter dropped some, say which and why, and point at
35
+ <code>boost update</code> the way <code>doctor</code> does &mdash; and do not report
36
+ success for a tap nothing was done to.
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: lighthouse-flips-on-byte-identical-input
3
+ board: code
4
+ section: docsite
5
+ status: planned
6
+ category: CI · Bug
7
+ complexity: M
8
+ impact: High
9
+ wow: 4
10
+ note: the same roadmap.html scored 0.78 and passed, then 0.78 and failed — the gate now decides on runner noise
11
+ order: 314
12
+ owner:
13
+ pr:
14
+ title: The performance gate flips on byte-identical input
15
+ ---
16
+ <code>lighthouse</code> asserts <code>categories.performance &ge; 0.80</code> on
17
+ <code>docs/roadmap.html</code>. That page now scores <b>0.76&ndash;0.78</b>, so the
18
+ assertion is decided by whichever way runner timing falls, not by the page. <b>Two commits
19
+ on one branch, whose <code>docs/roadmap.html</code> is byte-identical
20
+ (<code>sha256 42bdc4f7&hellip;</code>, 784,560&nbsp;bytes both), got opposite verdicts</b>
21
+ &mdash; <code>c75f4a9f</code> failed, <code>037a2468</code> passed, 60 seconds apart. The
22
+ same oscillation is visible on other branches in the run history:
23
+ <code>loop/missing-json</code> failed at <code>2a5231cb</code> and passed at
24
+ <code>1c949b7d</code>; <code>loop/audit-retrieval-search-onboarding</code> failed twice
25
+ then passed.
26
+
27
+ Three earlier cards closed real findings here &mdash;
28
+ <code>lighthouse-ci-on-the-pages-site</code> installed the budgets,
29
+ <code>lighthouse-scored-a-page-nobody-is-served</code> fixed a harness sending 3.27x the
30
+ bytes Pages sends, and <code>roadmap-page-weight-grows-without-bound</code> found it was
31
+ <em>never the bytes</em> but 705&nbsp;ms of <code>styleLayout</code>, and bought headroom
32
+ by letting 55.5% of elements skip it. That headroom has since been spent: the board was
33
+ 407.6&nbsp;KB when that card was written and is <b>787&nbsp;KB</b> now. So this is not a
34
+ re-file of any of them &mdash; it is what happens after their fix, and the symptom is
35
+ different in kind: a gate that cannot decide rather than a page that is slow.
36
+
37
+ Why it matters more than two hundredths of a score: a check that fails on input it just
38
+ passed is a check people learn to re-run rather than read, and the next real regression
39
+ arrives looking exactly like the last false one. <code>lighthouse</code> is advisory, not
40
+ required, which is what has let it drift this far unnoticed. Fix &mdash; decide which
41
+ guarantee is wanted, then make the gate express it: assert the median of the three runs
42
+ rather than the worst, or floor at a value the page actually clears and put a separate
43
+ bound on the growth that is eating the margin, so the number that moves is the one being
44
+ regressed. Lowering the floor alone just relocates the coin flip.
@@ -2,13 +2,14 @@
2
2
  id: publish-the-keyword-index
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: inflight
6
6
  category: Search · Performance
7
7
  complexity: L
8
8
  impact: High
9
9
  wow: 4
10
10
  note: every machine rebuilds 697 MB of index for a corpus that is byte-identical on all of them
11
11
  order: 99
12
+ owner: loop/keyword-index-completeness
12
13
  title: publish the keyword index the way vectors are published
13
14
  ---
14
15
  Dense vectors are built once in CI and downloaded. The BM25 index is not:
@@ -66,3 +67,27 @@ as a match.
66
67
  <a href="#shrink-the-published-index">shrink-the-published-index</a>. This card should not ship
67
68
  until that one has an answer, because publishing 697&nbsp;MB per refresh to save 65&nbsp;s of CPU
68
69
  is not obviously the right trade, and at the compressed sizes measured there it clearly is.
70
+
71
+ <b>Partly landed, and deliberately still <code>inflight</code> — 2026-09-10.</b> What shipped is
72
+ the half that needed no size decision: <b>the index now records what it is</b>.
73
+ <code>read_body_full</code> returns the text and whether it contains the item's body,
74
+ <code>build()</code> reports <code>metadata_only</code> over every document written (reused ones
75
+ included, or an incremental build reports zero on the run after a bundle import),
76
+ <code>index_completeness()</code> reads the share back off disk, and <code>boost reindex</code>
77
+ says it out loud instead of reporting the same confident count for a 6% index. The share is of
78
+ <b>tokens</b>, not documents: a bodyless entry still produces a document, so a document share sits
79
+ at 1.0 until it drops to 0.0. <code>INDEX_VERSION</code> moved to <b>9</b>, because the flag is
80
+ written only when a body is missing and absence may only be read as "complete" once no older
81
+ document can survive.
82
+
83
+ <b>What did NOT land:</b> <code>rag.export_shard</code> / <code>rag.import_shard</code>, the
84
+ per-registry assets, and the <code>manifest.json</code> rows — the publishing pipeline itself.
85
+ That half is what the payload-size question governs, and
86
+ <a href="#shrink-the-published-index">shrink-the-published-index</a> still has no answer: its claim
87
+ is <b>stale</b>, not active — branch <code>loop/shrink-postings-index</code> was last touched
88
+ 2026-09-02, carries one commit, has no pull request, and is 394 commits behind
89
+ <code>main</code>. Someone should un-claim it. One structural finding for whoever takes it: doc
90
+ ids are positional (<code>_save</code> does <code>enumerate(docs)</code>), so the card's
91
+ "merge by offsetting <code>doc_id</code>" is sound as written — and the shard format should
92
+ serialize <em>logical</em> postings (digest → term → tf) rather than the SQLite layout, so the
93
+ interning that branch was attempting cannot invalidate a published shard.