boost-skill-cli 1.2.183__tar.gz → 1.2.184__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 (1138) hide show
  1. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/configuration.py +16 -6
  4. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/info.py +13 -0
  5. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/quality.py +73 -4
  6. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/safety.py +18 -5
  7. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/integrity.py +47 -1
  8. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  9. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/an-item-materialized-nowhere-reads-ok-in-verify-health-drift.md +2 -2
  10. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap.html +1 -1
  11. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_quality.py +164 -1
  12. boost_skill_cli-1.2.184/tests/unit/test_drift_hint.py +115 -0
  13. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_integrity.py +231 -4
  14. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcp.py +66 -0
  15. boost_skill_cli-1.2.183/tests/unit/test_drift_hint.py +0 -55
  16. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.gitattributes +0 -0
  17. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.gitignore +0 -0
  18. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.gitleaks.toml +0 -0
  19. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.htmlvalidate.json +0 -0
  20. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.lighthouserc.json +0 -0
  21. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.lycheeignore +0 -0
  22. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.markdownlint-cli2.jsonc +0 -0
  23. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.pre-commit-config.yaml +0 -0
  24. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.stylelintrc.json +0 -0
  25. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.vale/styles/boost/AIWriting.yml +0 -0
  26. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.vale/styles/boost/Terminology.yml +0 -0
  27. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  28. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/.vale.ini +0 -0
  29. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/CLAUDE.md +0 -0
  30. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/CODE_OF_CONDUCT.md +0 -0
  31. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/CONTRIBUTING.md +0 -0
  32. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/DCO +0 -0
  33. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/GOVERNANCE.md +0 -0
  34. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/LICENSE +0 -0
  35. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/MAINTAINERS.md +0 -0
  36. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/MANIFEST.in +0 -0
  37. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/Makefile +0 -0
  38. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/README.md +0 -0
  39. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/SECURITY.md +0 -0
  40. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/SUPPORT.md +0 -0
  41. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost +0 -0
  42. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/__init__.py +0 -0
  43. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/__main__.py +0 -0
  44. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/cli.py +0 -0
  45. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/cliparse.py +0 -0
  46. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/__init__.py +0 -0
  47. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/_common.py +0 -0
  48. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/bmad.py +0 -0
  49. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/discovery.py +0 -0
  50. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/hooks.py +0 -0
  51. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/intelligence.py +0 -0
  52. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/pkg.py +0 -0
  53. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/quickstart.py +0 -0
  54. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/run.py +0 -0
  55. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/taps.py +0 -0
  56. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/commands/team.py +0 -0
  57. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/__init__.py +0 -0
  58. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/adapters.py +0 -0
  59. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/agents.py +0 -0
  60. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/ai.py +0 -0
  61. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/aihost.py +0 -0
  62. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/archive.py +0 -0
  63. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/bmad.py +0 -0
  64. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/bootstrap.py +0 -0
  65. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/browse.py +0 -0
  66. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/builtin.py +0 -0
  67. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/capabilities.py +0 -0
  68. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/catalog.py +0 -0
  69. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/catalogbundle.py +0 -0
  70. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/chat.py +0 -0
  71. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/claude_settings.py +0 -0
  72. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/cohort.py +0 -0
  73. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/compact.py +0 -0
  74. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/complete.py +0 -0
  75. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/config.py +0 -0
  76. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/dense.py +0 -0
  77. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/deps.py +0 -0
  78. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/discovery.py +0 -0
  79. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/ed25519.py +0 -0
  80. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/embed.py +0 -0
  81. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/faithfulness.py +0 -0
  82. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/frontmatter.py +0 -0
  83. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/gitutil.py +0 -0
  84. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/hookhost.py +0 -0
  85. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/imperative.py +0 -0
  86. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/injectscan.py +0 -0
  87. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/installscan.py +0 -0
  88. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/journal.py +0 -0
  89. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/jsonstate.py +0 -0
  90. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/localembed.py +0 -0
  91. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/lockfile.py +0 -0
  92. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/logs.py +0 -0
  93. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/mcp.py +0 -0
  94. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/mcpdecl.py +0 -0
  95. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/mcphost.py +0 -0
  96. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/minisign.py +0 -0
  97. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/nethttp.py +0 -0
  98. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/output.py +0 -0
  99. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/paths.py +0 -0
  100. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/policy.py +0 -0
  101. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/prereq.py +0 -0
  102. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/projectlock.py +0 -0
  103. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/provenance.py +0 -0
  104. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/rag.py +0 -0
  105. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/registry.py +0 -0
  106. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/report.py +0 -0
  107. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/resolve.py +0 -0
  108. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/rules.py +0 -0
  109. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/scopes.py +0 -0
  110. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/secretscan.py +0 -0
  111. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/selfupdate.py +0 -0
  112. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/serve.py +0 -0
  113. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/shards.py +0 -0
  114. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/stackprobe.py +0 -0
  115. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/staleness.py +0 -0
  116. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/store.py +0 -0
  117. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/trustaudit.py +0 -0
  118. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/typedvalue.py +0 -0
  119. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/typosquat.py +0 -0
  120. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/updatediff.py +0 -0
  121. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/util.py +0 -0
  122. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/core/workflows.py +0 -0
  123. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/data/registries.json +0 -0
  124. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/data/rules/boost-first.mdc +0 -0
  125. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/errors.py +0 -0
  126. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_cli/spin.py +0 -0
  127. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/__init__.py +0 -0
  128. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/_compat.py +0 -0
  129. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/graph.py +0 -0
  130. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/loader.py +0 -0
  131. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/py.typed +0 -0
  132. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_langchain/retriever.py +0 -0
  133. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  134. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  135. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  136. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/requires.txt +0 -0
  137. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/boost_skill_cli.egg-info/top_level.txt +0 -0
  138. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/codecov.yml +0 -0
  139. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/DEBUGGING.md +0 -0
  140. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/adapters.html +0 -0
  141. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/architecture/README.md +0 -0
  142. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/architecture/c4-components-core.md +0 -0
  143. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/architecture/c4-containers.md +0 -0
  144. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/architecture/c4-context.md +0 -0
  145. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/architecture/c4-dynamic-install.md +0 -0
  146. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/bmad.md +0 -0
  147. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/distill.gif +0 -0
  148. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/doctor.gif +0 -0
  149. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/explain.gif +0 -0
  150. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/hooks.gif +0 -0
  151. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/install.gif +0 -0
  152. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/pulse.gif +0 -0
  153. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/search.gif +0 -0
  154. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/gifs/tap.gif +0 -0
  155. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/distill.tape +0 -0
  156. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/doctor.tape +0 -0
  157. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/explain.tape +0 -0
  158. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/hooks.tape +0 -0
  159. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/install.tape +0 -0
  160. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/pulse.tape +0 -0
  161. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/search.tape +0 -0
  162. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel/tapes/tap.tape +0 -0
  163. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/carousel.html +0 -0
  164. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/chat.html +0 -0
  165. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/code-review.md +0 -0
  166. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/commands.html +0 -0
  167. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/commit-audit.md +0 -0
  168. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/demo-index.json +0 -0
  169. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/demo.gif +0 -0
  170. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/demo.html +0 -0
  171. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/demo.tape +0 -0
  172. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/dependencies.md +0 -0
  173. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/design-roadmap.html +0 -0
  174. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/eval-latest.json +0 -0
  175. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/eval.html +0 -0
  176. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/index.html +0 -0
  177. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/langchain.html +0 -0
  178. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/mcp-hub.html +0 -0
  179. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/openssf-badge.md +0 -0
  180. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/openssf-playbook.md +0 -0
  181. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/rag-architecture.md +0 -0
  182. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D01.md +0 -0
  183. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D02.md +0 -0
  184. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D03.md +0 -0
  185. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D04.md +0 -0
  186. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D05.md +0 -0
  187. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D06.md +0 -0
  188. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D07.md +0 -0
  189. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D08.md +0 -0
  190. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D09.md +0 -0
  191. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D10.md +0 -0
  192. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D11.md +0 -0
  193. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D12.md +0 -0
  194. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D13.md +0 -0
  195. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D14.md +0 -0
  196. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D15.md +0 -0
  197. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D16.md +0 -0
  198. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D17.md +0 -0
  199. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D18.md +0 -0
  200. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D19.md +0 -0
  201. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D20.md +0 -0
  202. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D21.md +0 -0
  203. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D22.md +0 -0
  204. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D23.md +0 -0
  205. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D24.md +0 -0
  206. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D25.md +0 -0
  207. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D26.md +0 -0
  208. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/BOOST-D27.md +0 -0
  209. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  210. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  211. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  212. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  213. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  214. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  215. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  216. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  217. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  218. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  219. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  220. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  221. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  222. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  223. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  224. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  225. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  226. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  227. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  228. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-attest-findings.md +0 -0
  229. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-audit-findings.md +0 -0
  230. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  231. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-browse-findings.md +0 -0
  232. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  233. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  234. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  235. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  236. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-chat-findings.md +0 -0
  237. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  238. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  239. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  240. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-completions-findings.md +0 -0
  241. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-config-findings.md +0 -0
  242. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  243. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-context-findings.md +0 -0
  244. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  245. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  246. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-create-findings.md +0 -0
  247. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  248. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-deps-findings.md +0 -0
  249. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-discover-findings.md +0 -0
  250. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  251. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  252. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-drift-findings.md +0 -0
  253. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  254. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-edit-findings.md +0 -0
  255. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  256. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-explain-findings.md +0 -0
  257. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-export-findings.md +0 -0
  258. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  259. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  260. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  261. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  262. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  263. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-health-findings.md +0 -0
  264. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  265. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  266. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-import-findings.md +0 -0
  267. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-index-findings.md +0 -0
  268. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  269. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  270. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-install-findings.md +0 -0
  271. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  272. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  273. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-lint-findings.md +0 -0
  274. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-log-findings.md +0 -0
  275. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  276. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  277. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  278. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  279. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  280. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  281. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  282. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  283. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  284. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  285. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  286. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-policy-findings.md +0 -0
  287. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-preview-findings.md +0 -0
  288. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-profile-findings.md +0 -0
  289. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  290. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  291. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  292. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  293. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  294. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  295. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  296. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  297. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  298. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-replay-findings.md +0 -0
  299. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-root-findings.md +0 -0
  300. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  301. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-run-findings.md +0 -0
  302. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  303. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-search-findings.md +0 -0
  304. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  305. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  306. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  307. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  308. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  309. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  310. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  311. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  312. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-sync-findings.md +0 -0
  313. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-tag-findings.md +0 -0
  314. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  315. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-tap-findings.md +0 -0
  316. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-taps-findings.md +0 -0
  317. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  318. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-test-findings.md +0 -0
  319. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-trust-findings.md +0 -0
  320. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  321. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  322. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-untap-findings.md +0 -0
  323. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-update-findings.md +0 -0
  324. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  325. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-verify-findings.md +0 -0
  326. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/audit-who-findings.md +0 -0
  327. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  328. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  329. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  330. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  331. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  332. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  333. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  334. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  335. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  336. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  337. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  338. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  339. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  340. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  341. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  342. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  343. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/boost-first-rule.md +0 -0
  344. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  345. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  346. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/branch-current-gate.md +0 -0
  347. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  348. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  349. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  350. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  351. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  352. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  353. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  354. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md +0 -0
  355. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md +0 -0
  356. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  357. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  358. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  359. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  360. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  361. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  362. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  363. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  364. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  365. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  366. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  367. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  368. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  369. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cli-command-audit.md +0 -0
  370. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  371. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  372. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  373. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  374. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  375. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  376. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/command-carousel-page.md +0 -0
  377. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  378. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  379. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  380. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  381. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  382. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/concurrency-probe-measured-a-race-not-the-pool.md +0 -0
  383. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  384. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  385. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  386. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  387. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  388. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  389. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  390. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  391. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  392. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  393. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  394. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  395. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  396. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  397. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  398. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  399. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
  400. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  401. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  402. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  403. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  404. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  405. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  406. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  407. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  408. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  409. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  410. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  411. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  412. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  413. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  414. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  415. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  416. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  417. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  418. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  419. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  420. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  421. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  422. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  423. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  424. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  425. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  426. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  427. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  428. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  429. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  430. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  431. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  432. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  433. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  434. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  435. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  436. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  437. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  438. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  439. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  440. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  441. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/floors-job-never-installed-setuptools.md +0 -0
  442. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  443. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  444. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  445. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  446. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  447. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  448. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  449. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  450. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  451. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  452. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  453. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  454. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  455. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/github-community-health-files.md +0 -0
  456. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  457. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  458. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  459. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  460. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  461. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  462. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  463. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  464. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  465. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  466. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  467. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  468. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  469. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  470. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  471. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  472. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  473. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  474. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  475. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/install-writes-through-a-redirected-dotdir-uninstall-will-not.md +0 -0
  476. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  477. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  478. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  479. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  480. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/is-dir-follows-a-symlink-at-eleven-rmtree-call-sites.md +0 -0
  481. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  482. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  483. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  484. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  485. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  486. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  487. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  488. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  489. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  490. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  491. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  492. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  493. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  494. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  495. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  496. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  497. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  498. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  499. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  500. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  501. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  502. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  503. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  504. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  505. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  506. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  507. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  508. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  509. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  510. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  511. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  512. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  513. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  514. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  515. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  516. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  517. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  518. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  519. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  520. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  521. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  522. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  523. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  524. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  525. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  526. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  527. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  528. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  529. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  530. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  531. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  532. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  533. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  534. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  535. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  536. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  537. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  538. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  539. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  540. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  541. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  542. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  543. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-shard-balance-hints-are-a-release-behind.md +0 -0
  544. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  545. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  546. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  547. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  548. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  549. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  550. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  551. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  552. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-class-makes-registry-py-unsplittable.md +0 -0
  553. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  554. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  555. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  556. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  557. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  558. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  559. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  560. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/openssf-playbook.md +0 -0
  561. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/openssf-silver.md +0 -0
  562. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  563. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  564. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  565. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  566. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  567. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  568. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  569. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  570. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  571. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  572. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  573. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  574. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  575. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  576. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/project-scope-in-an-unmarked-tree-does-not-walk-up.md +0 -0
  577. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  578. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/project-uninstall-deletes-any-in-repo-directory-the-lock-names.md +0 -0
  579. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  580. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  581. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  582. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  583. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  584. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  585. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  586. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  587. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  588. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  589. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  590. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  591. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  592. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  593. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  594. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  595. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  596. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  597. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  598. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  599. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  600. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  601. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  602. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  603. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  604. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  605. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  606. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  607. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  608. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  609. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  610. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  611. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/relicence-apache-2.md +0 -0
  612. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  613. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  614. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  615. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  616. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  617. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  618. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  619. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  620. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  621. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  622. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  623. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  624. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  625. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/rule-and-workflow-rows-carry-a-scope-nothing-but-list-local-reads.md +0 -0
  626. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  627. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  628. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  629. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  630. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  631. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  632. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  633. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  634. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  635. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  636. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  637. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  638. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  639. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  640. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  641. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  642. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  643. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  644. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  645. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  646. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  647. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  648. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  649. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  650. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  651. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  652. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  653. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  654. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  655. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  656. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  657. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  658. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md +0 -0
  659. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  660. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  661. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  662. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  663. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  664. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  665. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  666. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  667. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  668. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  669. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  670. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  671. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  672. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  673. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  674. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  675. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  676. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  677. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  678. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  679. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  680. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  681. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  682. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  683. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  684. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  685. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  686. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md +0 -0
  687. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  688. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  689. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  690. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  691. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  692. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  693. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-shard-model-has-no-per-job-fixed-cost.md +0 -0
  694. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  695. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  696. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  697. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  698. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  699. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  700. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  701. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  702. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  703. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  704. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  705. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/uninstall-local-cannot-remove-a-rule-or-workflow-list-local-shows.md +0 -0
  706. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  707. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  708. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  709. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  710. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  711. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  712. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  713. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  714. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  715. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  716. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/util-rmtree-chmods-a-symlink-target-outside-the-tree.md +0 -0
  717. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  718. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  719. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  720. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  721. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  722. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  723. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  724. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  725. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  726. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/workspace-scope-install.md +0 -0
  727. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/wrap-width-judged-by-stdout.md +0 -0
  728. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +0 -0
  729. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/zip-strict-audit.md +0 -0
  730. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  731. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  732. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/security-design.md +0 -0
  733. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/semantic-search.md +0 -0
  734. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  735. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/verifying-releases.md +0 -0
  736. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/meta.md +0 -0
  737. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/openvex.json +0 -0
  738. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  739. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  740. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  741. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  742. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/eslint.config.mjs +0 -0
  743. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/README.md +0 -0
  744. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/__init__.py +0 -0
  745. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/baseline.json +0 -0
  746. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/faithfulness.py +0 -0
  747. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/golden_set.json +0 -0
  748. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/make_corpus.py +0 -0
  749. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/make_golden.py +0 -0
  750. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/metrics.py +0 -0
  751. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/publish_golden_dataset.py +0 -0
  752. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/evals/run_evals.py +0 -0
  753. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/examples/README.md +0 -0
  754. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/examples/adapt-demo.sh +0 -0
  755. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/examples/boost-run-prototype.sh +0 -0
  756. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/index.html +0 -0
  757. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/noxfile.py +0 -0
  758. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/pyproject.toml +0 -0
  759. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/coverage-tools.in +0 -0
  760. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/coverage-tools.txt +0 -0
  761. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/lint-tools.in +0 -0
  762. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/lint-tools.txt +0 -0
  763. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/mutation-tools.in +0 -0
  764. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/mutation-tools.txt +0 -0
  765. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/platform-pins.lock +0 -0
  766. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/release-tools.in +0 -0
  767. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/release-tools.txt +0 -0
  768. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/test-tools.in +0 -0
  769. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/requirements/test-tools.txt +0 -0
  770. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/a11y_check.py +0 -0
  771. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/add_spdx_headers.py +0 -0
  772. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/bench_cli.sh +0 -0
  773. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_command_reference.py +0 -0
  774. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_demo_index.py +0 -0
  775. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_registries.py +0 -0
  776. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_roadmap.py +0 -0
  777. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_scale_corpus.py +0 -0
  778. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/build_vex.py +0 -0
  779. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_anchors.py +0 -0
  780. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_branch_current.py +0 -0
  781. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_dco.py +0 -0
  782. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_licenses.py +0 -0
  783. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_reproducible.py +0 -0
  784. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/check_required_checks.py +0 -0
  785. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/ensure_eval_corpus.sh +0 -0
  786. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_corpus.py +0 -0
  787. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_explain.py +0 -0
  788. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_gate.py +0 -0
  789. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_recommend.py +0 -0
  790. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_retrieval.py +0 -0
  791. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_stats_summary.py +0 -0
  792. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/eval_tools.py +0 -0
  793. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/import_budget.py +0 -0
  794. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/lock_toolchain.py +0 -0
  795. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/measure_near_duplicate_bound.py +0 -0
  796. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/measure_registry.py +0 -0
  797. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/mutation_gate.py +0 -0
  798. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/mutation_shards.py +0 -0
  799. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/mutation_weights.json +0 -0
  800. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/normalize_sdist.py +0 -0
  801. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/page_budget.py +0 -0
  802. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/perf_gate.py +0 -0
  803. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/post_deploy_smoke.py +0 -0
  804. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/publish_eval_json.py +0 -0
  805. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/publish_shards.py +0 -0
  806. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/release_guard.py +0 -0
  807. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/release_preflight.py +0 -0
  808. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/serve_docs.py +0 -0
  809. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/scripts/shard_plan.py +0 -0
  810. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/setup.cfg +0 -0
  811. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/sonar-project.properties +0 -0
  812. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/style/README.md +0 -0
  813. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/style/boost.css +0 -0
  814. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/style/boost.js +0 -0
  815. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/style/demo.html +0 -0
  816. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/adapt.feature +0 -0
  817. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/browse.feature +0 -0
  818. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/count.feature +0 -0
  819. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/discover.feature +0 -0
  820. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/doctor.feature +0 -0
  821. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/environment.py +0 -0
  822. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/explain.feature +0 -0
  823. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/index.feature +0 -0
  824. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/install.feature +0 -0
  825. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/list.feature +0 -0
  826. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/mcp.feature +0 -0
  827. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/search.feature +0 -0
  828. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/steps/cli_steps.py +0 -0
  829. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/steps/discovery_steps.py +0 -0
  830. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/steps/mcp_steps.py +0 -0
  831. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/bdd/features/steps/quality_steps.py +0 -0
  832. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/conftest.py +0 -0
  833. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/baseline.json +0 -0
  834. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/explain.jsonl +0 -0
  835. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  836. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/golden-natural.jsonl +0 -0
  837. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/golden.jsonl +0 -0
  838. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/recommend.jsonl +0 -0
  839. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/taps-scale.txt +0 -0
  840. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/taps.txt +0 -0
  841. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/eval/tool_calls.jsonl +0 -0
  842. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  843. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_bmad_all_hosts.py +0 -0
  844. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_bmad_personas_scope.py +0 -0
  845. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_capabilities_policy.py +0 -0
  846. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_adapt.py +0 -0
  847. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_bmad.py +0 -0
  848. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_catalog.py +0 -0
  849. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_chat.py +0 -0
  850. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_configuration.py +0 -0
  851. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_discovery.py +0 -0
  852. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_hooks.py +0 -0
  853. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_hooks_codex.py +0 -0
  854. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_hooks_gemini.py +0 -0
  855. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_identifier_columns.py +0 -0
  856. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_info.py +0 -0
  857. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_intelligence.py +0 -0
  858. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_json_reports.py +0 -0
  859. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_pane_width.py +0 -0
  860. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_pkg.py +0 -0
  861. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_quickstart.py +0 -0
  862. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_tap_pins.py +0 -0
  863. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_taps.py +0 -0
  864. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_cli_team.py +0 -0
  865. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  866. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  867. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_everyday_loop.py +0 -0
  868. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_integrity_enforce.py +0 -0
  869. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_keyed_no_store_hint.py +0 -0
  870. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_kind_conformance.py +0 -0
  871. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_property_parsers.py +0 -0
  872. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_recommend_because_is_true.py +0 -0
  873. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  874. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_reports_match_reality.py +0 -0
  875. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_run.py +0 -0
  876. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_tap_signing.py +0 -0
  877. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/functional/test_workspace_scope.py +0 -0
  878. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/README.md +0 -0
  879. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  880. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  881. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  882. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  883. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  884. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  885. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  886. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  887. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  888. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  889. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  890. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  891. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  892. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  893. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  894. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  895. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  896. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  897. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  898. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  899. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  900. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  901. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  902. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/fuzz_frontmatter.py +0 -0
  903. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/fuzz/fuzz_registry.py +0 -0
  904. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/langchain/conftest.py +0 -0
  905. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/langchain/test_graph.py +0 -0
  906. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/langchain/test_loader.py +0 -0
  907. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/langchain/test_retriever.py +0 -0
  908. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/make_fixture.py +0 -0
  909. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/perf/test_benchmarks.py +0 -0
  910. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/smoke.sh +0 -0
  911. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  912. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_a11y_check.py +0 -0
  913. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_action_pin_lockstep.py +0 -0
  914. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_adapters.py +0 -0
  915. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_adapters_multi.py +0 -0
  916. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_adapters_runner.py +0 -0
  917. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_agents.py +0 -0
  918. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_ai.py +0 -0
  919. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_aihost.py +0 -0
  920. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_archive.py +0 -0
  921. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_bmad_core.py +0 -0
  922. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_boost_first_offer.py +0 -0
  923. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_bootstrap.py +0 -0
  924. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_bot_pr_dco.py +0 -0
  925. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_branch_current.py +0 -0
  926. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_browse.py +0 -0
  927. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_builtin.py +0 -0
  928. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_canary_deps.py +0 -0
  929. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_capabilities.py +0 -0
  930. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_catalog.py +0 -0
  931. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_catalog_distinct.py +0 -0
  932. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_catalog_keyword_words.py +0 -0
  933. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_catalogbundle.py +0 -0
  934. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_chat.py +0 -0
  935. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_check_anchors.py +0 -0
  936. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_check_dco.py +0 -0
  937. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_check_licenses.py +0 -0
  938. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_check_reproducible.py +0 -0
  939. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_claude_settings.py +0 -0
  940. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_claude_settings_codex.py +0 -0
  941. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_clean_internal_cache.py +0 -0
  942. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_cli_update_shards.py +0 -0
  943. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_cliparse.py +0 -0
  944. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_codeql_analysis_key.py +0 -0
  945. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_cohort.py +0 -0
  946. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_command_reference_fresh.py +0 -0
  947. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_community_health_files.py +0 -0
  948. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_compact.py +0 -0
  949. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_complete.py +0 -0
  950. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_complete_rc_block.py +0 -0
  951. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_config.py +0 -0
  952. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_content_dedupe.py +0 -0
  953. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_content_identity.py +0 -0
  954. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_corpus_prose.py +0 -0
  955. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  956. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_coverage_gate_prose.py +0 -0
  957. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_crash_redaction.py +0 -0
  958. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dedup_trust.py +0 -0
  959. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_demo_index.py +0 -0
  960. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense.py +0 -0
  961. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  962. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_embed_dedupe.py +0 -0
  963. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_entry_reuse.py +0 -0
  964. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_entry_vectors.py +0 -0
  965. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_fallback.py +0 -0
  966. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_fix_hint.py +0 -0
  967. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_model_unavailable.py +0 -0
  968. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_progress.py +0 -0
  969. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_quantized.py +0 -0
  970. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_ready_order.py +0 -0
  971. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_shard_real_schema.py +0 -0
  972. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  973. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_shards.py +0 -0
  974. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_status.py +0 -0
  975. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_status_cheap.py +0 -0
  976. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dense_vector_dedupe.py +0 -0
  977. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dependabot_config.py +0 -0
  978. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_deps.py +0 -0
  979. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_discovery.py +0 -0
  980. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_distill_merge.py +0 -0
  981. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_docs_pages_linked.py +0 -0
  982. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_docsite_chrome.py +0 -0
  983. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_doctor_output_polish.py +0 -0
  984. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_dry_run_parity.py +0 -0
  985. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_ed25519.py +0 -0
  986. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_embed.py +0 -0
  987. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_embed_local.py +0 -0
  988. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_embed_outranking.py +0 -0
  989. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_embed_truncated_response.py +0 -0
  990. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_entry_key.py +0 -0
  991. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_errors_and_cli_table.py +0 -0
  992. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_baseline.py +0 -0
  993. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_corpus.py +0 -0
  994. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_corpus_bodies.py +0 -0
  995. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_faithfulness.py +0 -0
  996. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_gate.py +0 -0
  997. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_grading.py +0 -0
  998. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_metrics.py +0 -0
  999. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_query_sets.py +0 -0
  1000. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_stats_summary.py +0 -0
  1001. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_tools.py +0 -0
  1002. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_eval_tools_probe.py +0 -0
  1003. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  1004. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_faithfulness.py +0 -0
  1005. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_first_run_pointer.py +0 -0
  1006. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_frontmatter.py +0 -0
  1007. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_fuzz_targets.py +0 -0
  1008. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  1009. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gitleaks_config.py +0 -0
  1010. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gitutil.py +0 -0
  1011. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gitutil_lfs.py +0 -0
  1012. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gitutil_sparse.py +0 -0
  1013. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_gstack_coexistence.py +0 -0
  1014. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_help_contracts.py +0 -0
  1015. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_hook_settings_hosts.py +0 -0
  1016. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_hookhost.py +0 -0
  1017. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_hookhost_codex.py +0 -0
  1018. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_imperative.py +0 -0
  1019. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_import_budget.py +0 -0
  1020. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_injectscan.py +0 -0
  1021. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_install_permission_error.py +0 -0
  1022. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_installscan.py +0 -0
  1023. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_journal.py +0 -0
  1024. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_jsonstate.py +0 -0
  1025. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_langchain_packaging.py +0 -0
  1026. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_launcher_python_floor.py +0 -0
  1027. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_lighthouse_budgets.py +0 -0
  1028. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_link_ownership.py +0 -0
  1029. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_localembed.py +0 -0
  1030. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_localembed_e2e.py +0 -0
  1031. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_lockfile.py +0 -0
  1032. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_logs.py +0 -0
  1033. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_marketing_counts.py +0 -0
  1034. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1035. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcp_install_scan.py +0 -0
  1036. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcp_read.py +0 -0
  1037. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcpdecl.py +0 -0
  1038. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mcphost.py +0 -0
  1039. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_measure_registry.py +0 -0
  1040. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_minisign.py +0 -0
  1041. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_hardening.py +0 -0
  1042. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_shard_count.py +0 -0
  1043. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_shards.py +0 -0
  1044. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_split_measured.py +0 -0
  1045. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_subfile_shards.py +0 -0
  1046. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutation_weights_drift.py +0 -0
  1047. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_mutmut_source_paths.py +0 -0
  1048. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1049. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_nethttp.py +0 -0
  1050. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_normalize_sdist.py +0 -0
  1051. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_output.py +0 -0
  1052. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_output_table_drop.py +0 -0
  1053. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_output_table_whole.py +0 -0
  1054. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_page_budget.py +0 -0
  1055. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_paths.py +0 -0
  1056. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_perf_gate.py +0 -0
  1057. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_pkg_confusions.py +0 -0
  1058. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_pkg_injection.py +0 -0
  1059. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_pkg_secrets.py +0 -0
  1060. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_platform_pins.py +0 -0
  1061. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_policy.py +0 -0
  1062. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_post_deploy_smoke.py +0 -0
  1063. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_prereq.py +0 -0
  1064. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1065. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_projectlock.py +0 -0
  1066. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_provenance.py +0 -0
  1067. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_publish_golden_dataset.py +0 -0
  1068. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_quickstart_readiness.py +0 -0
  1069. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rag.py +0 -0
  1070. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rag_completeness.py +0 -0
  1071. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rag_extra_hint.py +0 -0
  1072. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rag_fastpath.py +0 -0
  1073. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rag_fusion.py +0 -0
  1074. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_read_text_arg.py +0 -0
  1075. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_registries_fresh.py +0 -0
  1076. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_registry.py +0 -0
  1077. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_registry_categories.py +0 -0
  1078. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_registry_control_chars.py +0 -0
  1079. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_registry_parallel.py +0 -0
  1080. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_release_guard.py +0 -0
  1081. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_release_preflight.py +0 -0
  1082. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_repo_root_guard.py +0 -0
  1083. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_report.py +0 -0
  1084. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_required_checks.py +0 -0
  1085. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rerank_cache.py +0 -0
  1086. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_resolve.py +0 -0
  1087. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1088. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_roadmap_fresh.py +0 -0
  1089. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_rules.py +0 -0
  1090. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1091. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_scale_corpus.py +0 -0
  1092. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_schedule_plist.py +0 -0
  1093. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_scopes.py +0 -0
  1094. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_sdist_contents.py +0 -0
  1095. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_secretscan.py +0 -0
  1096. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_selfupdate.py +0 -0
  1097. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_serve.py +0 -0
  1098. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_serve_docs.py +0 -0
  1099. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shard_plan.py +0 -0
  1100. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shards.py +0 -0
  1101. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shards_carry_forward.py +0 -0
  1102. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shards_incremental.py +0 -0
  1103. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shards_ingest.py +0 -0
  1104. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_shards_matrix.py +0 -0
  1105. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1106. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_spdx_headers.py +0 -0
  1107. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_spin.py +0 -0
  1108. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_stackprobe.py +0 -0
  1109. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_staleness.py +0 -0
  1110. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_store.py +0 -0
  1111. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_store_materialize.py +0 -0
  1112. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_sync_blocked_links.py +0 -0
  1113. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_sync_lost_lock.py +0 -0
  1114. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1115. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_tap_pins.py +0 -0
  1116. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_text_io_names_its_encoding.py +0 -0
  1117. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_token_parity.py +0 -0
  1118. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_toolchain_lock.py +0 -0
  1119. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_trustaudit.py +0 -0
  1120. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_typedvalue.py +0 -0
  1121. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_typosquat.py +0 -0
  1122. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_updatediff.py +0 -0
  1123. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_upstream_path.py +0 -0
  1124. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_util.py +0 -0
  1125. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_version.py +0 -0
  1126. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_version_tags.py +0 -0
  1127. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_vex.py +0 -0
  1128. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_visual_harness_capture.py +0 -0
  1129. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_visual_harness_flags.py +0 -0
  1130. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_workflow_concurrency.py +0 -0
  1131. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1132. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1133. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_workflow_timeouts.py +0 -0
  1134. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_workflows.py +0 -0
  1135. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1136. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/visual/a11y_check.mjs +0 -0
  1137. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/tests/visual/console_check.mjs +0 -0
  1138. {boost_skill_cli-1.2.183 → boost_skill_cli-1.2.184}/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.183
3
+ Version: 1.2.184
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.183'
22
- __version_tuple__ = version_tuple = (1, 2, 183)
21
+ __version__ = version = '1.2.184'
22
+ __version_tuple__ = version_tuple = (1, 2, 184)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1648,12 +1648,22 @@ def _tool_doctor(args: dict):
1648
1648
  if vals:
1649
1649
  lines.append("%s: %s" % (key, ", ".join(str(v) for v in vals)))
1650
1650
  # sync_plan already reports MISSING rule/workflow materializations; the
1651
- # digest check adds the drift sync cannot see — content edited in place.
1652
- mat_issues = ["%s %s: modified since install" % (kind, n)
1653
- for kind in ("rule", "workflow")
1654
- for n, e in sorted(everything[kind].items())
1655
- if (integrity.materialized_status(n, e, kind)
1656
- == integrity.STATUS_MODIFIED)]
1651
+ # digest check adds the drift sync cannot see — content edited in place,
1652
+ # and an item that reaches no agent at all. The second is squarely the
1653
+ # same case: sync_plan filters an unwritten row out by design, so an item
1654
+ # whose every row is unwritten is invisible to it. A label map rather
1655
+ # than an equality test, so a status added to one of these and not the
1656
+ # other cannot quietly drop out of the count on the one doctor surface
1657
+ # with no human reading it.
1658
+ _MAT_ISSUE_LABEL = {
1659
+ integrity.STATUS_MODIFIED: "modified since install",
1660
+ integrity.STATUS_UNREACHABLE: "reaches no agent boost writes",
1661
+ }
1662
+ mat_issues = [
1663
+ "%s %s: %s" % (kind, n, _MAT_ISSUE_LABEL[st])
1664
+ for kind in ("rule", "workflow")
1665
+ for n, e in sorted(everything[kind].items())
1666
+ if (st := integrity.materialized_status(n, e, kind)) in _MAT_ISSUE_LABEL]
1657
1667
  lines.extend(mat_issues)
1658
1668
  total = issues + len(mat_issues)
1659
1669
  # A machine with no taps has nothing to disagree about, so every check
@@ -437,6 +437,19 @@ def _info_materialized(name: str, kind: str, entry: dict, as_json: bool) -> int:
437
437
  # nothing. Printing the stale agent list here reads as a lie about
438
438
  # files that were just removed.
439
439
  out.kv("materialized", "(removed — quarantined)")
440
+ elif integrity.reaches_no_agent(kind, entry):
441
+ # `agent_names` lists every recorded row, so the dangerous case
442
+ # advertised the five agents the rule does not reach while the
443
+ # harmless no-rows case showed none — the two read backwards from
444
+ # how a user judges risk.
445
+ # Both halves inflect. One row is the commonest shape by far -- most
446
+ # items record exactly one -- so a noun-only plural put the ungrammar
447
+ # on the usual path and hid it on the rare one.
448
+ rows = len(entry.get("materializations") or [])
449
+ out.kv("materialized",
450
+ "(none — %d recorded row%s name%s an agent boost no longer "
451
+ "writes)" % (rows, "" if rows == 1 else "s",
452
+ "s" if rows == 1 else ""))
440
453
  else:
441
454
  out.kv("materialized",
442
455
  ", ".join(lockfile.agent_names(kind, entry)) or "(none)")
@@ -258,6 +258,11 @@ def _drift_status_materialized(kind: str, name: str, entry: dict) -> str:
258
258
  return "store-missing"
259
259
  if st == integrity.STATUS_MODIFIED:
260
260
  return "local-edits"
261
+ if st == integrity.STATUS_UNREACHABLE:
262
+ # Before the tap comparison below, which would otherwise launder an
263
+ # item that reaches no agent into "in-sync" on the strength of a
264
+ # source file matching a hash nothing on disk was written from.
265
+ return "unreachable"
261
266
  if entry.get("tap") == "local":
262
267
  return "n/a"
263
268
  try:
@@ -270,10 +275,15 @@ def _drift_status_materialized(kind: str, name: str, entry: dict) -> str:
270
275
  return "in-sync"
271
276
 
272
277
 
278
+ #: Every word `_drift_status` and `_drift_status_materialized` can return.
279
+ #: The render site subscripts this directly, so a missing key is a KeyError --
280
+ #: not a BoostError, so `boost drift` exits 70 with a crash report rather than
281
+ #: mis-painting one cell. `test_drift_vocabulary_is_covered` pins the two
282
+ #: against each other.
273
283
  _DRIFT_ROLE = {"in-sync": "success", "local-edits": "warn",
274
284
  "upstream-moved": "accent", "source-missing": "danger",
275
285
  "store-missing": "danger", "n/a": "muted",
276
- "quarantined": "muted"}
286
+ "quarantined": "muted", "unreachable": "warn"}
277
287
 
278
288
 
279
289
  def _drift_hint(name: str, status: str, tap: str = "") -> str:
@@ -290,6 +300,12 @@ def _drift_hint(name: str, status: str, tap: str = "") -> str:
290
300
  return "boost update" if registry.is_tapped(tap) else "boost tap %s" % tap
291
301
  if status == "store-missing":
292
302
  return "boost heal"
303
+ if status == "unreachable":
304
+ # Not `boost sync`: it filters these rows out by design, so it is a
305
+ # guaranteed no-op. Not "re-enable the agent" either -- that is wrong
306
+ # advice for `agents.WITHDRAWN_REASONS`. `doctor` is where
307
+ # `_mat_remedy` words the split correctly.
308
+ return "boost doctor"
293
309
  return ""
294
310
 
295
311
 
@@ -744,6 +760,32 @@ def cmd_doctor(argv):
744
760
  % (len(off), _s(len(off)), "s" if len(off) == 1 else "",
745
761
  ", ".join(shown), _mat_remedy(off)),
746
762
  wrap=True)
763
+ # The per-row note above answers "which row, which agent, why". This
764
+ # answers a different question the surfaces had nowhere to put: skip every
765
+ # row an item has and the item reached no agent at all. `rep.note`, not
766
+ # `rep.warn` -- WARN is documented as restating a fault already counted,
767
+ # and this one is counted nowhere -- and not `rep.issue`, which would
768
+ # invert doctor's standing convention that a config-orphaned row is the
769
+ # user's own decision, named once and never scored. `verify` and `attest`
770
+ # are the surfaces that fail; doctor's job here is to stop contradicting
771
+ # its own note.
772
+ nowhere = [(kind, name)
773
+ for kind, section in (("rule", rules), ("workflow", workflows))
774
+ for name, entry in sorted(section.items())
775
+ if integrity.reaches_no_agent(kind, entry)]
776
+ if nowhere:
777
+ # No remedy sentence: every one of these items has at least one row,
778
+ # so the per-row note above has already printed `_mat_remedy`'s
779
+ # wording for it, and repeating it verbatim one line later is how a
780
+ # report teaches the reader to skim past it.
781
+ rep.note("materialized-nowhere",
782
+ "%d item%s reach%s no agent boost writes, so %s installed "
783
+ "but loaded by nothing: %s"
784
+ % (len(nowhere), _s(len(nowhere)),
785
+ "es" if len(nowhere) == 1 else "",
786
+ "it is" if len(nowhere) == 1 else "they are",
787
+ ", ".join("%s %s" % (k, n) for k, n in nowhere)),
788
+ wrap=True)
747
789
  if (all_rules or all_workflows) and not mat_issues:
748
790
  # Quarantined rules/workflows are excluded above so their stashed-but-
749
791
  # removed materializations don't read as rot — but excluding them from
@@ -765,9 +807,15 @@ def cmd_doctor(argv):
765
807
  # right above it: "fully materialized" is true of the agents boost
766
808
  # writes, and that is now a smaller set than the rows record.
767
809
  note += " for every agent boost writes"
810
+ # Counted over the items that reach at least one agent. The suffix
811
+ # above is what the note said this line contradicted -- "fully
812
+ # materialized for every agent boost writes" is trivially true of an
813
+ # item whose write set is empty, so counting it there is what made
814
+ # the count true as worded and false as read.
815
+ n_rules = len(rules) - sum(1 for k, _n in nowhere if k == "rule")
816
+ n_flows = len(workflows) - sum(1 for k, _n in nowhere if k == "workflow")
768
817
  rep.ok("rules-workflows", "%d rule%s and %d workflow%s fully materialized%s"
769
- % (len(rules), _s(len(rules)), len(workflows), _s(len(workflows)),
770
- note))
818
+ % (n_rules, _s(n_rules), n_flows, _s(n_flows), note))
771
819
 
772
820
  root = paths.store_dir()
773
821
  orphans = [c.name for c in sorted(root.iterdir())
@@ -939,7 +987,21 @@ def cmd_doctor(argv):
939
987
  # MCP `boost_doctor` tool already refused to say "healthy" here; this is
940
988
  # the CLI half of the same rule.
941
989
  issues = rep.issues
942
- if issues == 0 and not configured:
990
+ if issues == 0 and nowhere:
991
+ # Same rule as the no-taps case above, for the same reason: "healthy"
992
+ # is the one word this machine is not. An item nothing loads is not
993
+ # an issue -- it is the user's own config, and doctor's convention is
994
+ # to name that rather than score it -- but `boost health` keys
995
+ # `needs attention` on it and sends the reader here, so a verdict
996
+ # reading "healthy" would close that loop with a flat contradiction.
997
+ # Reported, never fatal: the exit code still turns only on issues.
998
+ # Ahead of the no-taps branch below on purpose: a machine holding an
999
+ # installed item is not "ready to set up", and that wording would
1000
+ # bury the more specific fact under a setup prompt.
1001
+ rep.verdict(False,
1002
+ "%d item%s installed but loaded by nothing — see above"
1003
+ % (len(nowhere), _s(len(nowhere))))
1004
+ elif issues == 0 and not configured:
943
1005
  rep.verdict(True, "ready to set up — tap a registry to make boost "
944
1006
  "searchable")
945
1007
  else:
@@ -1750,9 +1812,16 @@ def cmd_health(argv):
1750
1812
  kv("journal (7d)", "%d event%s" % (recent, _s(recent)), recent)
1751
1813
  kv("fingerprint", _fingerprint()[0][:16])
1752
1814
 
1815
+ # The membership rule is "is there anything there", not "has it drifted":
1816
+ # `local-edits` and `upstream-moved` are expected states of a *live*
1817
+ # install, while these three each mean the install reaches nothing --
1818
+ # the store dir is gone, the source is gone, or no agent was ever
1819
+ # written. Leaving `unreachable` out would be the bug this status was
1820
+ # added for, wearing a new word.
1753
1821
  attention = (bool(broken) or not coverage_ok
1754
1822
  or drift_counts.get("store-missing", 0) > 0
1755
1823
  or drift_counts.get("source-missing", 0) > 0
1824
+ or drift_counts.get("unreachable", 0) > 0
1756
1825
  or not journal.rotation_healthy())
1757
1826
  if args.json:
1758
1827
  print(json.dumps(data | {"ok": not attention,
@@ -645,14 +645,21 @@ def cmd_attest(argv):
645
645
  # it was written. UNLOCKED (a pre-hash entry) never fails.
646
646
  st = integrity.materialized_status(name, entry, kind)
647
647
  rec["sha_ok"] = st not in (integrity.STATUS_MODIFIED,
648
- integrity.STATUS_MISSING)
648
+ integrity.STATUS_MISSING,
649
+ integrity.STATUS_UNREACHABLE)
649
650
  rec["journal"] = ev is not None
650
651
  if not rec["sha_ok"]:
651
652
  # A missing store dir / materialized artifact is not a content
652
653
  # change — conflating the two sends the user hunting for
653
- # tampering when the remedy is `boost heal`.
654
- rec["reason"] = ("missing" if st == integrity.STATUS_MISSING
655
- else "modified")
654
+ # tampering when the remedy is `boost heal`. Unreachable is a
655
+ # third thing again: nothing was tampered with and nothing is
656
+ # missing, because no artifact was ever written. Folding it
657
+ # into "modified" would accuse a user of editing a file whose
658
+ # only act was turning an agent off.
659
+ rec["reason"] = (
660
+ "unreachable" if st == integrity.STATUS_UNREACHABLE
661
+ else "missing" if st == integrity.STATUS_MISSING
662
+ else "modified")
656
663
  failures += 1
657
664
  records.append(rec)
658
665
 
@@ -673,7 +680,13 @@ def cmd_attest(argv):
673
680
  if args.verify:
674
681
  for r in records:
675
682
  if not r["sha_ok"]:
676
- if r["reason"] == "missing":
683
+ if r["reason"] == "unreachable":
684
+ # Not `boost sync`: it filters these rows out by design,
685
+ # so it is a guaranteed no-op. `doctor` is where
686
+ # `_mat_remedy` words the per-agent remedy correctly.
687
+ msg = ("reaches no agent boost writes — nothing was "
688
+ "attested (boost doctor names the agents)")
689
+ elif r["reason"] == "missing":
677
690
  msg = ("store directory missing (boost heal)"
678
691
  if r["kind"] == "skill"
679
692
  else "materialized file missing")
@@ -33,6 +33,8 @@ STATUS_MODIFIED = "modified" # on-disk content no longer matches the lock
33
33
  STATUS_MISSING = "missing" # lock says installed, but the store dir is gone
34
34
  STATUS_UNLOCKED = "unlocked" # present on disk but no lock digest to check
35
35
  STATUS_QUARANTINED = "quarantined" # artifacts removed on purpose; stash holds them
36
+ STATUS_UNREACHABLE = "unreachable" # rows exist and boost writes none of the
37
+ # agents they name: the item reached nothing
36
38
 
37
39
  ENFORCE_KEY = "security.enforce_digest"
38
40
  COMMIT_KEY = "security.enforce_commit"
@@ -64,6 +66,40 @@ def status(name: str, entry: dict | None = None) -> str:
64
66
  return STATUS_OK if util.sha256_dir(sdir) == recorded else STATUS_MODIFIED
65
67
 
66
68
 
69
+ def reaches_no_agent(kind: str | None, entry: dict) -> bool:
70
+ """Whether every materialization row names an agent boost no longer writes.
71
+
72
+ Skipping such a row is right *per row*: nothing wrote that file and
73
+ nothing ever will, so reading it as ``MISSING`` reported a fault whose
74
+ remedy could not run (:func:`agents.materialization_is_written`).
75
+ Skipping *every* row of an item is a different fact -- the rule reaches
76
+ no agent, the workflow is in no command palette -- and the loop that
77
+ skipped them has nothing left to judge, so it fell through to ``OK`` and
78
+ an install that materialized nowhere read as healthy on every surface but
79
+ ``doctor``'s note.
80
+
81
+ An item with **no rows** is not this case and must keep reading ``OK``: a
82
+ rule installed before rows existed has nothing to be unreachable about.
83
+ That is the whole of ``bool(rows)``, and keying on "no row was written"
84
+ instead would condemn every pre-rows entry on five surfaces at once. A
85
+ row carrying no ``agent`` counts as written -- ``agents`` answers ``True``
86
+ for it, preferring a reported gap to a dropped one -- so such an entry is
87
+ judged by the loop, never condemned here.
88
+
89
+ One predicate because two surfaces ask it: :func:`materialized_status`
90
+ below, and ``boost doctor``, which walks the rows itself rather than
91
+ re-reading every artifact. Re-deriving it in the command layer is how the
92
+ two would come to disagree -- the same failure the ``kind`` parameter was
93
+ added to :func:`materialized_status` to prevent.
94
+ """
95
+ rows = entry.get("materializations") or []
96
+ kind = str(kind or entry.get("kind") or "rule")
97
+ return bool(rows) and not any(
98
+ agents.materialization_is_written(kind, entry.get("base"),
99
+ m.get("agent"))
100
+ for m in rows)
101
+
102
+
67
103
  def materialized_status(name: str, entry: dict,
68
104
  kind: str | None = None) -> str:
69
105
  """Classify a rule/workflow's integrity against its lock entry.
@@ -91,8 +127,17 @@ def materialized_status(name: str, entry: dict,
91
127
  from . import rules
92
128
  if entry.get("quarantined"):
93
129
  return STATUS_QUARANTINED
94
- unlocked = False
95
130
  kind = str(kind or entry.get("kind") or "rule")
131
+ # Every row skipped means the item reached nothing. Asked before the loop
132
+ # rather than after it because each of the three in-loop outcomes needs a
133
+ # *written* row -- MISSING and MODIFIED return from inside the body and
134
+ # `unlocked` is only set there -- so this is mutually exclusive with all
135
+ # of them and there is no precedence to settle. Quarantine still wins
136
+ # above: those artifacts are gone on purpose, and calling that unreachable
137
+ # would send the user to a remedy that re-arms what quarantine disarmed.
138
+ if reaches_no_agent(kind, entry):
139
+ return STATUS_UNREACHABLE
140
+ unlocked = False
96
141
  for m in entry.get("materializations") or []:
97
142
  # A row naming an agent boost no longer writes is a record, not an
98
143
  # artifact: nothing wrote that file and nothing ever will, so reading
@@ -202,6 +247,7 @@ def verification_passed(status: str, missing_fields: list, commit_pin: str | Non
202
247
  _VERIFY_ROLE_BY_STATUS = {
203
248
  STATUS_OK: "success", STATUS_MODIFIED: "warn", STATUS_MISSING: "danger",
204
249
  STATUS_UNLOCKED: "warn", STATUS_QUARANTINED: "muted",
250
+ STATUS_UNREACHABLE: "warn",
205
251
  }
206
252
 
207
253
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.183
3
+ Version: 1.2.184
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -2,14 +2,14 @@
2
2
  id: an-item-materialized-nowhere-reads-ok-in-verify-health-drift
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: Low
9
9
  wow: 2
10
10
  note: a rule whose every materialization row names an agent boost no longer writes reads "ok" in verify and is counted as installed by health — only doctor says otherwise
11
11
  order: 354
12
- owner:
12
+ owner: loop/materialized-nowhere
13
13
  pr:
14
14
  title: An item materialized <em>nowhere</em> reads <code>ok</code> in <code>verify</code>, <code>health</code> and <code>drift</code>
15
15
  ---
@@ -3807,7 +3807,7 @@ step at the top of the command whose failure degrades the agent-dependent sectio
3807
3807
  </article>
3808
3808
 
3809
3809
  <article class="cap rcard" id="an-item-materialized-nowhere-reads-ok-in-verify-health-drift">
3810
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CLI · Bug</span></div>
3810
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">CLI · Bug</span></div>
3811
3811
  <h3>An item materialized <em>nowhere</em> reads <code>ok</code> in <code>verify</code>, <code>health</code> and <code>drift</code></h3>
3812
3812
  <p><b>Found by the second review of</b> <code>sync-repairs-a-disabled-agents-row-every-run</code>.
3813
3813
  That item fixed a row for an agent boost no longer writes being read as a <em>missing artifact</em>:
@@ -2843,9 +2843,51 @@ class TestARowForADisabledAgent:
2843
2843
  assert "boost uninstall" in flat
2844
2844
  assert "missing its cursor materialization" not in flat
2845
2845
  assert "issue needs attention" not in flat
2846
- # and the count line must not read as a flat contradiction of it
2846
+ # This fixture is one rule with one row, so it is also the per-ITEM
2847
+ # case: skip the only row and the rule reaches nothing. The count
2848
+ # line must therefore not count it. Before this it said "1 rule ...
2849
+ # fully materialized for every agent boost writes" -- true as worded
2850
+ # and false as read, because the write set was empty and every item
2851
+ # satisfies all of nothing.
2852
+ assert "0 rules and 0 workflows fully materialized " \
2853
+ "for every agent boost writes" in flat
2854
+ assert "1 item reaches no agent boost writes" in flat
2855
+ assert "rule house" in flat
2856
+ # named, never scored: doctor's convention is that a config-orphaned
2857
+ # row is the user's own decision
2858
+ assert r.rc == 0
2859
+ # ...but the verdict may not then call the machine healthy, because
2860
+ # `boost health` keys "needs attention" on this and sends the reader
2861
+ # straight here
2862
+ assert "1 item installed but loaded by nothing" in flat
2863
+ assert "● healthy" not in r.out
2864
+
2865
+ def test_an_item_that_still_reaches_one_agent_is_not_named(self, boost,
2866
+ sandbox):
2867
+ """The partial case, which proves the suffix is no longer vacuous.
2868
+
2869
+ Two rows, one agent disabled: four surfaces must stay quiet. The
2870
+ per-row note still fires -- that is its job -- but the item reaches
2871
+ `windsurf`, so it is counted and not named as unreachable.
2872
+ """
2873
+ from boost_cli.core import lockfile
2874
+ cur = paths.home() / ".cursor" / "rules" / "house.mdc"
2875
+ wnd = paths.home() / ".windsurf" / "rules" / "house.md"
2876
+ for f in (cur, wnd):
2877
+ f.parent.mkdir(parents=True, exist_ok=True)
2878
+ f.write_text("x\n", encoding="utf-8")
2879
+ lockfile.set_rule("house", {"kind": "rule", "materializations": [
2880
+ {"agent": "cursor", "mode": "file", "path": str(cur)},
2881
+ {"agent": "windsurf", "mode": "file", "path": str(wnd)}]})
2882
+ self._disable()
2883
+ flat = " ".join(boost("doctor").out.split())
2884
+ assert "1 recorded materialization names an agent boost no longer " \
2885
+ "writes" in flat
2847
2886
  assert "1 rule and 0 workflows fully materialized " \
2848
2887
  "for every agent boost writes" in flat
2888
+ assert "reaches no agent boost writes" not in flat
2889
+ assert "loaded by nothing" not in flat
2890
+
2849
2891
 
2850
2892
  def test_the_same_row_is_rot_again_once_the_agent_is_back(self, boost,
2851
2893
  sandbox):
@@ -2963,3 +3005,124 @@ class TestARowForADisabledAgent:
2963
3005
  flat = " ".join(boost("doctor").out.split())
2964
3006
  assert "Change that agent's entry in" in flat
2965
3007
  assert "turn back on" not in flat
3008
+
3009
+
3010
+ class TestAnItemMaterializedNowhere:
3011
+ """An item whose every row names an agent boost no longer writes.
3012
+
3013
+ Skipping a row is right per row; skipping every row an item has means it
3014
+ reached no agent at all, and `verify`, `drift`, `health` and
3015
+ `attest --verify` all read that as fine. Only `doctor` had a channel for
3016
+ it, and it then contradicted itself two lines later.
3017
+ """
3018
+
3019
+ def _seed_unreachable(self, name="house"):
3020
+ from boost_cli.core import config, lockfile
3021
+ rp = paths.home() / ".cursor" / "rules" / ("%s.mdc" % name)
3022
+ lockfile.set_rule(name, {
3023
+ "kind": "rule", "tap": "local", "version": "1.0.0",
3024
+ "sha256": "a" * 64, "installed_at": "2026-01-01T00:00:00Z",
3025
+ "materializations": [{"agent": "cursor", "mode": "file",
3026
+ "path": str(rp), "sha256": "b" * 64}]})
3027
+ cfg = config.load()
3028
+ cfg["agents"]["cursor"]["enabled"] = False
3029
+ config.save(cfg)
3030
+
3031
+ def _seed_rows(self, n, name="many"):
3032
+ """`n` rows for one disabled agent, so row count is the only variable."""
3033
+ from boost_cli.core import config, lockfile
3034
+ rows = [{"agent": "cursor", "mode": "file",
3035
+ "path": str(paths.home() / ".cursor" / "rules"
3036
+ / ("%s-%d.mdc" % (name, i))),
3037
+ "sha256": "b" * 64} for i in range(n)]
3038
+ lockfile.set_rule(name, {
3039
+ "kind": "rule", "tap": "local", "version": "1.0.0",
3040
+ "sha256": "a" * 64, "installed_at": "2026-01-01T00:00:00Z",
3041
+ "materializations": rows})
3042
+ cfg = config.load()
3043
+ cfg["agents"]["cursor"]["enabled"] = False
3044
+ config.save(cfg)
3045
+
3046
+ def test_info_says_none_and_counts_the_rows(self, boost, sandbox):
3047
+ """`boost info` used to list the agents the item does NOT reach --
3048
+ `agent_names` walks every recorded row -- so the dangerous case
3049
+ advertised five agents and the harmless no-rows case showed none,
3050
+ exactly backwards from how a user judges risk."""
3051
+ self._seed_unreachable()
3052
+ out = boost("info", "house").out
3053
+ assert "(none — 1 recorded row names an agent boost no longer " \
3054
+ "writes)" in out
3055
+ # the row's agent is the thing that must NOT be advertised as reached
3056
+ assert "materialized cursor" not in out
3057
+
3058
+ def test_the_count_line_inflects_both_halves(self, boost, sandbox):
3059
+ """One row is the commonest shape by far, so a noun-only plural put
3060
+ the ungrammar on the usual path: "1 recorded row name an agent"."""
3061
+ self._seed_rows(1, "one")
3062
+ assert "1 recorded row names an agent" in boost("info", "one").out
3063
+ self._seed_rows(2, "two")
3064
+ assert "2 recorded rows name an agent" in boost("info", "two").out
3065
+
3066
+ def test_verify_fails_it(self, boost, sandbox):
3067
+ """`verify` is what scripts gate on, and it passed an install that
3068
+ reaches nothing -- the reason this is not cosmetic."""
3069
+ self._seed_unreachable()
3070
+ r = boost("verify", expect=1)
3071
+ assert "unreachable" in r.out
3072
+
3073
+ def test_verify_json_carries_the_status(self, boost, sandbox):
3074
+ self._seed_unreachable()
3075
+ doc = json.loads(boost("verify", "--json", expect=1).out)
3076
+ row = next(s for s in doc["skills"] if s["name"] == "house")
3077
+ assert row["status"] == "unreachable"
3078
+ assert row["passed"] is False
3079
+ assert doc["failed"] == 1
3080
+
3081
+ def test_attest_names_it_without_accusing_the_user(self, boost, sandbox):
3082
+ """`sha_ok` already does not mean "a sha mismatched" -- MISSING sets
3083
+ it false with no content change. Folding this into "modified" would
3084
+ print "no longer matches the lock sha" at a user whose only act was
3085
+ turning an agent off."""
3086
+ self._seed_unreachable()
3087
+ r = boost("attest", "--verify", expect=1)
3088
+ assert "reaches no agent boost writes" in r.out
3089
+ assert "no longer matches" not in r.out
3090
+ assert "boost sync" not in r.out
3091
+
3092
+ def test_attest_json_gets_its_own_reason(self, boost, sandbox):
3093
+ self._seed_unreachable()
3094
+ doc = json.loads(boost("attest", "--verify", "--json", expect=1).out)
3095
+ row = next(s for s in doc["skills"] if s["name"] == "house")
3096
+ assert row["sha_ok"] is False
3097
+ assert row["reason"] == "unreachable"
3098
+
3099
+ def test_drift_says_so_rather_than_in_sync(self, boost, sandbox):
3100
+ self._seed_unreachable()
3101
+ r = boost("drift")
3102
+ assert "unreachable" in r.out
3103
+ assert "in-sync" not in r.out
3104
+ # not `boost sync`, which filters the row out by design
3105
+ assert "boost doctor" in r.out
3106
+
3107
+ def test_health_needs_attention(self, boost, sandbox):
3108
+ self._seed_unreachable()
3109
+ doc = json.loads(boost("health", "--json").out)
3110
+ assert doc["drift"].get("unreachable") == 1
3111
+ assert doc["ok"] is False
3112
+ assert doc["status"] == "needs attention"
3113
+
3114
+ def test_an_item_with_no_rows_at_all_stays_ok(self, boost, sandbox):
3115
+ """The control case, and the dangerous direction: keying on "no row
3116
+ was written" rather than "rows existed and none was written" turns
3117
+ every pre-rows lock entry into a fault on five surfaces at once."""
3118
+ from boost_cli.core import lockfile
3119
+ lockfile.set_rule("house", {
3120
+ "kind": "rule", "tap": "local", "version": "1.0.0",
3121
+ "sha256": "a" * 64, "installed_at": "2026-01-01T00:00:00Z",
3122
+ "materializations": []})
3123
+ assert "ok" in boost("verify").out
3124
+ assert "unreachable" not in boost("drift").out
3125
+ assert json.loads(boost("health", "--json").out)["ok"] is True
3126
+ flat = " ".join(boost("doctor").out.split())
3127
+ assert "1 rule and 0 workflows fully materialized" in flat
3128
+ assert "loaded by nothing" not in flat
@@ -0,0 +1,115 @@
1
+ # Copyright the boost contributors.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ """Unit tests: `_drift_hint`'s branches, and the drift vocabulary itself.
4
+
5
+ `boost update` only refreshes configured taps, so hinting it for a skill
6
+ whose tap was untapped is a guaranteed no-op — the CLI audit's repro. Pinned
7
+ directly against `registry.is_tapped` (monkeypatched) rather than through a
8
+ full `boost drift` run, because reaching "source-missing while still tapped"
9
+ end-to-end would require a tap whose clone cannot be silently re-fetched,
10
+ which `store.source_dir_for` does for anything with a reachable URL.
11
+ """
12
+ from __future__ import annotations
13
+
14
+ from typing import ClassVar
15
+
16
+ from boost_cli.commands import quality
17
+ from boost_cli.core import integrity
18
+ from boost_cli.core import output as out
19
+
20
+
21
+ class TestDriftHintSourceMissing:
22
+ def test_untapped_hints_retap(self, monkeypatch):
23
+ monkeypatch.setattr(quality.registry, "is_tapped", lambda name: False)
24
+ assert (quality._drift_hint("brainstorming", "source-missing",
25
+ "owner/repo")
26
+ == "boost tap owner/repo")
27
+
28
+ def test_still_tapped_hints_update(self, monkeypatch):
29
+ monkeypatch.setattr(quality.registry, "is_tapped", lambda name: True)
30
+ assert (quality._drift_hint("brainstorming", "source-missing",
31
+ "owner/repo")
32
+ == "boost update")
33
+
34
+
35
+ class TestDriftHintOtherStatuses:
36
+ """Untouched by this fix — pinned so the source-missing branch can't
37
+ leak into a neighboring status."""
38
+
39
+ def test_quarantined(self):
40
+ assert (quality._drift_hint("x", "quarantined")
41
+ == "boost quarantine --release x to restore")
42
+
43
+ def test_upstream_moved(self):
44
+ assert quality._drift_hint("x", "upstream-moved") == "boost update"
45
+
46
+ def test_local_edits(self):
47
+ assert (quality._drift_hint("x", "local-edits")
48
+ == "boost reinstall x to discard local edits")
49
+
50
+ def test_store_missing(self):
51
+ assert quality._drift_hint("x", "store-missing") == "boost heal"
52
+
53
+ def test_in_sync_has_no_hint(self):
54
+ assert quality._drift_hint("x", "in-sync") == ""
55
+
56
+ def test_defaults_to_empty_tap(self):
57
+ # `_drift_hint` is called with no explicit tap outside source-missing,
58
+ # so the default must not raise even though it is never dereferenced.
59
+ assert quality._drift_hint("x", "n/a") == ""
60
+
61
+ def test_unreachable_hints_doctor_and_never_sync(self):
62
+ """`boost sync` filters an unwritten row out by design, so hinting it
63
+ here would be a guaranteed no-op -- the same fault the whole
64
+ source-missing branch above exists to avoid. And "re-enable the
65
+ agent" is wrong advice for `agents.WITHDRAWN_REASONS`, so the hint
66
+ points at the one command that words the split correctly."""
67
+ hint = quality._drift_hint("x", "unreachable")
68
+ assert hint == "boost doctor"
69
+ assert "sync" not in hint
70
+
71
+
72
+ class TestDriftVocabularyIsCovered:
73
+ """`_DRIFT_ROLE` is subscripted directly at the render site.
74
+
75
+ `cmd_drift` builds its table with `_DRIFT_ROLE[r["status"]]`, so a word
76
+ the status functions can return and this table does not carry is a
77
+ `KeyError` -- not a `BoostError`, so it escapes the CLI's handler and
78
+ `boost drift` exits 70 with a crash report rather than mis-painting one
79
+ cell. Unlike the historical `_PROVENANCE_STYLE` bug it is not masked by
80
+ `NO_COLOR`: the lookup happens before `out.role` can short-circuit. The
81
+ suite only catches that on a test that reaches the state, so the two
82
+ tables are linted against each other here instead.
83
+ """
84
+
85
+ #: Every word `_drift_status_materialized` and `_drift_status` can return.
86
+ #: `staleness.drift_state` owns the skill half.
87
+ WORDS: ClassVar[set[str]] = {
88
+ "in-sync", "local-edits", "upstream-moved", "source-missing",
89
+ "store-missing", "n/a", "quarantined", "unreachable"}
90
+
91
+ def test_every_drift_word_has_a_role(self):
92
+ assert set(quality._DRIFT_ROLE) >= self.WORDS
93
+
94
+ def test_every_role_is_a_real_palette_entry(self):
95
+ """`out.role` looks the name up in `output.ROLES`; a name that is not
96
+ there raised KeyError on any colour terminal, which is exactly how
97
+ the `_PROVENANCE_STYLE` "err" bug shipped."""
98
+ assert set(quality._DRIFT_ROLE.values()) <= set(out.ROLES)
99
+
100
+ def test_the_materialized_statuses_each_map_to_a_word(self):
101
+ """The three integrity statuses `_drift_status_materialized`
102
+ translates must each land on a word this table carries, so a new
103
+ status cannot reach the render site unmapped."""
104
+ for st in (integrity.STATUS_MISSING, integrity.STATUS_MODIFIED,
105
+ integrity.STATUS_UNREACHABLE):
106
+ assert quality._DRIFT_ROLE[_STATUS_WORD[st]]
107
+
108
+
109
+ #: How `_drift_status_materialized` spells each integrity status.
110
+ _STATUS_WORD = {
111
+ integrity.STATUS_MISSING: "store-missing",
112
+ integrity.STATUS_MODIFIED: "local-edits",
113
+ integrity.STATUS_UNREACHABLE: "unreachable",
114
+ }
115
+