boost-skill-cli 1.2.75__tar.gz → 1.2.77__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 (955) hide show
  1. {boost_skill_cli-1.2.75/boost_skill_cli.egg-info → boost_skill_cli-1.2.77}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/_common.py +29 -1
  4. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/intelligence.py +30 -5
  5. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/quality.py +30 -14
  6. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/safety.py +12 -1
  7. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/lockfile.py +36 -0
  8. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/provenance.py +12 -0
  9. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/store.py +16 -0
  10. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  11. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  12. boost_skill_cli-1.2.77/docs/demo.gif +0 -0
  13. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-catalog-findings.md +1 -1
  14. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +3 -3
  15. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +3 -3
  16. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +3 -3
  17. boost_skill_cli-1.2.77/docs/roadmap/items/publish-the-keyword-index.md +68 -0
  18. boost_skill_cli-1.2.77/docs/roadmap/items/shrink-the-published-index.md +60 -0
  19. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap.html +134 -8
  20. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/security-design.md +6 -0
  21. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/baseline.json +7 -7
  22. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/taps-scale.txt +10 -10
  23. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/taps.txt +10 -10
  24. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_intelligence.py +7 -1
  25. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_quality.py +82 -0
  26. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_tap_signing.py +35 -0
  27. boost_skill_cli-1.2.77/tests/unit/test_distill_merge.py +113 -0
  28. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_lockfile.py +48 -0
  29. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_provenance.py +20 -2
  30. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_scale_corpus.py +73 -0
  31. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_store.py +28 -0
  32. boost_skill_cli-1.2.75/docs/demo.gif +0 -0
  33. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.gitattributes +0 -0
  34. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.gitignore +0 -0
  35. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.gitleaks.toml +0 -0
  36. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.htmlvalidate.json +0 -0
  37. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.lighthouserc.json +0 -0
  38. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.lycheeignore +0 -0
  39. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.markdownlint-cli2.jsonc +0 -0
  40. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.pre-commit-config.yaml +0 -0
  41. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.stylelintrc.json +0 -0
  42. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.vale/styles/boost/AIWriting.yml +0 -0
  43. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.vale/styles/boost/Terminology.yml +0 -0
  44. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  45. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/.vale.ini +0 -0
  46. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/CLAUDE.md +0 -0
  47. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/CODE_OF_CONDUCT.md +0 -0
  48. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/CONTRIBUTING.md +0 -0
  49. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/DCO +0 -0
  50. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/GOVERNANCE.md +0 -0
  51. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/LICENSE +0 -0
  52. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/MAINTAINERS.md +0 -0
  53. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/MANIFEST.in +0 -0
  54. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/Makefile +0 -0
  55. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/README.md +0 -0
  56. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/SECURITY.md +0 -0
  57. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/SUPPORT.md +0 -0
  58. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost +0 -0
  59. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/__init__.py +0 -0
  60. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/__main__.py +0 -0
  61. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/cli.py +0 -0
  62. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/cliparse.py +0 -0
  63. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/__init__.py +0 -0
  64. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/bmad.py +0 -0
  65. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/configuration.py +0 -0
  66. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/discovery.py +0 -0
  67. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/hooks.py +0 -0
  68. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/info.py +0 -0
  69. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/pkg.py +0 -0
  70. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/quickstart.py +0 -0
  71. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/run.py +0 -0
  72. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/taps.py +0 -0
  73. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/commands/team.py +0 -0
  74. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/__init__.py +0 -0
  75. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/adapters.py +0 -0
  76. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/agents.py +0 -0
  77. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/ai.py +0 -0
  78. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/aihost.py +0 -0
  79. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/bmad.py +0 -0
  80. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/bootstrap.py +0 -0
  81. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/browse.py +0 -0
  82. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/builtin.py +0 -0
  83. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/capabilities.py +0 -0
  84. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/catalog.py +0 -0
  85. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/catalogbundle.py +0 -0
  86. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/chat.py +0 -0
  87. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/claude_settings.py +0 -0
  88. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/complete.py +0 -0
  89. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/config.py +0 -0
  90. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/dense.py +0 -0
  91. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/ed25519.py +0 -0
  92. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/embed.py +0 -0
  93. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/faithfulness.py +0 -0
  94. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/frontmatter.py +0 -0
  95. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/gitutil.py +0 -0
  96. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/hookhost.py +0 -0
  97. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/imperative.py +0 -0
  98. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/injectscan.py +0 -0
  99. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/installscan.py +0 -0
  100. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/integrity.py +0 -0
  101. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/journal.py +0 -0
  102. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/localembed.py +0 -0
  103. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/logs.py +0 -0
  104. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/mcp.py +0 -0
  105. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/mcpdecl.py +0 -0
  106. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/mcphost.py +0 -0
  107. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/minisign.py +0 -0
  108. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/nethttp.py +0 -0
  109. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/output.py +0 -0
  110. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/paths.py +0 -0
  111. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/policy.py +0 -0
  112. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/projectlock.py +0 -0
  113. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/rag.py +0 -0
  114. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/registry.py +0 -0
  115. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/resolve.py +0 -0
  116. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/rules.py +0 -0
  117. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/scopes.py +0 -0
  118. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/secretscan.py +0 -0
  119. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/selfupdate.py +0 -0
  120. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/serve.py +0 -0
  121. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/shards.py +0 -0
  122. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/stackprobe.py +0 -0
  123. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/staleness.py +0 -0
  124. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/trustaudit.py +0 -0
  125. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/typosquat.py +0 -0
  126. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/updatediff.py +0 -0
  127. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/util.py +0 -0
  128. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/core/workflows.py +0 -0
  129. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/data/registries.json +0 -0
  130. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/data/rules/boost-first.mdc +0 -0
  131. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/errors.py +0 -0
  132. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_cli/spin.py +0 -0
  133. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/__init__.py +0 -0
  134. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/_compat.py +0 -0
  135. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/graph.py +0 -0
  136. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/loader.py +0 -0
  137. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/py.typed +0 -0
  138. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_langchain/retriever.py +0 -0
  139. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  140. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  141. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_skill_cli.egg-info/requires.txt +0 -0
  142. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/boost_skill_cli.egg-info/top_level.txt +0 -0
  143. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/codecov.yml +0 -0
  144. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/.claude/settings.local.json +0 -0
  145. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/DEBUGGING.md +0 -0
  146. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/adapters.html +0 -0
  147. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/architecture/README.md +0 -0
  148. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/architecture/c4-components-core.md +0 -0
  149. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/architecture/c4-containers.md +0 -0
  150. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/architecture/c4-context.md +0 -0
  151. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/architecture/c4-dynamic-install.md +0 -0
  152. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/bmad.md +0 -0
  153. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/distill.gif +0 -0
  154. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/doctor.gif +0 -0
  155. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/explain.gif +0 -0
  156. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/hooks.gif +0 -0
  157. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/install.gif +0 -0
  158. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/pulse.gif +0 -0
  159. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/search.gif +0 -0
  160. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/gifs/tap.gif +0 -0
  161. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/distill.tape +0 -0
  162. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/doctor.tape +0 -0
  163. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/explain.tape +0 -0
  164. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/hooks.tape +0 -0
  165. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/install.tape +0 -0
  166. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/pulse.tape +0 -0
  167. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/search.tape +0 -0
  168. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel/tapes/tap.tape +0 -0
  169. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/carousel.html +0 -0
  170. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/chat.html +0 -0
  171. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/code-review.md +0 -0
  172. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/commands.html +0 -0
  173. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/commit-audit.md +0 -0
  174. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/demo-index.json +0 -0
  175. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/demo.html +0 -0
  176. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/demo.tape +0 -0
  177. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/dependencies.md +0 -0
  178. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/design-roadmap.html +0 -0
  179. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/eval-latest.json +0 -0
  180. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/eval.html +0 -0
  181. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/index.html +0 -0
  182. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/langchain.html +0 -0
  183. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/mcp-hub.html +0 -0
  184. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/openssf-badge.md +0 -0
  185. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/openssf-playbook.md +0 -0
  186. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/rag-architecture.md +0 -0
  187. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D01.md +0 -0
  188. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D02.md +0 -0
  189. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D03.md +0 -0
  190. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D04.md +0 -0
  191. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D05.md +0 -0
  192. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D06.md +0 -0
  193. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D07.md +0 -0
  194. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D08.md +0 -0
  195. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D09.md +0 -0
  196. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D10.md +0 -0
  197. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D11.md +0 -0
  198. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D12.md +0 -0
  199. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D13.md +0 -0
  200. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D14.md +0 -0
  201. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D15.md +0 -0
  202. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D16.md +0 -0
  203. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D17.md +0 -0
  204. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D18.md +0 -0
  205. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D19.md +0 -0
  206. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D20.md +0 -0
  207. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D21.md +0 -0
  208. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D22.md +0 -0
  209. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D23.md +0 -0
  210. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D24.md +0 -0
  211. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D25.md +0 -0
  212. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D26.md +0 -0
  213. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/BOOST-D27.md +0 -0
  214. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  215. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  216. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  217. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  218. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  219. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  220. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  221. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  222. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  223. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  224. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  225. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  226. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  227. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  228. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  229. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-attest-findings.md +0 -0
  230. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-audit-findings.md +0 -0
  231. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  232. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-browse-findings.md +0 -0
  233. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  234. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  235. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  236. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-chat-findings.md +0 -0
  237. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  238. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  239. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  240. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-completions-findings.md +0 -0
  241. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-config-findings.md +0 -0
  242. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  243. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-context-findings.md +0 -0
  244. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  245. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  246. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-create-findings.md +0 -0
  247. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  248. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-deps-findings.md +0 -0
  249. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-discover-findings.md +0 -0
  250. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  251. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-drift-findings.md +0 -0
  252. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  253. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-edit-findings.md +0 -0
  254. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  255. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-explain-findings.md +0 -0
  256. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-export-findings.md +0 -0
  257. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  258. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  259. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  260. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  261. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  262. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-health-findings.md +0 -0
  263. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  264. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  265. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-import-findings.md +0 -0
  266. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-index-findings.md +0 -0
  267. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  268. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  269. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-install-findings.md +0 -0
  270. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  271. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  272. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-lint-findings.md +0 -0
  273. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-log-findings.md +0 -0
  274. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  275. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  276. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  277. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  278. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  279. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  280. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  281. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  282. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  283. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  284. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  285. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-policy-findings.md +0 -0
  286. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-preview-findings.md +0 -0
  287. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-profile-findings.md +0 -0
  288. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  289. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  290. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  291. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  292. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  293. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  294. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  295. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  296. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  297. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-replay-findings.md +0 -0
  298. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-root-findings.md +0 -0
  299. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  300. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-run-findings.md +0 -0
  301. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  302. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-search-findings.md +0 -0
  303. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  304. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  305. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  306. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  307. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  308. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  309. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  310. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  311. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-sync-findings.md +0 -0
  312. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-tag-findings.md +0 -0
  313. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  314. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-tap-findings.md +0 -0
  315. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-taps-findings.md +0 -0
  316. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  317. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-test-findings.md +0 -0
  318. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-trust-findings.md +0 -0
  319. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  320. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-untap-findings.md +0 -0
  321. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-update-findings.md +0 -0
  322. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-verify-findings.md +0 -0
  323. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/audit-who-findings.md +0 -0
  324. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  325. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  326. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  327. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  328. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  329. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  330. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/boost-first-rule.md +0 -0
  331. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  332. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  333. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/branch-current-gate.md +0 -0
  334. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  335. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  336. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  337. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  338. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  339. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  340. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  341. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  342. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  343. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  344. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  345. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  346. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  347. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  348. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  349. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  350. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  351. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/cli-command-audit.md +0 -0
  352. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  353. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  354. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  355. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  356. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/command-carousel-page.md +0 -0
  357. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  358. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  359. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  360. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  361. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  362. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  363. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  364. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  365. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  366. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  367. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  368. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  369. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  370. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  371. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  372. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  373. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  374. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  375. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  376. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  377. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  378. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  379. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  380. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  381. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  382. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  383. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  384. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  385. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  386. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  387. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  388. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  389. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  390. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  391. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  392. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  393. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  394. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  395. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  396. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  397. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  398. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  399. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  400. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  401. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  402. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  403. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  404. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  405. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  406. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  407. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  408. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  409. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  410. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  411. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/github-community-health-files.md +0 -0
  412. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  413. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  414. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  415. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  416. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  417. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  418. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  419. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  420. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  421. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  422. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  423. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  424. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  425. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  426. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  427. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  428. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  429. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  430. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  431. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  432. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  433. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  434. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  435. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  436. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  437. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  438. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  439. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  440. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  441. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  442. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  443. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  444. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  445. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  446. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  447. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  448. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  449. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  450. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  451. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  452. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  453. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  454. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  455. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  456. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  457. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  458. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  459. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  460. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  461. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  462. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  463. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  464. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  465. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  466. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  467. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  468. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  469. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  470. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  471. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  472. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  473. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  474. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  475. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  476. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  477. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  478. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  479. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  480. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  481. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  482. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  483. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  484. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  485. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  486. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  487. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  488. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  489. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  490. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  491. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/openssf-playbook.md +0 -0
  492. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/openssf-silver.md +0 -0
  493. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  494. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  495. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  496. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  497. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  498. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  499. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  500. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  501. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  502. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  503. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  504. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  505. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  506. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  507. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  508. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  509. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  510. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  511. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  512. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  513. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  514. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  515. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  516. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  517. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  518. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  519. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  520. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  521. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  522. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  523. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  524. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  525. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/relicence-apache-2.md +0 -0
  526. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  527. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  528. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  529. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  530. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  531. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  532. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  533. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  534. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  535. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  536. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  537. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  538. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  539. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  540. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  541. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  542. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  543. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  544. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  545. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  546. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  547. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  548. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  549. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  550. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  551. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  552. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  553. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  554. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  555. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  556. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  557. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  558. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  559. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  560. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  561. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  562. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  563. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  564. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  565. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  566. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  567. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  568. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  569. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  570. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  571. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  572. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  573. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  574. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  575. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  576. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  577. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  578. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  579. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  580. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  581. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  582. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  583. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  584. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  585. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  586. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  587. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  588. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  589. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  590. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  591. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  592. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  593. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  594. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  595. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  596. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  597. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  598. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  599. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  600. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  601. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  602. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  603. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  604. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  605. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  606. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  607. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  608. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/workspace-scope-install.md +0 -0
  609. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/zip-strict-audit.md +0 -0
  610. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  611. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  612. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/semantic-search.md +0 -0
  613. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  614. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/verifying-releases.md +0 -0
  615. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/meta.md +0 -0
  616. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/openvex.json +0 -0
  617. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  618. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  619. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  620. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  621. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/eslint.config.mjs +0 -0
  622. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/README.md +0 -0
  623. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/__init__.py +0 -0
  624. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/baseline.json +0 -0
  625. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/faithfulness.py +0 -0
  626. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/golden_set.json +0 -0
  627. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/make_corpus.py +0 -0
  628. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/make_golden.py +0 -0
  629. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/metrics.py +0 -0
  630. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/publish_golden_dataset.py +0 -0
  631. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/evals/run_evals.py +0 -0
  632. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/examples/README.md +0 -0
  633. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/examples/adapt-demo.sh +0 -0
  634. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/examples/boost-run-prototype.sh +0 -0
  635. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/index.html +0 -0
  636. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/noxfile.py +0 -0
  637. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/pyproject.toml +0 -0
  638. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/coverage-tools.in +0 -0
  639. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/coverage-tools.txt +0 -0
  640. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/lint-tools.in +0 -0
  641. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/lint-tools.txt +0 -0
  642. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/mutation-tools.in +0 -0
  643. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/mutation-tools.txt +0 -0
  644. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/platform-pins.lock +0 -0
  645. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/release-tools.in +0 -0
  646. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/release-tools.txt +0 -0
  647. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/test-tools.in +0 -0
  648. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/requirements/test-tools.txt +0 -0
  649. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/a11y_check.py +0 -0
  650. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/add_spdx_headers.py +0 -0
  651. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/bench_cli.sh +0 -0
  652. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_command_reference.py +0 -0
  653. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_demo_index.py +0 -0
  654. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_registries.py +0 -0
  655. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_roadmap.py +0 -0
  656. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_scale_corpus.py +0 -0
  657. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/build_vex.py +0 -0
  658. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_anchors.py +0 -0
  659. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_branch_current.py +0 -0
  660. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_dco.py +0 -0
  661. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_licenses.py +0 -0
  662. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_reproducible.py +0 -0
  663. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/check_required_checks.py +0 -0
  664. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/ensure_eval_corpus.sh +0 -0
  665. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_corpus.py +0 -0
  666. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_explain.py +0 -0
  667. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_gate.py +0 -0
  668. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_recommend.py +0 -0
  669. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_retrieval.py +0 -0
  670. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_stats_summary.py +0 -0
  671. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/eval_tools.py +0 -0
  672. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/import_budget.py +0 -0
  673. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/lock_toolchain.py +0 -0
  674. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/measure_near_duplicate_bound.py +0 -0
  675. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/measure_registry.py +0 -0
  676. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/mutation_gate.py +0 -0
  677. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/mutation_shards.py +0 -0
  678. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/mutation_weights.json +0 -0
  679. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/normalize_sdist.py +0 -0
  680. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/page_budget.py +0 -0
  681. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/perf_gate.py +0 -0
  682. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/post_deploy_smoke.py +0 -0
  683. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/publish_eval_json.py +0 -0
  684. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/publish_shards.py +0 -0
  685. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/release_guard.py +0 -0
  686. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/release_preflight.py +0 -0
  687. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/serve_docs.py +0 -0
  688. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/scripts/shard_plan.py +0 -0
  689. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/setup.cfg +0 -0
  690. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/sonar-project.properties +0 -0
  691. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/style/README.md +0 -0
  692. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/style/boost.css +0 -0
  693. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/style/boost.js +0 -0
  694. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/style/demo.html +0 -0
  695. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/adapt.feature +0 -0
  696. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/browse.feature +0 -0
  697. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/count.feature +0 -0
  698. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/discover.feature +0 -0
  699. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/doctor.feature +0 -0
  700. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/environment.py +0 -0
  701. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/explain.feature +0 -0
  702. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/index.feature +0 -0
  703. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/install.feature +0 -0
  704. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/list.feature +0 -0
  705. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/mcp.feature +0 -0
  706. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/search.feature +0 -0
  707. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/steps/cli_steps.py +0 -0
  708. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/steps/discovery_steps.py +0 -0
  709. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/steps/mcp_steps.py +0 -0
  710. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/bdd/features/steps/quality_steps.py +0 -0
  711. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/conftest.py +0 -0
  712. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/explain.jsonl +0 -0
  713. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  714. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/golden-natural.jsonl +0 -0
  715. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/golden.jsonl +0 -0
  716. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/recommend.jsonl +0 -0
  717. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/eval/tool_calls.jsonl +0 -0
  718. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_bmad_all_hosts.py +0 -0
  719. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_capabilities_policy.py +0 -0
  720. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_adapt.py +0 -0
  721. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_bmad.py +0 -0
  722. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_catalog.py +0 -0
  723. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_chat.py +0 -0
  724. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_configuration.py +0 -0
  725. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_discovery.py +0 -0
  726. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_hooks.py +0 -0
  727. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_hooks_gemini.py +0 -0
  728. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_info.py +0 -0
  729. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_pane_width.py +0 -0
  730. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_pkg.py +0 -0
  731. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_quickstart.py +0 -0
  732. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_tap_pins.py +0 -0
  733. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_taps.py +0 -0
  734. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_cli_team.py +0 -0
  735. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_everyday_loop.py +0 -0
  736. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_integrity_enforce.py +0 -0
  737. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_kind_conformance.py +0 -0
  738. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_property_parsers.py +0 -0
  739. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_run.py +0 -0
  740. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/functional/test_workspace_scope.py +0 -0
  741. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/README.md +0 -0
  742. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  743. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  744. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  745. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  746. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  747. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  748. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  749. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  750. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  751. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  752. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  753. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  754. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  755. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  756. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  757. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  758. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  759. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  760. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  761. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  762. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  763. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  764. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  765. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/fuzz_frontmatter.py +0 -0
  766. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/fuzz/fuzz_registry.py +0 -0
  767. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/langchain/conftest.py +0 -0
  768. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/langchain/test_graph.py +0 -0
  769. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/langchain/test_loader.py +0 -0
  770. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/langchain/test_retriever.py +0 -0
  771. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/make_fixture.py +0 -0
  772. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/perf/test_benchmarks.py +0 -0
  773. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/smoke.sh +0 -0
  774. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_a11y_check.py +0 -0
  775. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_action_pin_lockstep.py +0 -0
  776. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_adapters.py +0 -0
  777. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_adapters_multi.py +0 -0
  778. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_adapters_runner.py +0 -0
  779. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_agents.py +0 -0
  780. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_ai.py +0 -0
  781. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_aihost.py +0 -0
  782. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_bmad_core.py +0 -0
  783. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_boost_first_offer.py +0 -0
  784. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_bootstrap.py +0 -0
  785. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_bot_pr_dco.py +0 -0
  786. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_branch_current.py +0 -0
  787. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_browse.py +0 -0
  788. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_builtin.py +0 -0
  789. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_capabilities.py +0 -0
  790. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_catalog.py +0 -0
  791. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_catalogbundle.py +0 -0
  792. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_chat.py +0 -0
  793. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_check_anchors.py +0 -0
  794. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_check_dco.py +0 -0
  795. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_check_licenses.py +0 -0
  796. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_check_reproducible.py +0 -0
  797. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_claude_settings.py +0 -0
  798. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_clean_internal_cache.py +0 -0
  799. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_cli_update_shards.py +0 -0
  800. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_cliparse.py +0 -0
  801. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_codeql_analysis_key.py +0 -0
  802. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_command_reference_fresh.py +0 -0
  803. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_community_health_files.py +0 -0
  804. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_compact.py +0 -0
  805. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_complete.py +0 -0
  806. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_complete_rc_block.py +0 -0
  807. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_config.py +0 -0
  808. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_content_dedupe.py +0 -0
  809. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_content_identity.py +0 -0
  810. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_crash_redaction.py +0 -0
  811. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dedup_trust.py +0 -0
  812. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_demo_index.py +0 -0
  813. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense.py +0 -0
  814. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  815. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_embed_dedupe.py +0 -0
  816. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_entry_reuse.py +0 -0
  817. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_entry_vectors.py +0 -0
  818. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_fallback.py +0 -0
  819. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_fix_hint.py +0 -0
  820. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_progress.py +0 -0
  821. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_quantized.py +0 -0
  822. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_ready_order.py +0 -0
  823. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_shard_real_schema.py +0 -0
  824. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  825. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_shards.py +0 -0
  826. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_status.py +0 -0
  827. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_status_cheap.py +0 -0
  828. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dense_vector_dedupe.py +0 -0
  829. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_dependabot_config.py +0 -0
  830. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_docs_pages_linked.py +0 -0
  831. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_docsite_chrome.py +0 -0
  832. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_doctor_output_polish.py +0 -0
  833. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_ed25519.py +0 -0
  834. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_embed.py +0 -0
  835. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_embed_local.py +0 -0
  836. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_embed_truncated_response.py +0 -0
  837. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_entry_key.py +0 -0
  838. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_errors_and_cli_table.py +0 -0
  839. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_baseline.py +0 -0
  840. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_corpus.py +0 -0
  841. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_faithfulness.py +0 -0
  842. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_gate.py +0 -0
  843. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_grading.py +0 -0
  844. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_metrics.py +0 -0
  845. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_stats_summary.py +0 -0
  846. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_tools.py +0 -0
  847. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_eval_tools_probe.py +0 -0
  848. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  849. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_faithfulness.py +0 -0
  850. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_frontmatter.py +0 -0
  851. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_fuzz_targets.py +0 -0
  852. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  853. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gitleaks_config.py +0 -0
  854. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gitutil.py +0 -0
  855. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gitutil_lfs.py +0 -0
  856. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gitutil_sparse.py +0 -0
  857. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_gstack_coexistence.py +0 -0
  858. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_hook_settings_hosts.py +0 -0
  859. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_hookhost.py +0 -0
  860. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_imperative.py +0 -0
  861. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_import_budget.py +0 -0
  862. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_injectscan.py +0 -0
  863. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_install_permission_error.py +0 -0
  864. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_installscan.py +0 -0
  865. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_integrity.py +0 -0
  866. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_journal.py +0 -0
  867. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_langchain_packaging.py +0 -0
  868. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_link_ownership.py +0 -0
  869. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_localembed.py +0 -0
  870. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_localembed_e2e.py +0 -0
  871. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_logs.py +0 -0
  872. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_marketing_counts.py +0 -0
  873. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mcp.py +0 -0
  874. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mcp_install_scan.py +0 -0
  875. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mcp_read.py +0 -0
  876. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mcpdecl.py +0 -0
  877. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mcphost.py +0 -0
  878. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_measure_registry.py +0 -0
  879. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_minisign.py +0 -0
  880. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mutation_hardening.py +0 -0
  881. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mutation_shards.py +0 -0
  882. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mutation_subfile_shards.py +0 -0
  883. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_mutmut_source_paths.py +0 -0
  884. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_near_duplicate_collapse.py +0 -0
  885. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_nethttp.py +0 -0
  886. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_normalize_sdist.py +0 -0
  887. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_output.py +0 -0
  888. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_page_budget.py +0 -0
  889. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_paths.py +0 -0
  890. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_perf_gate.py +0 -0
  891. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_pkg_confusions.py +0 -0
  892. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_pkg_injection.py +0 -0
  893. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_pkg_secrets.py +0 -0
  894. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_platform_pins.py +0 -0
  895. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_policy.py +0 -0
  896. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_post_deploy_smoke.py +0 -0
  897. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_project_mcp_sidecar.py +0 -0
  898. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_projectlock.py +0 -0
  899. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_publish_golden_dataset.py +0 -0
  900. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_rag.py +0 -0
  901. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_rag_fastpath.py +0 -0
  902. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_rag_fusion.py +0 -0
  903. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_registries_fresh.py +0 -0
  904. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_registry.py +0 -0
  905. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_registry_categories.py +0 -0
  906. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_registry_control_chars.py +0 -0
  907. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_registry_parallel.py +0 -0
  908. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_release_guard.py +0 -0
  909. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_release_preflight.py +0 -0
  910. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_required_checks.py +0 -0
  911. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_rerank_cache.py +0 -0
  912. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_resolve.py +0 -0
  913. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  914. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_roadmap_fresh.py +0 -0
  915. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_rules.py +0 -0
  916. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_scopes.py +0 -0
  917. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_secretscan.py +0 -0
  918. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_selfupdate.py +0 -0
  919. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_serve.py +0 -0
  920. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_serve_docs.py +0 -0
  921. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_shard_plan.py +0 -0
  922. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_shards.py +0 -0
  923. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_shards_incremental.py +0 -0
  924. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_shards_ingest.py +0 -0
  925. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_shards_matrix.py +0 -0
  926. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_smoke_covers_every_command.py +0 -0
  927. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_spdx_headers.py +0 -0
  928. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_spin.py +0 -0
  929. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_stackprobe.py +0 -0
  930. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_staleness.py +0 -0
  931. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_store_materialize.py +0 -0
  932. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_sync_blocked_links.py +0 -0
  933. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  934. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_tap_pins.py +0 -0
  935. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_token_parity.py +0 -0
  936. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_toolchain_lock.py +0 -0
  937. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_trustaudit.py +0 -0
  938. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_typosquat.py +0 -0
  939. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_updatediff.py +0 -0
  940. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_util.py +0 -0
  941. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_version.py +0 -0
  942. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_version_tags.py +0 -0
  943. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_vex.py +0 -0
  944. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_visual_harness_flags.py +0 -0
  945. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_workflow_concurrency.py +0 -0
  946. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  947. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  948. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_workflow_timeouts.py +0 -0
  949. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_workflows.py +0 -0
  950. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  951. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/visual/a11y_check.mjs +0 -0
  952. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/visual/console_check.mjs +0 -0
  953. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/visual/package-lock.json +0 -0
  954. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/tests/visual/package.json +0 -0
  955. {boost_skill_cli-1.2.75 → boost_skill_cli-1.2.77}/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.75
3
+ Version: 1.2.77
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.75'
22
- __version_tuple__ = version_tuple = (1, 2, 75)
21
+ __version__ = version = '1.2.77'
22
+ __version_tuple__ = version_tuple = (1, 2, 77)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -8,7 +8,7 @@ place lets the modules split without either importing back into the other.
8
8
  """
9
9
  from __future__ import annotations
10
10
 
11
- from ..core import lockfile
11
+ from ..core import lockfile, store
12
12
  from ..errors import BoostError
13
13
 
14
14
 
@@ -17,6 +17,34 @@ def _s(n: int) -> str:
17
17
  return "" if n == 1 else "s"
18
18
 
19
19
 
20
+ def _require_lock_integrity() -> None:
21
+ """Fail loudly, before iterating, if the lock file itself is broken.
22
+
23
+ `lockfile.read()` collapses a missing/corrupt/wrong-schema lock into an
24
+ empty skeleton so ordinary reads degrade cleanly — but that means
25
+ `cmd_verify`/`cmd_drift` would iterate zero entries and report "nothing
26
+ installed" for exactly the state they exist to catch: a store with real
27
+ skills in it and no record of them. A missing lock over an empty store is
28
+ a fresh install, not a fault, so only that combination passes silently;
29
+ corrupt or wrong-schema is always reported, store empty or not, matching
30
+ `boost doctor`'s wording so the two commands never disagree.
31
+ """
32
+ integ = lockfile.check()
33
+ if integ.ok:
34
+ return
35
+ if integ.problem == "missing":
36
+ if not store.has_content():
37
+ return
38
+ raise BoostError(
39
+ "lock file missing — the store has skills but nothing is recorded",
40
+ hint="run `boost sync`")
41
+ if integ.problem == "corrupt":
42
+ raise BoostError("lock file is corrupt — restore with `boost replay`")
43
+ raise BoostError(
44
+ "lock file schema is v%s, expected v%d" % (integ.version, lockfile.SCHEMA_VERSION),
45
+ hint="restore with `boost replay`")
46
+
47
+
20
48
  def _iter_installed(names: list[str] | None = None) -> list[tuple[str, dict]]:
21
49
  """[(name, lock_entry)] — all installed skills, or the given names.
22
50
 
@@ -208,6 +208,21 @@ def _distill_ai(new: str, sources: list[dict]) -> str | None:
208
208
  return text if meta.get("name") else None
209
209
 
210
210
 
211
+ _FENCE_RE = re.compile(r"^`{3,}")
212
+ _STRUCTURAL_LINES = frozenset({"```", "---", "}", ");"})
213
+ _TABLE_RULE_RE = re.compile(r"^-{3,}$|^[\s:|-]*\|[\s:|-]*$")
214
+
215
+
216
+ def _is_structural_line(key: str) -> bool:
217
+ """Pure-syntax lines that must survive a dedupe pass unconditionally.
218
+
219
+ A closing fence, a lone brace/paren, an hr, or a table separator row
220
+ repeats verbatim across sources by construction, not by accident —
221
+ deduping them corrupts the merged document's structure.
222
+ """
223
+ return key in _STRUCTURAL_LINES or bool(_TABLE_RULE_RE.match(key))
224
+
225
+
211
226
  def _distill_merge(new: str, sources: list[dict]) -> str:
212
227
  """Mechanical merge: union tags, dedupe exact-duplicate body lines."""
213
228
  tags: list[str] = []
@@ -222,17 +237,27 @@ def _distill_merge(new: str, sources: list[dict]) -> str:
222
237
  "version": "1.0.0"}
223
238
  if tags:
224
239
  meta["tags"] = tags
225
- seen = set()
240
+ seen: set[str] = set()
226
241
  sections = ["# %s\n\nDistilled from: %s."
227
242
  % (new, ", ".join(s["name"] for s in sources))]
228
243
  for s in sources:
229
244
  kept = []
245
+ in_fence = False
230
246
  for raw in s["body"].splitlines():
231
247
  key = raw.strip()
232
- if key:
233
- if key in seen:
234
- continue
235
- seen.add(key)
248
+ if not key:
249
+ kept.append(raw)
250
+ continue
251
+ if _FENCE_RE.match(key):
252
+ in_fence = not in_fence
253
+ kept.append(raw)
254
+ continue
255
+ if in_fence or _is_structural_line(key):
256
+ kept.append(raw)
257
+ continue
258
+ if key in seen:
259
+ continue
260
+ seen.add(key)
236
261
  kept.append(raw)
237
262
  sections.append("## From %s\n\n%s" % (s["name"], "\n".join(kept).strip()))
238
263
  body = re.sub(r"\n{3,}", "\n\n", "\n\n".join(sections))
@@ -42,7 +42,7 @@ from ..core import (
42
42
  )
43
43
  from ..core import output as out
44
44
  from ..errors import BoostError
45
- from ._common import _iter_installed, _iter_installed_all, _s
45
+ from ._common import _iter_installed, _iter_installed_all, _require_lock_integrity, _s
46
46
 
47
47
  # --- conflict: normative-rule extraction -----------------------------------
48
48
 
@@ -405,20 +405,32 @@ def cmd_doctor(argv):
405
405
  out.info("no registries tapped — nothing is searchable yet; add the "
406
406
  "recommended ones with `boost tap --defaults`", wrap=True)
407
407
 
408
- lock_ok = True
409
- lp = paths.lockfile_path()
410
- if lp.exists():
411
- try:
412
- raw = json.loads(lp.read_text(encoding="utf-8"))
413
- if raw.get("version") != lockfile.SCHEMA_VERSION:
414
- bad("lock file schema is v%s, expected v%d"
415
- % (raw.get("version"), lockfile.SCHEMA_VERSION))
416
- lock_ok = False
417
- except (json.JSONDecodeError, OSError):
418
- bad("lock file is corrupt — restore with `boost replay`")
419
- lock_ok = False
420
- if lock_ok:
408
+ # lockfile.read() collapses missing/corrupt/wrong-schema into an empty
409
+ # skeleton so ordinary reads degrade cleanly — but that is exactly why
410
+ # this used to print "lock file parses (v3)" for a lock file that did not
411
+ # exist. check() reports the raw state instead, so "parses" is only ever
412
+ # claimed for a file doctor actually parsed.
413
+ integ = lockfile.check()
414
+ if integ.ok:
421
415
  out.ok("lock file parses (v%d)" % lockfile.SCHEMA_VERSION)
416
+ lock_ok = True
417
+ elif integ.problem == "missing":
418
+ if store.has_content():
419
+ n = sum(1 for c in paths.store_dir().iterdir()
420
+ if c.is_dir() and not c.name.startswith("."))
421
+ bad("lock file missing — %d store dir%s unrecorded, run `boost sync`"
422
+ % (n, _s(n)))
423
+ lock_ok = False
424
+ else:
425
+ out.info("no lock file yet — nothing installed")
426
+ lock_ok = True
427
+ elif integ.problem == "corrupt":
428
+ bad("lock file is corrupt — restore with `boost replay`")
429
+ lock_ok = False
430
+ else: # "schema"
431
+ bad("lock file schema is v%s, expected v%d"
432
+ % (integ.version, lockfile.SCHEMA_VERSION))
433
+ lock_ok = False
422
434
 
423
435
  skills = lockfile.installed()
424
436
  enabled = agents.enabled_agents()
@@ -819,6 +831,10 @@ def cmd_drift(argv):
819
831
  ap.add_argument("--json", action="store_true")
820
832
  args = ap.parse_args(argv)
821
833
 
834
+ # Same rule as `boost verify`: a missing/corrupt/wrong-schema lock over a
835
+ # populated store is a fault, not "no skills installed".
836
+ _require_lock_integrity()
837
+
822
838
  rows = []
823
839
  for kind, name, entry in _iter_installed_all(args.names or None):
824
840
  status = (_drift_status(name, entry) if kind == "skill"
@@ -36,7 +36,13 @@ from ..core import (
36
36
  from ..core import output as out
37
37
  from ..core import rules as rules_mod
38
38
  from ..errors import BoostError
39
- from ._common import _iter_installed, _iter_installed_all, _s, _shadowed_kinds
39
+ from ._common import (
40
+ _iter_installed,
41
+ _iter_installed_all,
42
+ _require_lock_integrity,
43
+ _s,
44
+ _shadowed_kinds,
45
+ )
40
46
 
41
47
  # --- audit: dangerous-content patterns ------------------------------------
42
48
 
@@ -335,6 +341,11 @@ def cmd_verify(argv):
335
341
  ap.add_argument("--json", action="store_true")
336
342
  args = ap.parse_args(argv)
337
343
 
344
+ # Before trusting anything the lock file says: a missing/corrupt/wrong-
345
+ # schema lock over a populated store must be reported, not read as "no
346
+ # skills installed" — that is the failure this command exists to catch.
347
+ _require_lock_integrity()
348
+
338
349
  # A named item may be installed at user OR project scope. Validate against
339
350
  # both up front so `boost verify <vendored-skill>` doesn't wrongly error
340
351
  # "not installed", and only hand user-scope names to the iterator. User
@@ -14,6 +14,7 @@ from __future__ import annotations
14
14
  import json
15
15
  import shutil
16
16
  from contextlib import suppress
17
+ from typing import NamedTuple
17
18
 
18
19
  from . import paths, util
19
20
 
@@ -75,6 +76,41 @@ def _preserve_corrupt(p) -> None:
75
76
  "empty lock", p, backup or "(backup failed)")
76
77
 
77
78
 
79
+ class Integrity(NamedTuple):
80
+ """The lock file's own health, as opposed to what it records.
81
+
82
+ ``read()`` collapses a missing, corrupt, or wrong-schema lock file into
83
+ an empty skeleton so every other caller can treat "never installed" and
84
+ "lock file broke" the same way when they only want the content. A health
85
+ check must not conflate the two: `boost verify`/`drift`/`doctor` call
86
+ this instead so they can tell a genuinely empty install apart from one
87
+ whose record vanished out from under a populated store.
88
+ """
89
+ ok: bool
90
+ problem: str | None # None | "missing" | "corrupt" | "schema"
91
+ version: object = None # the schema version actually found, for "schema"
92
+
93
+
94
+ def check() -> Integrity:
95
+ """Report whether the lock file itself parses as the current schema.
96
+
97
+ Does not touch the store — a missing lock file with an empty store is a
98
+ fresh install, not a fault; callers that care about that distinction
99
+ combine this with a store-content check of their own.
100
+ """
101
+ p = paths.lockfile_path()
102
+ if not p.exists():
103
+ return Integrity(False, "missing")
104
+ try:
105
+ raw = json.loads(p.read_text(encoding="utf-8"))
106
+ except (json.JSONDecodeError, OSError):
107
+ return Integrity(False, "corrupt")
108
+ version = raw.get("version")
109
+ if version != SCHEMA_VERSION:
110
+ return Integrity(False, "schema", version)
111
+ return Integrity(True, None, version)
112
+
113
+
78
114
  def write(lock: dict) -> None:
79
115
  """Snapshot the existing lock to history, then write ``lock`` atomically.
80
116
 
@@ -158,6 +158,18 @@ def verify_dir(clone: Path) -> Result:
158
158
  return Result(VERIFIED, key_name=name,
159
159
  fingerprint=minisign.key_id_hex(pk.key_id),
160
160
  trusted_comment=sig.trusted_comment)
161
+ # A signature carrying a *trusted* key's id that still fails to verify is
162
+ # not a merely-unknown signer — it is the tampering this module exists to
163
+ # catch (the manifest was edited after a trusted key signed it). Report it
164
+ # as INVALID, not UNTRUSTED, so callers that only alarm on INVALID (the
165
+ # `trust verify` sweep) don't wave a modified manifest through.
166
+ for name, pk in _public_keys():
167
+ if sig.key_id == pk.key_id:
168
+ return Result(INVALID, key_name=name,
169
+ fingerprint=minisign.key_id_hex(pk.key_id),
170
+ trusted_comment=sig.trusted_comment,
171
+ detail="signature by trusted key %s does not verify"
172
+ " — manifest modified?" % name)
161
173
  return Result(UNTRUSTED, fingerprint=minisign.key_id_hex(sig.key_id),
162
174
  trusted_comment=sig.trusted_comment,
163
175
  detail="no trusted key verifies this signature")
@@ -78,6 +78,22 @@ def installed() -> dict:
78
78
  return lockfile.installed()
79
79
 
80
80
 
81
+ def has_content() -> bool:
82
+ """True if the canonical store holds any skill directory at all.
83
+
84
+ Independent of the lock file: a store dir survives even when
85
+ ``.skill-lock.json`` goes missing or corrupt, so this is how a caller
86
+ tells a genuinely fresh install (nothing installed, nothing to report)
87
+ apart from one whose lock record vanished out from under a populated
88
+ store (a fault `boost verify`/`drift`/`doctor` must not stay quiet
89
+ about).
90
+ """
91
+ root = paths.store_dir()
92
+ if not root.is_dir():
93
+ return False
94
+ return any(c.is_dir() and not c.name.startswith(".") for c in root.iterdir())
95
+
96
+
81
97
  def source_dir_for(entry: dict) -> Path:
82
98
  """Absolute path of a catalog entry's skill dir inside its tap clone.
83
99
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.75
3
+ Version: 1.2.77
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -503,6 +503,7 @@ docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md
503
503
  docs/roadmap/items/prose-and-terminology-linting-vale.md
504
504
  docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md
505
505
  docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md
506
+ docs/roadmap/items/publish-the-keyword-index.md
506
507
  docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md
507
508
  docs/roadmap/items/published-shards-have-no-consumer.md
508
509
  docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md
@@ -555,6 +556,7 @@ docs/roadmap/items/shard-runs-reembed-everything-weekly.md
555
556
  docs/roadmap/items/shards-pipeline-never-produced-a-shard.md
556
557
  docs/roadmap/items/shareable-catalogue-bundle.md
557
558
  docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md
559
+ docs/roadmap/items/shrink-the-published-index.md
558
560
  docs/roadmap/items/single-imperative-rule-extractor.md
559
561
  docs/roadmap/items/single-tech-stack-prober.md
560
562
  docs/roadmap/items/smart-rerank-pays-per-novel-query.md
@@ -818,6 +820,7 @@ tests/unit/test_dense_status.py
818
820
  tests/unit/test_dense_status_cheap.py
819
821
  tests/unit/test_dense_vector_dedupe.py
820
822
  tests/unit/test_dependabot_config.py
823
+ tests/unit/test_distill_merge.py
821
824
  tests/unit/test_docs_pages_linked.py
822
825
  tests/unit/test_docsite_chrome.py
823
826
  tests/unit/test_doctor_output_polish.py
Binary file
@@ -2,7 +2,7 @@
2
2
  id: audit-catalog-findings
3
3
  board: code
4
4
  section: dx
5
- status: inflight
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: Med
@@ -2,15 +2,15 @@
2
2
  id: audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi
3
3
  board: code
4
4
  section: dx
5
- status: planned
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 2
10
10
  note: merged SKILL.md keeps 4 fence lines where one source alone had 56 — blocks never close
11
11
  order: 205
12
- owner:
13
- pr:
12
+ owner: loop/distill-merge-fence-corruption
13
+ pr: 668
14
14
  title: "distill's heuristic merge drops repeated <code>```</code> fences/braces, writing a structurally corrupt SKILL.md"
15
15
  ---
16
16
  <code>_distill_merge</code> keeps a global <code>seen</code> set of every stripped non-blank line
@@ -2,15 +2,15 @@
2
2
  id: audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t
3
3
  board: code
4
4
  section: trust
5
- status: planned
5
+ status: inflight
6
6
  category: Safety · Bug
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 2
10
10
  note: the tampering case the feature exists for reads as "key unknown", and the sweep exits 0
11
11
  order: 221
12
- owner:
13
- pr:
12
+ owner: loop/trust-verify-tamper
13
+ pr: 675
14
14
  title: "<code>trust verify</code> labels a manifest tampered after signing by a TRUSTED key 'untrusted'; sweep exits 0"
15
15
  ---
16
16
  Sign a tap's manifest with a trusted key, then edit the manifest &mdash; the exact tampering <code>trust verify</code> exists to catch. The sweep reports <code>iktakahiro/python-fastapi-ddd-sk&hellip;&nbsp; untrusted&nbsp; no trusted key verifies this sig&hellip;</code> and <b>exits 0</b>; <code>--json</code> says <code>{"status": "untrusted", "key_name": null, "fingerprint": "1122334455667788"}</code> &mdash; and that fingerprint is the trusted <code>acme</code> key's own. So a modified manifest is indistinguishable from a merely unknown signer, and a scripted sweep sails past it. One narrowing from verification: the named-tap path (<code>trust verify TAP</code>) does exit 1; the exit-0 hole is the sweep, whose alarm at <code>boost_cli/commands/quality.py:1329</code> fires only on INVALID. The 'untrusted / key unknown' mislabel affects both paths.
@@ -2,15 +2,15 @@
2
2
  id: audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo
3
3
  board: code
4
4
  section: health
5
- status: planned
5
+ status: inflight
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 2
10
10
  note: rm the lock, verify exits 0 'nothing installed'; doctor still prints 'lock parses (v3)'
11
11
  order: 214
12
- owner:
13
- pr:
12
+ owner: loop/lock-integrity-reporting
13
+ pr: 674
14
14
  title: "<code>verify</code>/<code>drift</code> say 'nothing installed' (exit 0) when the lock file is missing or corrupt"
15
15
  ---
16
16
  Delete <code>.skill-lock.json</code> after an install (store and four agent links still present) and
@@ -0,0 +1,68 @@
1
+ ---
2
+ id: publish-the-keyword-index
3
+ board: code
4
+ section: planned
5
+ status: planned
6
+ category: Search · Performance
7
+ complexity: L
8
+ impact: High
9
+ wow: 4
10
+ note: every machine rebuilds 697 MB of index for a corpus that is byte-identical on all of them
11
+ order: 99
12
+ title: publish the keyword index the way vectors are published
13
+ ---
14
+ Dense vectors are built once in CI and downloaded. The BM25 index is not:
15
+ <code>core/rag.py</code> has <b>no export or import function at all</b>, and
16
+ <code>shards.yml</code> / <code>scripts/publish_shards.py</code> are dense-only end to end. Every
17
+ install rebuilds the same index from the same registries, at the same pinned commits, to produce
18
+ the same bytes.
19
+
20
+ <b>Measured, on a real 458-tap machine.</b> The on-disk index is
21
+ <code>rag_index.json</code> <b>43.7&nbsp;MB</b> plus <code>rag_postings.sqlite</code>
22
+ <b>653.0&nbsp;MB</b> — <b>696.7&nbsp;MB</b> for 18,619,658 postings. Build cost, timed over a
23
+ 9,306-entry / 69-tap slice: <b>4.54&nbsp;s</b> reading bodies and tokenizing, <b>3.83&nbsp;s</b>
24
+ writing postings, <b>8.4&nbsp;s</b> total — about 0.9&nbsp;ms per entry, so roughly
25
+ <b>65&nbsp;s</b> and <b>~900&nbsp;MB</b> extrapolated to the full 71,700-entry catalogue.
26
+
27
+ <b>Which user actually pays it.</b> Not the default one: <code>boost quickstart</code> taps the
28
+ <b>7 starter registries</b> and indexes them in about a second. The cost lands on
29
+ <code>boost quickstart --catalog</code> — 463 registries, 2&nbsp;min 10&nbsp;s of parallel cloning
30
+ and then a minute of indexing on top — and on anyone who taps their way there gradually.
31
+
32
+ <b>The bug that makes this worth doing is not speed.</b> <code>boost catalog --import</code>
33
+ already exists and already looks like the answer: <i>shareable-catalogue-bundle</i> advertises
34
+ 10.9&nbsp;MB replacing a 12&nbsp;GB clone and "59,972 searchable items in 4 seconds". That 4
35
+ seconds is fast for a reason the card does not state. <code>rag.read_body</code> degrades
36
+ <b>silently</b> to name + description when the item's clone is absent
37
+ (<code>rag.py</code>: "Missing files degrade to just the catalog metadata"), and a bundle import
38
+ restores catalogues with <i>zero repositories cloned</i>. So the index it builds is not the
39
+ full-content index the <code>evals</code> gate floors — it is a frontmatter index wearing the same
40
+ file name.
41
+
42
+ <b>Measured directly</b> over 3,015 real entries, indexing them with and then without their
43
+ clones: <b>3,041,326 tokens versus 182,507</b>. A bundle-only index carries <b>6.0%</b> of the
44
+ searchable text, and nothing in the output says so. That is the same failure shape as an
45
+ unpinned eval corpus — a number that still renders confidently while measuring something else.
46
+
47
+ <b>Why this is easier than the dense shards, not harder.</b> BM25 looks like it needs global
48
+ statistics, and it does — but none of them are frozen at build time. <code>_bm25</code> derives
49
+ <code>n = len(docs)</code> and <code>df = len(plist)</code> on <i>every query</i>, so IDF is
50
+ computed from whatever corpus is loaded. A per-registry shard therefore merges by offsetting
51
+ <code>doc_id</code>, unioning the postings, and recomputing <code>avg_len</code> from per-shard
52
+ totals — arithmetic, not re-derivation. And unlike vectors there is no embedding space to match
53
+ and no API key to hold, so <code>shards.incompatible()</code> has no analogue here: a published
54
+ keyword index is importable by everyone, including the keyless user who cannot use vectors at all.
55
+
56
+ <b>Shape.</b> <code>rag.export_shard</code> / <code>rag.import_shard</code> mirroring
57
+ <code>dense</code>'s pair, per-registry assets on the existing <code>shards-latest</code> release,
58
+ rows carried in the same <code>manifest.json</code> with the same commit pin and sha256 — the
59
+ carry-forward machinery in <code>publish_shards.py manifest --carry-forward</code> applies
60
+ unchanged, because a registry whose commit did not move has an index that did not change either.
61
+ Three invariants transfer verbatim from the dense side and each is load-bearing: verify before
62
+ replacing, refuse a shard whose commit is not the tap's commit, and never treat a missing digest
63
+ as a match.
64
+
65
+ <b>The open question is payload size</b>, and it is large enough to be its own decision — see
66
+ <a href="#shrink-the-published-index">shrink-the-published-index</a>. This card should not ship
67
+ until that one has an answer, because publishing 697&nbsp;MB per refresh to save 65&nbsp;s of CPU
68
+ is not obviously the right trade, and at the compressed sizes measured there it clearly is.
@@ -0,0 +1,60 @@
1
+ ---
2
+ id: shrink-the-published-index
3
+ board: code
4
+ section: planned
5
+ status: planned
6
+ category: Performance · Storage
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note: 653 MB of postings holds 1.4 MB of distinct terms — the term string is stored 88 times over
11
+ order: 100
12
+ title: shrink the keyword index before publishing it — structure first, then compression
13
+ ---
14
+ <a href="#publish-the-keyword-index">publish-the-keyword-index</a> is worth doing only if the
15
+ artifact is small enough to ship weekly. This card is the measurement that decides it, and the
16
+ first answer is that <b>compression is the second lever, not the first</b>.
17
+
18
+ <b>What the format actually stores.</b> <code>_write_postings</code> creates
19
+ <code>postings (term TEXT, doc INTEGER, tf INTEGER)</code> and inserts one row per posting, so the
20
+ <i>term string is repeated in every row</i>. Measured on the real 458-tap store:
21
+ <b>18,619,658</b> rows over <b>210,422</b> distinct terms averaging <b>6.6</b> characters. That is
22
+ <b>~123&nbsp;MB of term text to carry 1.4&nbsp;MB of distinct term text — 88&times; redundancy</b>,
23
+ before the per-row and B-tree overhead that turns it into a 653&nbsp;MB file (page_size 4096,
24
+ 167,174 pages, freelist 0, so it is not slack space).
25
+
26
+ <b>Compression measured on that file, as it stands:</b>
27
+
28
+ <b><code>rag_index.json</code></b> 43.7&nbsp;MB raw &middot; gzip&nbsp;-6 <b>10.6&nbsp;MB</b> (4.12&times;).<br>
29
+ <b><code>rag_postings.sqlite</code></b> 653.0&nbsp;MB raw &middot; gzip&nbsp;-6 201.7&nbsp;MB (3.23&times;) &middot; zstd&nbsp;-3 169.9&nbsp;MB (3.84&times;) &middot; <b>zstd&nbsp;-19 106.7&nbsp;MB (6.11&times;)</b>.
30
+
31
+ So even with no format change, <b>zstd -19 puts the whole index near 117&nbsp;MB</b> — under half
32
+ the ~300&nbsp;MB of dense vectors already published weekly. The trade is already good; the point
33
+ of this card is that it can be much better, and that the two levers compose.
34
+
35
+ <b>Structure first, and it is the bigger win.</b> Interning terms into
36
+ <code>terms(id, term)</code> with <code>postings(term_id, doc, tf)</code> removes ~123&nbsp;MB of
37
+ duplicated strings <i>and</i> shrinks the <code>postings_term</code> index from a text key to an
38
+ integer one. Beyond that, the classic inverted-index encodings apply directly because doc ids
39
+ within a term are ascending: delta-encode them, varint or bitpack the deltas, and store one blob
40
+ per term rather than one row per posting. Both shrink the file <b>on disk</b>, not just in
41
+ transit, which is the half a compressed download never gives back — the user still ends up with
42
+ 653&nbsp;MB resident after import.
43
+
44
+ <b>What must not regress.</b> <code>read_postings</code> exists precisely so a query touches a
45
+ handful of terms instead of materialising the whole map — the change that took cold search from
46
+ 8-13&nbsp;s and multiple GB resident to 31-70&nbsp;ms of scoring. A blob-per-term layout keeps
47
+ that property (one row read per query term, decoded on the spot); a scheme that requires decoding
48
+ neighbouring terms to find one does not. <code>_bm25</code> must stay byte-identical, as it did
49
+ through the SQLite move, and <code>TestBm25Math</code> is what says so.
50
+
51
+ <b>Decompression cost is the thing to measure, not assume.</b> zstd -19 is slow to compress and
52
+ fast to decompress, which is the right asymmetry for a weekly build feeding many imports — but
53
+ "fast" needs a number on the import path before it is a claim, next to the 0.12&nbsp;s that
54
+ importing dense rows costs today. A zstd dictionary trained across shards is the obvious follow-on
55
+ for the many-small-registries case, where per-shard compression has little context to work with.
56
+
57
+ <b>Deliverable.</b> A measured comparison — raw, interned, delta+varint, each &times; none/gzip/zstd
58
+ — on the real store, with import-side decode time beside each. That table is what tells
59
+ <a href="#publish-the-keyword-index">publish-the-keyword-index</a> what to ship, and it is worth
60
+ having even if publishing is declined: the on-disk win applies to every install today.