boost-skill-cli 1.2.128__tar.gz → 1.2.130__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 (1048) hide show
  1. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/CONTRIBUTING.md +2 -2
  2. {boost_skill_cli-1.2.128/boost_skill_cli.egg-info → boost_skill_cli-1.2.130}/PKG-INFO +2 -2
  3. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/README.md +1 -1
  4. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/_version.py +2 -2
  5. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/discovery.py +9 -5
  6. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130/boost_skill_cli.egg-info}/PKG-INFO +2 -2
  7. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/design-roadmap.html +2 -2
  8. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/openssf-badge.md +2 -2
  9. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-root-findings.md +13 -3
  10. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +3 -3
  11. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +3 -3
  12. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +3 -3
  13. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap.html +9 -126
  14. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_discovery.py +13 -0
  15. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_launcher_python_floor.py +32 -0
  16. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_marketing_counts.py +43 -0
  17. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitattributes +0 -0
  18. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitignore +0 -0
  19. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.gitleaks.toml +0 -0
  20. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.htmlvalidate.json +0 -0
  21. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.lighthouserc.json +0 -0
  22. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.lycheeignore +0 -0
  23. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.markdownlint-cli2.jsonc +0 -0
  24. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.pre-commit-config.yaml +0 -0
  25. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.stylelintrc.json +0 -0
  26. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/boost/AIWriting.yml +0 -0
  27. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/boost/Terminology.yml +0 -0
  28. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  29. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/.vale.ini +0 -0
  30. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/CLAUDE.md +0 -0
  31. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/CODE_OF_CONDUCT.md +0 -0
  32. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/DCO +0 -0
  33. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/GOVERNANCE.md +0 -0
  34. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/LICENSE +0 -0
  35. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/MAINTAINERS.md +0 -0
  36. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/MANIFEST.in +0 -0
  37. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/Makefile +0 -0
  38. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/SECURITY.md +0 -0
  39. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/SUPPORT.md +0 -0
  40. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost +0 -0
  41. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/__init__.py +0 -0
  42. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/__main__.py +0 -0
  43. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/cli.py +0 -0
  44. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/cliparse.py +0 -0
  45. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/__init__.py +0 -0
  46. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/_common.py +0 -0
  47. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/bmad.py +0 -0
  48. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/configuration.py +0 -0
  49. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/hooks.py +0 -0
  50. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/info.py +0 -0
  51. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/intelligence.py +0 -0
  52. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/pkg.py +0 -0
  53. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/quality.py +0 -0
  54. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/quickstart.py +0 -0
  55. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/run.py +0 -0
  56. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/safety.py +0 -0
  57. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/taps.py +0 -0
  58. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/commands/team.py +0 -0
  59. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/__init__.py +0 -0
  60. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/adapters.py +0 -0
  61. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/agents.py +0 -0
  62. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/ai.py +0 -0
  63. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/aihost.py +0 -0
  64. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/archive.py +0 -0
  65. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/bmad.py +0 -0
  66. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/bootstrap.py +0 -0
  67. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/browse.py +0 -0
  68. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/builtin.py +0 -0
  69. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/capabilities.py +0 -0
  70. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/catalog.py +0 -0
  71. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/catalogbundle.py +0 -0
  72. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/chat.py +0 -0
  73. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/claude_settings.py +0 -0
  74. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/cohort.py +0 -0
  75. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/complete.py +0 -0
  76. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/config.py +0 -0
  77. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/dense.py +0 -0
  78. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/deps.py +0 -0
  79. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/discovery.py +0 -0
  80. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/ed25519.py +0 -0
  81. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/embed.py +0 -0
  82. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/faithfulness.py +0 -0
  83. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/frontmatter.py +0 -0
  84. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/gitutil.py +0 -0
  85. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/hookhost.py +0 -0
  86. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/imperative.py +0 -0
  87. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/injectscan.py +0 -0
  88. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/installscan.py +0 -0
  89. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/integrity.py +0 -0
  90. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/journal.py +0 -0
  91. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/jsonstate.py +0 -0
  92. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/localembed.py +0 -0
  93. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/lockfile.py +0 -0
  94. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/logs.py +0 -0
  95. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcp.py +0 -0
  96. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcpdecl.py +0 -0
  97. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/mcphost.py +0 -0
  98. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/minisign.py +0 -0
  99. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/nethttp.py +0 -0
  100. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/output.py +0 -0
  101. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/paths.py +0 -0
  102. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/policy.py +0 -0
  103. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/projectlock.py +0 -0
  104. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/provenance.py +0 -0
  105. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/rag.py +0 -0
  106. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/registry.py +0 -0
  107. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/report.py +0 -0
  108. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/resolve.py +0 -0
  109. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/rules.py +0 -0
  110. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/scopes.py +0 -0
  111. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/secretscan.py +0 -0
  112. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/selfupdate.py +0 -0
  113. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/serve.py +0 -0
  114. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/shards.py +0 -0
  115. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/stackprobe.py +0 -0
  116. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/staleness.py +0 -0
  117. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/store.py +0 -0
  118. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/trustaudit.py +0 -0
  119. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/typedvalue.py +0 -0
  120. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/typosquat.py +0 -0
  121. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/updatediff.py +0 -0
  122. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/util.py +0 -0
  123. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/core/workflows.py +0 -0
  124. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/data/registries.json +0 -0
  125. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/data/rules/boost-first.mdc +0 -0
  126. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/errors.py +0 -0
  127. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_cli/spin.py +0 -0
  128. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/__init__.py +0 -0
  129. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/_compat.py +0 -0
  130. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/graph.py +0 -0
  131. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/loader.py +0 -0
  132. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/py.typed +0 -0
  133. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_langchain/retriever.py +0 -0
  134. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  135. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  136. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  137. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/requires.txt +0 -0
  138. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/boost_skill_cli.egg-info/top_level.txt +0 -0
  139. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/codecov.yml +0 -0
  140. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/.claude/settings.local.json +0 -0
  141. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/DEBUGGING.md +0 -0
  142. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/adapters.html +0 -0
  143. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/README.md +0 -0
  144. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-components-core.md +0 -0
  145. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-containers.md +0 -0
  146. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-context.md +0 -0
  147. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/architecture/c4-dynamic-install.md +0 -0
  148. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/bmad.md +0 -0
  149. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/distill.gif +0 -0
  150. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/doctor.gif +0 -0
  151. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/explain.gif +0 -0
  152. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/hooks.gif +0 -0
  153. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/install.gif +0 -0
  154. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/pulse.gif +0 -0
  155. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/search.gif +0 -0
  156. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/gifs/tap.gif +0 -0
  157. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/distill.tape +0 -0
  158. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/doctor.tape +0 -0
  159. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/explain.tape +0 -0
  160. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/hooks.tape +0 -0
  161. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/install.tape +0 -0
  162. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/pulse.tape +0 -0
  163. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/search.tape +0 -0
  164. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel/tapes/tap.tape +0 -0
  165. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/carousel.html +0 -0
  166. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/chat.html +0 -0
  167. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/code-review.md +0 -0
  168. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/commands.html +0 -0
  169. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/commit-audit.md +0 -0
  170. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo-index.json +0 -0
  171. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.gif +0 -0
  172. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.html +0 -0
  173. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/demo.tape +0 -0
  174. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/dependencies.md +0 -0
  175. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/eval-latest.json +0 -0
  176. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/eval.html +0 -0
  177. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/index.html +0 -0
  178. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/langchain.html +0 -0
  179. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/mcp-hub.html +0 -0
  180. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/openssf-playbook.md +0 -0
  181. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/rag-architecture.md +0 -0
  182. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D01.md +0 -0
  183. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D02.md +0 -0
  184. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D03.md +0 -0
  185. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D04.md +0 -0
  186. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D05.md +0 -0
  187. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D06.md +0 -0
  188. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D07.md +0 -0
  189. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D08.md +0 -0
  190. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D09.md +0 -0
  191. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D10.md +0 -0
  192. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D11.md +0 -0
  193. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D12.md +0 -0
  194. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D13.md +0 -0
  195. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D14.md +0 -0
  196. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D15.md +0 -0
  197. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D16.md +0 -0
  198. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D17.md +0 -0
  199. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D18.md +0 -0
  200. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D19.md +0 -0
  201. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D20.md +0 -0
  202. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D21.md +0 -0
  203. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D22.md +0 -0
  204. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D23.md +0 -0
  205. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D24.md +0 -0
  206. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D25.md +0 -0
  207. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D26.md +0 -0
  208. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/BOOST-D27.md +0 -0
  209. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  210. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  211. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  212. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  213. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  214. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  215. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  216. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  217. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  218. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  219. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  220. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  221. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  222. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  223. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  224. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  225. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-attest-findings.md +0 -0
  226. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-audit-findings.md +0 -0
  227. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  228. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-browse-findings.md +0 -0
  229. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  230. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  231. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  232. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  233. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-chat-findings.md +0 -0
  234. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  235. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  236. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  237. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-completions-findings.md +0 -0
  238. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-config-findings.md +0 -0
  239. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  240. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-context-findings.md +0 -0
  241. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  242. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  243. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-create-findings.md +0 -0
  244. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  245. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-deps-findings.md +0 -0
  246. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-discover-findings.md +0 -0
  247. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  248. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  249. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-drift-findings.md +0 -0
  250. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  251. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-edit-findings.md +0 -0
  252. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  253. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-explain-findings.md +0 -0
  254. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-export-findings.md +0 -0
  255. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  256. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  257. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  258. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  259. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  260. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-health-findings.md +0 -0
  261. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  262. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  263. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-import-findings.md +0 -0
  264. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-index-findings.md +0 -0
  265. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  266. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  267. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-findings.md +0 -0
  268. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  269. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  270. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-lint-findings.md +0 -0
  271. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-log-findings.md +0 -0
  272. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  273. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  274. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  275. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  276. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  277. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  278. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  279. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  280. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  281. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  282. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  283. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-policy-findings.md +0 -0
  284. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-preview-findings.md +0 -0
  285. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-profile-findings.md +0 -0
  286. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  287. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  288. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  289. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  290. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  291. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  292. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  293. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  294. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  295. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-replay-findings.md +0 -0
  296. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  297. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-run-findings.md +0 -0
  298. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  299. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-search-findings.md +0 -0
  300. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  301. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  302. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  303. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  304. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  305. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  306. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  307. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  308. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-sync-findings.md +0 -0
  309. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tag-findings.md +0 -0
  310. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  311. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-tap-findings.md +0 -0
  312. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-taps-findings.md +0 -0
  313. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  314. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-test-findings.md +0 -0
  315. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-trust-findings.md +0 -0
  316. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  317. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  318. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-untap-findings.md +0 -0
  319. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-update-findings.md +0 -0
  320. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  321. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-verify-findings.md +0 -0
  322. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/audit-who-findings.md +0 -0
  323. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  324. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  325. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  326. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  327. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  328. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  329. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  330. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  331. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  332. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  333. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  334. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  335. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  336. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  337. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  338. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  339. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-first-rule.md +0 -0
  340. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  341. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  342. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/branch-current-gate.md +0 -0
  343. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  344. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  345. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  346. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  347. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  348. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  349. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  350. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  351. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  352. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  353. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  354. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  355. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  356. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  357. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  358. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  359. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  360. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-command-audit.md +0 -0
  361. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  362. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  363. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  364. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  365. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/command-carousel-page.md +0 -0
  366. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  367. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  368. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  369. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  370. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  371. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  372. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  373. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  374. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  375. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  376. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  377. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  378. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  379. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  380. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  381. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  382. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  383. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  384. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  385. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  386. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  387. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  388. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  389. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  390. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  391. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  392. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  393. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  394. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  395. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  396. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  397. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  398. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  399. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  400. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  401. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  402. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  403. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  404. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  405. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  406. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  407. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  408. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  409. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  410. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  411. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  412. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  413. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  414. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  415. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  416. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  417. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  418. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  419. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  420. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  421. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  422. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  423. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  424. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  425. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  426. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  427. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  428. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  429. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  430. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  431. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  432. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  433. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  434. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  435. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  436. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  437. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  438. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/github-community-health-files.md +0 -0
  439. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  440. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  441. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  442. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  443. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  444. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  445. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  446. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  447. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  448. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  449. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  450. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  451. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  452. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  453. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  454. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  455. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  456. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  457. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  458. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  459. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  460. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  461. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  462. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  463. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  464. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  465. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  466. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  467. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  468. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  469. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  470. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  471. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  472. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  473. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  474. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  475. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  476. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  477. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  478. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  479. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  480. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  481. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  482. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  483. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  484. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  485. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  486. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  487. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  488. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  489. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  490. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  491. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  492. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  493. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  494. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  495. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  496. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  497. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  498. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  499. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  500. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  501. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  502. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  503. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  504. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  505. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  506. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  507. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  508. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  509. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  510. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  511. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  512. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  513. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  514. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  515. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  516. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  517. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  518. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  519. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  520. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  521. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  522. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  523. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  524. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-playbook.md +0 -0
  525. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/openssf-silver.md +0 -0
  526. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  527. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  528. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  529. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  530. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  531. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  532. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  533. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  534. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  535. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  536. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  537. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  538. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  539. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  540. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  541. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  542. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  543. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  544. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  545. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  546. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  547. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  548. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  549. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  550. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  551. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  552. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  553. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  554. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  555. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  556. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  557. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  558. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  559. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  560. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  561. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  562. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  563. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  564. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  565. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  566. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  567. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  568. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  569. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/relicence-apache-2.md +0 -0
  570. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  571. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  572. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  573. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  574. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  575. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  576. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  577. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  578. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  579. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  580. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  581. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  582. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  583. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  584. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  585. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  586. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  587. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  588. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  589. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  590. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  591. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  592. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  593. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  594. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  595. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  596. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  597. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  598. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  599. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  600. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  601. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  602. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  603. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  604. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  605. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  606. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  607. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  608. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  609. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  610. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  611. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  612. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  613. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  614. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  615. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  616. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  617. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  618. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  619. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  620. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  621. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  622. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  623. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  624. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  625. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  626. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  627. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  628. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  629. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  630. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  631. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  632. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  633. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  634. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  635. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  636. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  637. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  638. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  639. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  640. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  641. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  642. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  643. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  644. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  645. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  646. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  647. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  648. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  649. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  650. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  651. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  652. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  653. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  654. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  655. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  656. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  657. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  658. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  659. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  660. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  661. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  662. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  663. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  664. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  665. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  666. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  667. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  668. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  669. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/workspace-scope-install.md +0 -0
  670. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zip-strict-audit.md +0 -0
  671. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  672. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  673. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/security-design.md +0 -0
  674. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/semantic-search.md +0 -0
  675. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  676. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/verifying-releases.md +0 -0
  677. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/meta.md +0 -0
  678. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/openvex.json +0 -0
  679. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  680. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  681. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  682. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  683. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/eslint.config.mjs +0 -0
  684. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/README.md +0 -0
  685. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/__init__.py +0 -0
  686. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/baseline.json +0 -0
  687. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/faithfulness.py +0 -0
  688. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/golden_set.json +0 -0
  689. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/make_corpus.py +0 -0
  690. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/make_golden.py +0 -0
  691. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/metrics.py +0 -0
  692. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/publish_golden_dataset.py +0 -0
  693. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/evals/run_evals.py +0 -0
  694. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/README.md +0 -0
  695. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/adapt-demo.sh +0 -0
  696. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/examples/boost-run-prototype.sh +0 -0
  697. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/index.html +0 -0
  698. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/noxfile.py +0 -0
  699. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/pyproject.toml +0 -0
  700. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/coverage-tools.in +0 -0
  701. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/coverage-tools.txt +0 -0
  702. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/lint-tools.in +0 -0
  703. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/lint-tools.txt +0 -0
  704. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/mutation-tools.in +0 -0
  705. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/mutation-tools.txt +0 -0
  706. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/platform-pins.lock +0 -0
  707. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/release-tools.in +0 -0
  708. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/release-tools.txt +0 -0
  709. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/test-tools.in +0 -0
  710. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/requirements/test-tools.txt +0 -0
  711. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/a11y_check.py +0 -0
  712. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/add_spdx_headers.py +0 -0
  713. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/bench_cli.sh +0 -0
  714. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_command_reference.py +0 -0
  715. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_demo_index.py +0 -0
  716. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_registries.py +0 -0
  717. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_roadmap.py +0 -0
  718. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_scale_corpus.py +0 -0
  719. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/build_vex.py +0 -0
  720. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_anchors.py +0 -0
  721. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_branch_current.py +0 -0
  722. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_dco.py +0 -0
  723. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_licenses.py +0 -0
  724. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_reproducible.py +0 -0
  725. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/check_required_checks.py +0 -0
  726. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/ensure_eval_corpus.sh +0 -0
  727. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_corpus.py +0 -0
  728. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_explain.py +0 -0
  729. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_gate.py +0 -0
  730. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_recommend.py +0 -0
  731. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_retrieval.py +0 -0
  732. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_stats_summary.py +0 -0
  733. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/eval_tools.py +0 -0
  734. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/import_budget.py +0 -0
  735. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/lock_toolchain.py +0 -0
  736. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/measure_near_duplicate_bound.py +0 -0
  737. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/measure_registry.py +0 -0
  738. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_gate.py +0 -0
  739. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_shards.py +0 -0
  740. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/mutation_weights.json +0 -0
  741. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/normalize_sdist.py +0 -0
  742. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/page_budget.py +0 -0
  743. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/perf_gate.py +0 -0
  744. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/post_deploy_smoke.py +0 -0
  745. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/publish_eval_json.py +0 -0
  746. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/publish_shards.py +0 -0
  747. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/release_guard.py +0 -0
  748. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/release_preflight.py +0 -0
  749. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/serve_docs.py +0 -0
  750. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/scripts/shard_plan.py +0 -0
  751. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/setup.cfg +0 -0
  752. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/sonar-project.properties +0 -0
  753. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/README.md +0 -0
  754. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/boost.css +0 -0
  755. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/boost.js +0 -0
  756. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/style/demo.html +0 -0
  757. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/adapt.feature +0 -0
  758. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/browse.feature +0 -0
  759. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/count.feature +0 -0
  760. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/discover.feature +0 -0
  761. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/doctor.feature +0 -0
  762. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/environment.py +0 -0
  763. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/explain.feature +0 -0
  764. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/index.feature +0 -0
  765. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/install.feature +0 -0
  766. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/list.feature +0 -0
  767. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/mcp.feature +0 -0
  768. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/search.feature +0 -0
  769. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/cli_steps.py +0 -0
  770. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/discovery_steps.py +0 -0
  771. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/mcp_steps.py +0 -0
  772. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/bdd/features/steps/quality_steps.py +0 -0
  773. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/conftest.py +0 -0
  774. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/baseline.json +0 -0
  775. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/explain.jsonl +0 -0
  776. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  777. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/golden-natural.jsonl +0 -0
  778. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/golden.jsonl +0 -0
  779. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/recommend.jsonl +0 -0
  780. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/taps-scale.txt +0 -0
  781. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/taps.txt +0 -0
  782. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/eval/tool_calls.jsonl +0 -0
  783. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  784. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bmad_all_hosts.py +0 -0
  785. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_bmad_personas_scope.py +0 -0
  786. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_capabilities_policy.py +0 -0
  787. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_adapt.py +0 -0
  788. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_bmad.py +0 -0
  789. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_catalog.py +0 -0
  790. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_chat.py +0 -0
  791. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_configuration.py +0 -0
  792. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_hooks.py +0 -0
  793. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_hooks_gemini.py +0 -0
  794. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_info.py +0 -0
  795. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_intelligence.py +0 -0
  796. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_json_reports.py +0 -0
  797. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_pane_width.py +0 -0
  798. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_pkg.py +0 -0
  799. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_quality.py +0 -0
  800. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_quickstart.py +0 -0
  801. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_tap_pins.py +0 -0
  802. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_taps.py +0 -0
  803. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_cli_team.py +0 -0
  804. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  805. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  806. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_everyday_loop.py +0 -0
  807. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_integrity_enforce.py +0 -0
  808. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_kind_conformance.py +0 -0
  809. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_property_parsers.py +0 -0
  810. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_recommend_because_is_true.py +0 -0
  811. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_reports_match_reality.py +0 -0
  812. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_run.py +0 -0
  813. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_tap_signing.py +0 -0
  814. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/functional/test_workspace_scope.py +0 -0
  815. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/README.md +0 -0
  816. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  817. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  818. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  819. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  820. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  821. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  822. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  823. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  824. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  825. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  826. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  827. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  828. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  829. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  830. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  831. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  832. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  833. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  834. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  835. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  836. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  837. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  838. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  839. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/fuzz_frontmatter.py +0 -0
  840. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/fuzz/fuzz_registry.py +0 -0
  841. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/conftest.py +0 -0
  842. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_graph.py +0 -0
  843. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_loader.py +0 -0
  844. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/langchain/test_retriever.py +0 -0
  845. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/make_fixture.py +0 -0
  846. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/perf/test_benchmarks.py +0 -0
  847. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/smoke.sh +0 -0
  848. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  849. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_a11y_check.py +0 -0
  850. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_action_pin_lockstep.py +0 -0
  851. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters.py +0 -0
  852. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters_multi.py +0 -0
  853. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_adapters_runner.py +0 -0
  854. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_agents.py +0 -0
  855. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_ai.py +0 -0
  856. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_aihost.py +0 -0
  857. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_archive.py +0 -0
  858. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bmad_core.py +0 -0
  859. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_boost_first_offer.py +0 -0
  860. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bootstrap.py +0 -0
  861. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_bot_pr_dco.py +0 -0
  862. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_branch_current.py +0 -0
  863. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_browse.py +0 -0
  864. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_builtin.py +0 -0
  865. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_capabilities.py +0 -0
  866. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalog.py +0 -0
  867. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalog_keyword_words.py +0 -0
  868. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_catalogbundle.py +0 -0
  869. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_chat.py +0 -0
  870. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_anchors.py +0 -0
  871. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_dco.py +0 -0
  872. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_licenses.py +0 -0
  873. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_check_reproducible.py +0 -0
  874. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_claude_settings.py +0 -0
  875. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_clean_internal_cache.py +0 -0
  876. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cli_update_shards.py +0 -0
  877. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cliparse.py +0 -0
  878. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_codeql_analysis_key.py +0 -0
  879. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_cohort.py +0 -0
  880. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_command_reference_fresh.py +0 -0
  881. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_community_health_files.py +0 -0
  882. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_compact.py +0 -0
  883. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_complete.py +0 -0
  884. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_complete_rc_block.py +0 -0
  885. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_config.py +0 -0
  886. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_content_dedupe.py +0 -0
  887. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_content_identity.py +0 -0
  888. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  889. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_crash_redaction.py +0 -0
  890. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dedup_trust.py +0 -0
  891. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_demo_index.py +0 -0
  892. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense.py +0 -0
  893. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  894. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_embed_dedupe.py +0 -0
  895. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_entry_reuse.py +0 -0
  896. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_entry_vectors.py +0 -0
  897. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_fallback.py +0 -0
  898. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_fix_hint.py +0 -0
  899. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_progress.py +0 -0
  900. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_quantized.py +0 -0
  901. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_ready_order.py +0 -0
  902. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shard_real_schema.py +0 -0
  903. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  904. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_shards.py +0 -0
  905. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_status.py +0 -0
  906. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_status_cheap.py +0 -0
  907. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dense_vector_dedupe.py +0 -0
  908. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_dependabot_config.py +0 -0
  909. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_deps.py +0 -0
  910. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_discovery.py +0 -0
  911. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_distill_merge.py +0 -0
  912. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_docs_pages_linked.py +0 -0
  913. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_docsite_chrome.py +0 -0
  914. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_doctor_output_polish.py +0 -0
  915. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_drift_hint.py +0 -0
  916. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_ed25519.py +0 -0
  917. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed.py +0 -0
  918. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed_local.py +0 -0
  919. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_embed_truncated_response.py +0 -0
  920. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_entry_key.py +0 -0
  921. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_errors_and_cli_table.py +0 -0
  922. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_baseline.py +0 -0
  923. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_corpus.py +0 -0
  924. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_faithfulness.py +0 -0
  925. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_gate.py +0 -0
  926. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_grading.py +0 -0
  927. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_metrics.py +0 -0
  928. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_stats_summary.py +0 -0
  929. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_tools.py +0 -0
  930. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_eval_tools_probe.py +0 -0
  931. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  932. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_faithfulness.py +0 -0
  933. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_frontmatter.py +0 -0
  934. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_fuzz_targets.py +0 -0
  935. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  936. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitleaks_config.py +0 -0
  937. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil.py +0 -0
  938. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil_lfs.py +0 -0
  939. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gitutil_sparse.py +0 -0
  940. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_gstack_coexistence.py +0 -0
  941. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_hook_settings_hosts.py +0 -0
  942. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_hookhost.py +0 -0
  943. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_imperative.py +0 -0
  944. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_import_budget.py +0 -0
  945. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_injectscan.py +0 -0
  946. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_install_permission_error.py +0 -0
  947. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_installscan.py +0 -0
  948. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_integrity.py +0 -0
  949. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_journal.py +0 -0
  950. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_jsonstate.py +0 -0
  951. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_langchain_packaging.py +0 -0
  952. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_link_ownership.py +0 -0
  953. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_localembed.py +0 -0
  954. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_localembed_e2e.py +0 -0
  955. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_lockfile.py +0 -0
  956. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_logs.py +0 -0
  957. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp.py +0 -0
  958. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp_install_scan.py +0 -0
  959. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcp_read.py +0 -0
  960. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcpdecl.py +0 -0
  961. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mcphost.py +0 -0
  962. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_measure_registry.py +0 -0
  963. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_minisign.py +0 -0
  964. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_hardening.py +0 -0
  965. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_shards.py +0 -0
  966. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutation_subfile_shards.py +0 -0
  967. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_mutmut_source_paths.py +0 -0
  968. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_near_duplicate_collapse.py +0 -0
  969. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_nethttp.py +0 -0
  970. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_normalize_sdist.py +0 -0
  971. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_output.py +0 -0
  972. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_page_budget.py +0 -0
  973. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_paths.py +0 -0
  974. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_perf_gate.py +0 -0
  975. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_confusions.py +0 -0
  976. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_injection.py +0 -0
  977. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_pkg_secrets.py +0 -0
  978. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_platform_pins.py +0 -0
  979. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_policy.py +0 -0
  980. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_post_deploy_smoke.py +0 -0
  981. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_project_mcp_sidecar.py +0 -0
  982. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_projectlock.py +0 -0
  983. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_provenance.py +0 -0
  984. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_publish_golden_dataset.py +0 -0
  985. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag.py +0 -0
  986. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_completeness.py +0 -0
  987. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_fastpath.py +0 -0
  988. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rag_fusion.py +0 -0
  989. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registries_fresh.py +0 -0
  990. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry.py +0 -0
  991. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_categories.py +0 -0
  992. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_control_chars.py +0 -0
  993. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_registry_parallel.py +0 -0
  994. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_release_guard.py +0 -0
  995. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_release_preflight.py +0 -0
  996. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_report.py +0 -0
  997. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_required_checks.py +0 -0
  998. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rerank_cache.py +0 -0
  999. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_resolve.py +0 -0
  1000. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1001. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_roadmap_fresh.py +0 -0
  1002. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_rules.py +0 -0
  1003. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_scale_corpus.py +0 -0
  1004. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_schedule_plist.py +0 -0
  1005. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_scopes.py +0 -0
  1006. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_secretscan.py +0 -0
  1007. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_selfupdate.py +0 -0
  1008. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_serve.py +0 -0
  1009. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_serve_docs.py +0 -0
  1010. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shard_plan.py +0 -0
  1011. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards.py +0 -0
  1012. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_incremental.py +0 -0
  1013. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_ingest.py +0 -0
  1014. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_shards_matrix.py +0 -0
  1015. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1016. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_spdx_headers.py +0 -0
  1017. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_spin.py +0 -0
  1018. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_stackprobe.py +0 -0
  1019. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_staleness.py +0 -0
  1020. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_store.py +0 -0
  1021. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_store_materialize.py +0 -0
  1022. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_blocked_links.py +0 -0
  1023. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_lost_lock.py +0 -0
  1024. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1025. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_tap_pins.py +0 -0
  1026. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_token_parity.py +0 -0
  1027. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_toolchain_lock.py +0 -0
  1028. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_trustaudit.py +0 -0
  1029. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_typedvalue.py +0 -0
  1030. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_typosquat.py +0 -0
  1031. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_updatediff.py +0 -0
  1032. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_util.py +0 -0
  1033. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_version.py +0 -0
  1034. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_version_tags.py +0 -0
  1035. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_vex.py +0 -0
  1036. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_visual_harness_capture.py +0 -0
  1037. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_visual_harness_flags.py +0 -0
  1038. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_concurrency.py +0 -0
  1039. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1040. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1041. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflow_timeouts.py +0 -0
  1042. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_workflows.py +0 -0
  1043. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1044. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/a11y_check.mjs +0 -0
  1045. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/console_check.mjs +0 -0
  1046. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/package-lock.json +0 -0
  1047. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/package.json +0 -0
  1048. {boost_skill_cli-1.2.128 → boost_skill_cli-1.2.130}/tests/visual/visual_check.mjs +0 -0
@@ -120,8 +120,8 @@ list, and neither should be added to it.
120
120
  |---|---|
121
121
  | `make test` | unit + functional suites, **≥90% coverage** (statements + branches) |
122
122
  | `make patch-coverage` | changed-line coverage vs `main`, **≥80% of the diff** (PRs) |
123
- | `bash tests/smoke.sh` | 170 end-to-end checks through the real `./boost` shim |
124
- | `make bdd` | the Gherkin suite — 11 features, 47 scenarios (needs the `[bdd]` extra) |
123
+ | `bash tests/smoke.sh` | 183 end-to-end checks through the real `./boost` shim |
124
+ | `make bdd` | the Gherkin suite — 11 features, 56 scenarios (needs the `[bdd]` extra) |
125
125
  | `make mutation` | mutmut over `boost_cli/core`, **≥80% mutants killed** |
126
126
  | `ruff check boost_cli tests` | lint, zero findings |
127
127
  | `mypy` | type check, zero errors |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.128
3
+ Version: 1.2.130
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -564,7 +564,7 @@ Four test layers are enforced, and `make check` runs all of them:
564
564
  | Layer | Gate |
565
565
  |---|---|
566
566
  | `make test` | ≥90% coverage of `boost_cli`, statements and branches |
567
- | `make smoke` | 176 checks through the actual `./boost` shim |
567
+ | `make smoke` | 183 checks through the actual `./boost` shim |
568
568
  | `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
569
569
  | `make evals` | metric floors on the search ranker, plus no significant regression |
570
570
 
@@ -522,7 +522,7 @@ Four test layers are enforced, and `make check` runs all of them:
522
522
  | Layer | Gate |
523
523
  |---|---|
524
524
  | `make test` | ≥90% coverage of `boost_cli`, statements and branches |
525
- | `make smoke` | 176 checks through the actual `./boost` shim |
525
+ | `make smoke` | 183 checks through the actual `./boost` shim |
526
526
  | `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
527
527
  | `make evals` | metric floors on the search ranker, plus no significant regression |
528
528
 
@@ -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.128'
22
- __version_tuple__ = version_tuple = (1, 2, 128)
21
+ __version__ = version = '1.2.130'
22
+ __version_tuple__ = version_tuple = (1, 2, 130)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1151,13 +1151,17 @@ def cmd_recommend(argv):
1151
1151
  if used_curated_fallback:
1152
1152
  out.info("no stack-specific matches — curated picks instead:")
1153
1153
  width = min(max(len(r["entry"]["name"]) for r in shown), 32)
1154
- cols = out.term_width()
1155
- for r in shown:
1154
+ reasons = ["because: %s" % ", ".join(sorted(r["because"])) for r in shown]
1155
+ # One description width for every row, from the widest reason. Sized per
1156
+ # row from that row's own `because:` tag, the clip point swung 20 columns
1157
+ # between rows (34-54 at COLUMNS=100) and neither column lined up.
1158
+ desc_w = max(out.term_width() - 2 - width - 2
1159
+ - (max(map(len, reasons)) + 2), 8)
1160
+ for r, because in zip(shown, reasons, strict=True):
1156
1161
  e = r["entry"]
1157
- because = "because: %s" % ", ".join(sorted(r["because"]))
1158
- desc_w = max(cols - 2 - width - 2 - (len(because) + 2), 8)
1159
1162
  name_cell = out.role(out.truncate(e["name"], width).ljust(width), "accent")
1160
- out.info(name_cell + " " + out.truncate(e["description"] or "", desc_w)
1163
+ desc = out.truncate(e["description"] or "", desc_w)
1164
+ out.info(name_cell + " " + desc + " " * (desc_w - out.visible_len(desc))
1161
1165
  + " " + out.role(because, "muted"))
1162
1166
  if ai.available():
1163
1167
  picks = _ai_picks(stack, [r["entry"] for r in ranked[:20]])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.128
3
+ Version: 1.2.130
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -564,7 +564,7 @@ Four test layers are enforced, and `make check` runs all of them:
564
564
  | Layer | Gate |
565
565
  |---|---|
566
566
  | `make test` | ≥90% coverage of `boost_cli`, statements and branches |
567
- | `make smoke` | 176 checks through the actual `./boost` shim |
567
+ | `make smoke` | 183 checks through the actual `./boost` shim |
568
568
  | `make mutation` | ≥80% of ~9,900 mutants in `boost_cli/core` killed |
569
569
  | `make evals` | metric floors on the search ranker, plus no significant regression |
570
570
 
@@ -203,7 +203,7 @@
203
203
  </div>
204
204
  <div>
205
205
  <dt>Constraints</dt>
206
- <dd>Every proposal stays <code>zero-dependency</code>, degrades on <code>NO_COLOR</code> / non-TTY, and targets <code>Python ≥ 3.9</code>.</dd>
206
+ <dd>Every proposal stays <code>zero-dependency</code>, degrades on <code>NO_COLOR</code> / non-TTY, and targets <code>Python ≥ 3.12</code>.</dd>
207
207
  </div>
208
208
  </dl>
209
209
  </div>
@@ -579,7 +579,7 @@ hidden hot-path cost hiding behind the one this card measured.</p>
579
579
  <footer>
580
580
  <div class="wrap">
581
581
  <p class="foot-brand"><b>boost</b> — a package manager for AI skills</p>
582
- <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.9+ and <code>git</code></p>
582
+ <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.12+ and <code>git</code></p>
583
583
  <nav class="foot-links" aria-label="Documentation">
584
584
  <a href="index.html">Guide</a>
585
585
  <a href="commands.html">Commands</a>
@@ -120,7 +120,7 @@ Package: [`boost-skill-cli`](https://pypi.org/project/boost-skill-cli/)
120
120
 
121
121
  | Criterion | Cat. | Answer | Evidence |
122
122
  |---|---|---|---|
123
- | `test` | MUST | **Met** | Four tiers: `tests/unit`, `tests/functional` (drive the real CLI in-process), `tests/smoke.sh` (170 end-to-end checks through the `./boost` shim) and a Gherkin BDD suite (11 features, 47 scenarios). |
123
+ | `test` | MUST | **Met** | Four tiers: `tests/unit`, `tests/functional` (drive the real CLI in-process), `tests/smoke.sh` (183 end-to-end checks through the `./boost` shim) and a Gherkin BDD suite (11 features, 56 scenarios). |
124
124
  | `test_invocation` | SHOULD | **Met** | `make test` — or `nox`, which reproduces the exact CI gate in isolated venvs across every supported interpreter. |
125
125
  | `test_most` | SUGGESTED | **Met** | A **90% coverage** gate over statements and branches (`fail_under = 90`), an **80% changed-line** gate on pull requests, and an **80% mutation** gate over `boost_cli/core` — the last of which means coverage cannot be satisfied by tests that merely execute the code without asserting on it. |
126
126
  | `test_continuous_integration` | SUGGESTED | **Met** | GitHub Actions runs the full gate on every push and every pull request. |
@@ -204,7 +204,7 @@ of the security-design document for the full account.
204
204
 
205
205
  | Criterion | Cat. | Answer | Evidence |
206
206
  |---|---|---|---|
207
- | `dynamic_analysis` | SUGGESTED | **Met** | [`fuzz.yml`](https://github.com/jonnyeclectic/boost/blob/main/.github/workflows/fuzz.yml) runs `atheris` (libFuzzer for Python) against the parsers over a target matrix, uploading any crashing input as an artifact. Beyond fuzzing, `tests/smoke.sh` drives the real binary end to end through 170 checks, and the functional suite executes the CLI against a throwaway `$HOME`. |
207
+ | `dynamic_analysis` | SUGGESTED | **Met** | [`fuzz.yml`](https://github.com/jonnyeclectic/boost/blob/main/.github/workflows/fuzz.yml) runs `atheris` (libFuzzer for Python) against the parsers over a target matrix, uploading any crashing input as an artifact. Beyond fuzzing, `tests/smoke.sh` drives the real binary end to end through 183 checks, and the functional suite executes the CLI against a throwaway `$HOME`. |
208
208
  | `dynamic_analysis_unsafe` | SUGGESTED | **N/A** | Python is memory-safe; there is no buffer overflow or use-after-free class for a tool like ASan or Valgrind to find. The runtime has no C extension (the optional `[rag]` extra is not on the install path). |
209
209
  | `dynamic_analysis_enable_assertions` | SUGGESTED | **Met** | The test suites are assertion-driven and run with assertions enabled (no `-O`), and `pytest` promotes `DeprecationWarning` raised inside `boost_cli` to a hard error, so a latent deprecation fails a run rather than scrolling past. |
210
210
  | `dynamic_analysis_fixed` | MUST | **Met** | No medium-or-higher exploitable vulnerability has been found by dynamic analysis. A crashing input found by the fuzzer is uploaded as a workflow artifact and fixed; none is outstanding. |
@@ -2,15 +2,15 @@
2
2
  id: audit-root-findings
3
3
  board: code
4
4
  section: dx
5
- status: planned
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: Low
9
9
  wow: 1
10
10
  note: EPIPE exits 120 with stderr noise; `help version` suggests verify; launcher gates at 3.9
11
11
  order: 245
12
- owner:
13
- pr:
12
+ owner: loop/audit-root-closed
13
+ pr: 827
14
14
  title: "boost ROOT: CLI audit findings (2026-08)"
15
15
  ---
16
16
  <b>EPIPE leaks past main's own handler.</b> <code>boost --help | (exec 0&lt;&amp;-; sleep 0.3)</code>
@@ -45,3 +45,13 @@ fixes touches a COMMANDS row, so <code>docs/commands.html</code> is unaffected.
45
45
 
46
46
  <br><br>Found by the 2026-08 CLI audit (clusters <code>broken-pipe-exit</code>,
47
47
  <code>help-routing-aliases</code>, <code>launcher-python-floor</code>); repro in the audit log.
48
+
49
+ <br><br><b>Shipped in #827</b> (commit <code>22c9193</code>, batch train-17, 2026-09-08). The card
50
+ was never closed. Re-measured on <code>main</code> at <code>bb1229f</code> on 2026-09-18:
51
+ <code>--help</code>, <code>count</code>, <code>taps</code> and <code>--version</code> piped into
52
+ <code>(exec 0&lt;&amp;-; sleep 0.3)</code> exit 0 with empty stderr, 3/3 runs each (<code>_seal_broken_stdout</code>
53
+ plus <code>_route</code>'s <code>finally</code> flush).
54
+ <code>boost help --help</code>, <code>help version</code> and <code>help help</code> all resolve;
55
+ <code>boost --hepl</code> says <em>&ldquo;unknown option&rdquo;</em>, and <code>print_help</code> carries the Options line.
56
+ The launcher gates at <code>(3, 12)</code>, pinned to <code>requires-python</code> by
57
+ <code>tests/unit/test_launcher_python_floor.py</code>.
@@ -2,15 +2,15 @@
2
2
  id: recommend-recomputes-its-columns-per-row
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: shipped
6
6
  category: UX · Bug
7
7
  complexity: S
8
8
  impact: Low
9
9
  wow: 2
10
10
  note: cmd_recommend hand-rolls its rows and computes desc_w = max(cols - 2 - width - 2 - (l…
11
11
  order: 226
12
- owner:
13
- pr:
12
+ owner: loop/recommend-columns
13
+ pr: 881
14
14
  title: <code>boost recommend</code> sizes the description cell per row from that row's <code>because:</code> text, so neither column lines up
15
15
  ---
16
16
  <b>Measured.</b> At COLUMNS=100 the eight <code>boost recommend</code> rows truncate their descriptions at eight per-row widths spanning 34 to 54 columns — a 20-column swing, the widest cell 59% wider than the narrowest — because <code>desc_w</code> is recomputed inside the row loop from that row's own <code>because:</code> tag length (<code>boost_cli/commands/discovery.py:1062</code>); every rendered cell matched the predicted <code>desc_w</code> to the character and every description ended in an ellipsis, so this is column geometry, not natural description length.
@@ -2,15 +2,15 @@
2
2
  id: roadmap-boards-advertise-python-39
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: shipped
6
6
  category: Quality · Docs
7
7
  complexity: S
8
8
  impact: Low
9
9
  wow: 2
10
10
  note: docs/roadmap.html:17141 and docs/design-roadmap.html:582 both close with Install with…
11
11
  order: 228
12
- owner:
13
- pr:
12
+ owner: loop/boards-python-floor
13
+ pr: 878
14
14
  title: The two roadmap boards' install footers still advertise Python 3.9+, four minor versions under the real floor
15
15
  ---
16
16
  <b>Measured.</b> On stock macOS <code>python3</code> (3.9.6), the exact command in both roadmap footers succeeds silently and installs the wrong software: <code>pip download --no-deps boost-skill-cli</code> exits 0 with no Requires-Python notice and selects boost_skill_cli-1.0.392, because 390 of 557 published releases still declare <code>requires_python: &gt;=3.9</code> — 167 releases behind the current 1.2.103.
@@ -2,15 +2,15 @@
2
2
  id: stale-gate-sizes-in-readme-and-contributing
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: shipped
6
6
  category: Quality · Docs
7
7
  complexity: S
8
8
  impact: Low
9
9
  wow: 2
10
10
  note: README.md:515 says make smoke is "176 checks" and CONTRIBUTING.md:123 says bash tests…
11
11
  order: 235
12
- owner:
13
- pr:
12
+ owner: loop/gate-sizes
13
+ pr: 879
14
14
  title: The contributor-onboarding gate tables state three wrong suite sizes, and README and CONTRIBUTING disagree with each other
15
15
  ---
16
16
  <b>Measured.</b> One command (<code>make smoke</code> is literally <code>bash tests/smoke.sh</code>, Makefile:48-49) is documented as three different sizes in three files — 176 in README.md:515, 170 in CONTRIBUTING.md:123 and 170 again in docs/openssf-badge.md:123 — while it actually runs 183 checks, a figure that is deterministic and statically derivable as 102 top-level <code>run</code> lines plus 81 <code>--help</code> entries in the CMDS heredoc.
@@ -2103,41 +2103,9 @@ Nothing else needed correcting: 7 starter registries, 962 items, 11 matches, the
2103
2103
  </article>
2104
2104
 
2105
2105
  <article class="cap rcard" id="recommend-recomputes-its-columns-per-row">
2106
- <div class="head"><span class="pill planned">Planned</span><span class="cat">UX · Bug</span></div>
2106
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">UX · Bug</span></div>
2107
2107
  <h3><code>boost recommend</code> sizes the description cell per row from that row's <code>because:</code> text, so neither column lines up</h3>
2108
- <p><b>Measured.</b> At COLUMNS=100 the eight <code>boost recommend</code> rows truncate their descriptions at eight per-row widths spanning 34 to 54 columns — a 20-column swing, the widest cell 59% wider than the narrowest — because <code>desc_w</code> is recomputed inside the row loop from that row's own <code>because:</code> tag length (<code>boost_cli/commands/discovery.py:1062</code>); every rendered cell matched the predicted <code>desc_w</code> to the character and every description ended in an ellipsis, so this is column geometry, not natural description length.
2109
-
2110
- <b>Reproduce it.</b>
2111
-
2112
- <code>cd &lt;repo&gt;</code><br>
2113
- <code>export HOME=$TMPDIR/audit-dbi-sweep; mkdir -p "$HOME"; export BOOST_HOME=$TMPDIR/eval-home BOOST_NO_AI=1</code><br>
2114
- <code>COLUMNS=100 ./boost recommend &gt; $TMPDIR/rec.txt 2&gt;&amp;1; cat $TMPDIR/rec.txt</code><br>
2115
- <code>python3 - &lt;&lt;'PY'</code><br>
2116
- <code>import re,os</code><br>
2117
- <code>for line in open(os.environ["TMPDIR"]+"/rec.txt").read().splitlines()[1:]:</code><br>
2118
- <code> m=re.match(r"^ (\S+)\s+(.*?)\s\sbecause: (.*)$", line)</code><br>
2119
- <code> if m: print("desc_cell=%3d because_len=%2d row_len=%d %s"%(len(m.group(2)),len("because: "+m.group(3)),len(line),m.group(1)))</code><br>
2120
- <code>PY</code><br>
2121
- <code>sed -n '1061,1065p' boost_cli/commands/discovery.py</code><br>
2122
- <code>sed -n '638,644p' boost_cli/core/output.py</code>
2123
-
2124
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
2125
-
2126
- The geometry numbers are all CORRECT — I re-derived every one (cells 46/38/46/42/54/34/46/54, because-lengths 19/27/19/23/11/31/19/11, spread 34..54 = 20 columns, row_len 100 on all 8 rows). Four wording/detail claims are wrong and must not ship as written:
2127
-
2128
- 1. FALSE AS STATED: "<code>recommend</code> is also the one result table in the find group that does not go through the width-aware shared <code>out.table()</code>." <code>cmd_search</code> does not call <code>out.table()</code> either — it calls <code>out.search_layout()</code> at <code>boost_cli/commands/discovery.py:219</code> and renders through <code>SearchLayout</code>. <code>out.table()</code> in the find group is called by <code>cmd_index</code> (:857), <code>cmd_discover</code> (:954), <code>_browse_plain</code> (:1091, used by <code>browse</code>) and <code>cmd_trending</code> (:1925, :1949). The correct claim: <b><code>recommend</code> is the only find-group result renderer that uses neither <code>out.table()</code> nor a frozen <code>SearchLayout</code>.</b>
2129
-
2130
- 2. TITLE OVERSTATES: "so neither column lines up" — and the evidence line "row_len 100 on all 8 — every row is right-flush, nothing is a column" contradicts itself. The <code>because:</code> column's RIGHT edge IS flush (col 100 at COLUMNS=100, col 120 at COLUMNS=120, on all 8 rows). What wanders is (a) the <code>because:</code> column's LEFT edge, 69..89, and (b) the description truncation point, 34..54.
2131
-
2132
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2133
-
2134
- PROVENANCE (I checked; it partly softens the framing and the card should say so). <code>git blame</code> puts line 1062 in ff61dfeb, "fix(search): width-clamp &amp; truncate results — the D05 overflow fix (#33)", whose message states the intent: "clip each description to the remaining terminal width, so every result stays one scannable line <b>with its trailing tag (★ curated / because:) intact</b>." So preserving the trailing tag was deliberate; the per-row recompute is what that intent produced. The defect is drift, not carelessness: <code>search</code> was later rewritten onto the frozen <code>SearchLayout</code> (7f1a9a8d, "feat(ui): one design system across search and browse", #540) whose docstring states the opposite rule, and <code>recommend</code> was left on the 2026-07 scheme. Neither commit message nor any comment claims right-alignment of the reason tag as a design goal for <code>recommend</code>, so nothing in the tree defends the current shape — but a card that calls it an oversight without naming #33's stated intent is overclaiming.
2135
-
2136
- SCOPE OF MY REPRO. Measured only from the boost repo (detected stack: javascript, python · frameworks: pytest · also: ci) against the shared read-only 20-tap eval corpus at $TMPDIR/eval-home, with BOOST_NO_AI=1 (which suppresses the "AI picks" block — unrelated to the geometry). Which eight rows appear, and therefore the exact cell widths, depend on that corpus and that stack; the geometry itself is deterministic from :1062 and appears whenever the shown rows carry different <code>because:</code> sets.
2137
-
2138
- <b>Why it is worth doing.</b> <code>recommend</code> is the surface a new user hits before they know any skill names, and its output is a ragged block rather than a scannable list — the description truncation point jumps 20 columns row to row for reasons the reader cannot see (it is the length of the reason tag on the right). Two shipped design items (BOOST-D08, BOOST-D24) made <code>out.table()</code> width-aware for ~28 call sites; this one never adopted it, and the frozen-plan rule that <code>search</code> states in its own docstring is inverted here.
2139
-
2140
- <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
2108
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md">Write-up &middot; recommend-recomputes-its-columns-per-row.md</a></p>
2141
2109
  <div class="meta">
2142
2110
  <span class="m">Complexity <b>S</b></span>
2143
2111
  <span class="m">Impact <b>Low</b></span>
@@ -2197,40 +2165,9 @@ BLAST RADIUS — do not overstate it in the card. The natural set is NOT wired i
2197
2165
  </article>
2198
2166
 
2199
2167
  <article class="cap rcard" id="roadmap-boards-advertise-python-39">
2200
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
2168
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
2201
2169
  <h3>The two roadmap boards' install footers still advertise Python 3.9+, four minor versions under the real floor</h3>
2202
- <p><b>Measured.</b> On stock macOS <code>python3</code> (3.9.6), the exact command in both roadmap footers succeeds silently and installs the wrong software: <code>pip download --no-deps boost-skill-cli</code> exits 0 with no Requires-Python notice and selects boost_skill_cli-1.0.392, because 390 of 557 published releases still declare <code>requires_python: &gt;=3.9</code> — 167 releases behind the current 1.2.103.
2203
-
2204
- <b>Reproduce it.</b>
2205
-
2206
- <code>cd &lt;repo&gt;</code><br>
2207
- <code>for f in docs/*.html; do printf '%-22s %s\n' "$(basename $f)" "$(grep -m1 -n 'foot-note' $f)"; done | grep -o 'Python 3\.[0-9]*+' | sort | uniq -c</code><br>
2208
- <code>grep -n 'requires Python 3.9' docs/roadmap.html docs/design-roadmap.html</code><br>
2209
- <code>sed -n '206p' docs/design-roadmap.html</code><br>
2210
- <code>grep -n 'requires-python' pyproject.toml</code><br>
2211
- <code>.venv/bin/python scripts/build_roadmap.py --check ; echo "EXIT=$?" # green despite the drift</code>
2212
-
2213
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
2214
-
2215
- The documented defect (<code>claim</code> + <code>evidence</code>) reproduces byte-for-byte — every file, line number and count is right: 9 of 11 footers say 3.12+, roadmap.html:17141 and design-roadmap.html:582 say 3.9+, design-roadmap.html:206 says "targets Python ≥ 3.9", pyproject.toml:22 is &gt;=3.12, README.md:54 says 3.12+, and <code>build_roadmap.py --check</code> exits 0. The correction is confined entirely to <code>why_it_matters</code>, which is wrong three times:
2216
-
2217
- 1. WRONG: "the launcher on that interpreter dies with a SyntaxError out of core/workflows.py's match statements." The <code>./boost</code> launcher no longer gates at 3.9 — <code>grep -n '3\.9' boost</code> returns nothing (exit 1), and boost:5, boost:27 and boost:37 all say 3.12. Observed on a PATH holding only Python 3.9.6, the launcher prints <code>boost: Python 3.12+ is required but was not found on PATH / hint: brew install python3</code>. It never selects the 3.9 interpreter.
2218
-
2219
- 2. WRONG even if the gate is bypassed: importing the package on 3.9 does not raise SyntaxError from <code>core/workflows.py</code>'s match statements. It raises <code>ImportError: cannot import name 'UTC' from 'datetime'</code> at <code>boost_cli/core/util.py:15</code>, which fires before workflows.py is reached.
2220
-
2221
- 3. WRONG about the failure being visible at all. The footer's advertised path is <code>pip install boost-skill-cli</code>, not the launcher.
2222
-
2223
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2224
-
2225
- SCOPE OF MY REPRO: everything above was measured on this checkout at the session's HEAD (main, 9b70fc8e) and against live PyPI. No eval corpus or BOOST_HOME was involved — this is a static docs/metadata finding, so the 20-tap corpus caveat does not apply. I did not run a real <code>pip install</code> (only <code>pip download</code>, which exercises the same resolver and version selection without mutating anything).
2226
-
2227
- NOT CARDED — confirmed independently. I grepped all roadmap item titles, then every item body containing <code>3.9</code> (21 files) and every item body containing <code>footer</code>/<code>foot-note</code> (16 files). None names the docs/*.html install footers or their Python version. Three near misses, all genuinely distinct: - <code>audit-root-findings.md</code> covers the *launcher's* three 3.9 sites and explicitly closes "README already says 3.12+ — no doc change needed"; it never mentions a docs page. - <code>python-floor-moves-to-312.md</code> enumerates pyproject, the CI matrix and telemetry; no docs page. - <code>promote-nav-footer-into-the-shared-style-system.md</code> is about nav/footer *presence and styling*, not their text.
2228
-
2229
- TRAP FOR THE CARD AUTHOR — do not re-import the SyntaxError claim. The finder took it from <code>docs/roadmap/items/audit-root-findings.md:36-43</code>, which is still <code>status: planned</code> but whose premise is already fixed on disk: that card says the launcher "still gates at Python 3.9" at boost:5/:27/:37, and all three now say 3.12. Anyone who reads that card while writing this one will copy a consequence that no longer happens.
2230
-
2231
- <b>Why it is worth doing.</b> Both boards are linked from the README ("Roadmap" section, README.md:490-494) and from the Visual Guide nav, so they are landing surfaces a reader can arrive on first. Their footer is the only install instruction on the page, and it tells the reader a Python 3.9 will do. It will not: stock macOS <code>python3</code> IS 3.9, and the launcher on that interpreter dies with a SyntaxError out of core/workflows.py's match statements. The design board's "targets Python ≥ 3.9" also mis-sets the floor for anyone writing a proposal against it.
2232
-
2233
- <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
2170
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/roadmap-boards-advertise-python-39.md">Write-up &middot; roadmap-boards-advertise-python-39.md</a></p>
2234
2171
  <div class="meta">
2235
2172
  <span class="m">Complexity <b>S</b></span>
2236
2173
  <span class="m">Impact <b>Low</b></span>
@@ -2482,32 +2419,9 @@ NOT ALREADY CARDED — I re-checked independently. The PR 739 card (<code>audit-
2482
2419
  </article>
2483
2420
 
2484
2421
  <article class="cap rcard" id="stale-gate-sizes-in-readme-and-contributing">
2485
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
2422
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
2486
2423
  <h3>The contributor-onboarding gate tables state three wrong suite sizes, and README and CONTRIBUTING disagree with each other</h3>
2487
- <p><b>Measured.</b> One command (<code>make smoke</code> is literally <code>bash tests/smoke.sh</code>, Makefile:48-49) is documented as three different sizes in three files — 176 in README.md:515, 170 in CONTRIBUTING.md:123 and 170 again in docs/openssf-badge.md:123 — while it actually runs 183 checks, a figure that is deterministic and statically derivable as 102 top-level <code>run</code> lines plus 81 <code>--help</code> entries in the CMDS heredoc.
2488
-
2489
- <b>Reproduce it.</b>
2490
-
2491
- <code>cd &lt;repo&gt;</code><br>
2492
- <code>sed -n '48,49p' Makefile # make smoke == bash tests/smoke.sh</code><br>
2493
- <code>bash tests/smoke.sh 2&gt;&amp;1 | tail -1 # == results: 183 passed, 0 failed</code><br>
2494
- <code>sed -n '515p' README.md # "176 checks"</code><br>
2495
- <code>sed -n '123,124p' CONTRIBUTING.md # "170 end-to-end checks" ; "11 features, 47 scenarios"</code><br>
2496
- <code>HOME=$TMPDIR/audit-bdd BOOST_HOME=$TMPDIR/audit-bdd/.boost .venv/bin/behave tests/bdd/features --dry-run 2&gt;&amp;1 | tail -2</code>
2497
-
2498
- <b>Verification found nothing to correct.</b> Every number, <code>file:line</code> and command output above was independently re-derived and matched exactly.
2499
-
2500
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2501
-
2502
- 1. THE FINDING UNDERCOUNTS THE BLAST RADIUS. It names two files; there are three. <code>docs/openssf-badge.md:123</code> carries both stale numbers ("170 end-to-end checks" and "11 features, 47 scenarios") in the row that answers the OpenSSF <code>test</code> MUST criterion. That makes five stale statements across three files, not three across two. The finder's not_carded_check grepped roadmap bodies but never grepped <code>docs/</code>, which is how it missed this. A card that fixes only README and CONTRIBUTING leaves a stale count in the file that argues boost's test coverage to an external badge audit.
2503
-
2504
- 2. TWO ARE DRIFT, ONE WAS WRONG ON DAY ONE — do not write the card as uniform "drift". Re-deriving the count at each blame commit: README's 176 was CORRECT at 3aaf4ba4 (2026-08-28, PR #579) and has since drifted to 183; CONTRIBUTING's 170 was CORRECT at c043bb3f (2026-07-24, PR #233) and was never touched again; CONTRIBUTING's "47 scenarios" was CORRECT at 17bd5003 (2026-07-28, PR #292). But docs/openssf-badge.md's 170 was WRONG WHEN IT WAS WRITTEN — at 560652b1 (2026-08-28, PR #563) the suite already ran 176. It copied CONTRIBUTING's already-stale number rather than measuring. That is the sharper story: the count is not just drifting, it is being propagated by copy from whichever file the author happened to read, which is exactly the failure mode the finding's "no way to tell which is authoritative" line predicts.
2505
-
2506
- 3. 183 IS DETERMINISTIC — a card author must not "correct" it.
2507
-
2508
- <b>Why it is worth doing.</b> These two tables are the contributor's map of what <code>make check</code> will do to their PR, and a first-time contributor reads whichever file they landed on. Seeing 183 where the doc promised 176 (or 170) is a signal the gate changed under them; worse, the two files disagree, so there is no way to tell which is authoritative without running the suite. The BDD row is the same failure in a suite that is not even in <code>make check</code>, where a wrong size is the only signal a contributor has that scenarios were added.
2509
-
2510
- <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CONFIRMED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
2424
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md">Write-up &middot; stale-gate-sizes-in-readme-and-contributing.md</a></p>
2511
2425
  <div class="meta">
2512
2426
  <span class="m">Complexity <b>S</b></span>
2513
2427
  <span class="m">Impact <b>Low</b></span>
@@ -6393,40 +6307,9 @@ untouched (no parser changes). Found by the 2026-08 CLI audit (cluster stale-pro
6393
6307
  </article>
6394
6308
 
6395
6309
  <article class="cap rcard" id="audit-root-findings">
6396
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CLI · Bug</span></div>
6310
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
6397
6311
  <h3>boost ROOT: CLI audit findings (2026-08)</h3>
6398
- <p><b>EPIPE leaks past main's own handler.</b> <code>boost --help | (exec 0&lt;&amp;-; sleep 0.3)</code>
6399
- exits <b>120</b> with <em>&ldquo;Exception ignored on flushing sys.stdout: BrokenPipeError&rdquo;</em>
6400
- &mdash; 3/3 runs, and <code>count</code>, <code>taps</code> and <code>--version</code> leak the same way.
6401
- <code>cli.py:327-331</code> deliberately catches BrokenPipeError and returns 0, but stdout is never
6402
- flushed inside the try, so any output that fits the stdio buffer raises at interpreter exit &mdash; and
6403
- the <code>--help</code>/<code>--version</code> early returns (<code>cli.py:292-302</code>) sit before
6404
- the try with no handler at all. Fix: cover the early returns, flush <code>sys.stdout</code> inside the
6405
- try, and <code>os.dup2</code> a devnull fd over stdout in the handler so the exit flush cannot raise.
6406
-
6407
- <br><br><b>Help routing rejects main's own aliases.</b> <code>boost help --help</code> &rarr;
6408
- <em>&ldquo;unknown command: --help / hint: did you mean: heal?&rdquo;</em> exit 2;
6409
- <code>boost help version</code> suggests <em>verify</em> while <code>boost version</code> works;
6410
- even <code>boost help help</code> fails. The aliases live only in <code>cli.main</code>
6411
- (<code>cli.py:292-302</code>) and <code>print_command_help</code> resolves against COMMANDS alone,
6412
- then difflib-guesses any token &mdash; dash-prefixed ones included. And <code>boost --help</code>
6413
- documents none of the working global flags (<code>-V</code>/<code>-v</code>/<code>--debug</code>/<code>-q</code>).
6414
- Fix: short-circuit the aliases in <code>print_command_help</code> before difflib, say
6415
- <em>unknown option</em> for dash tokens in <code>_unknown</code> (<code>cli.py:231-236</code>), and add
6416
- one dim Options line under Usage in <code>print_help</code>.
6417
-
6418
- <br><br><b>The <code>./boost</code> launcher still gates at Python 3.9</b> &mdash; tuple
6419
- (<code>boost:27</code>), hint text (<code>boost:37</code>) and header comment (<code>boost:5</code>) all
6420
- say 3.9+ while <code>pyproject.toml:22</code> requires <code>&gt;=3.12</code>. On a stock macOS whose
6421
- only <code>python3</code> is 3.9 the launcher selects it and the user gets a SyntaxError from
6422
- <code>core/workflows.py</code>'s match statements instead of the friendly hint. The shipped
6423
- <em>python-floor-moves-to-312</em> item enumerated every floor touchpoint and missed this one. Fix:
6424
- bump all three sites to 3.12 and add a unit test pinning the launcher's floor to
6425
- <code>requires-python</code>. README already says 3.12+ &mdash; no doc change needed; none of the three
6426
- fixes touches a COMMANDS row, so <code>docs/commands.html</code> is unaffected.
6427
-
6428
- <br><br>Found by the 2026-08 CLI audit (clusters <code>broken-pipe-exit</code>,
6429
- <code>help-routing-aliases</code>, <code>launcher-python-floor</code>); repro in the audit log.</p>
6312
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/audit-root-findings.md">Write-up &middot; audit-root-findings.md</a></p>
6430
6313
  <div class="meta">
6431
6314
  <span class="m">Complexity <b>S</b></span>
6432
6315
  <span class="m">Impact <b>Low</b></span>
@@ -8404,7 +8287,7 @@ regressed. Lowering the floor alone just relocates the coin flip.</p>
8404
8287
  <footer>
8405
8288
  <div class="wrap">
8406
8289
  <p class="foot-brand"><b>boost</b> — a package manager for AI skills</p>
8407
- <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.9+ and <code>git</code></p>
8290
+ <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.12+ and <code>git</code></p>
8408
8291
  <nav class="foot-links" aria-label="Documentation">
8409
8292
  <a href="index.html">Guide</a>
8410
8293
  <a href="commands.html">Commands</a>
@@ -1131,6 +1131,19 @@ class TestRecommend:
1131
1131
  assert "because: pytest, python" in r.out
1132
1132
  assert "because: javascript, react" in r.out
1133
1133
 
1134
+ @pytest.mark.parametrize("cols", ["60", "100"])
1135
+ def test_rows_share_one_column_plan(self, boost, stack_tap, react_project,
1136
+ monkeypatch, cols):
1137
+ # The description width used to be sized per row from that row's own
1138
+ # `because:` tag, so the clip point swung row to row and the reason
1139
+ # column started wherever each description happened to end.
1140
+ monkeypatch.setenv("COLUMNS", cols)
1141
+ r = boost("recommend", "--path", react_project)
1142
+ rows = [ln for ln in r.out.splitlines() if "because: " in ln]
1143
+ reasons = {ln.split("because: ")[1] for ln in rows}
1144
+ assert len(rows) >= 2 and len({len(x) for x in reasons}) >= 2, rows
1145
+ assert len({ln.index("because: ") for ln in rows}) == 1, rows
1146
+
1134
1147
  def test_json_purity(self, boost, stack_tap, react_project):
1135
1148
  r = boost("recommend", "--path", react_project, "--json")
1136
1149
  data = json.loads(r.out)
@@ -46,3 +46,35 @@ class TestLauncherPythonFloor:
46
46
  major, minor = _requires_python_floor()
47
47
  text = LAUNCHER.read_text(encoding="utf-8")
48
48
  assert "Python %d.%d+ is required" % (major, minor) in text
49
+
50
+
51
+ class TestDocsPythonFloor:
52
+ """The docs' own install lines must name the same floor.
53
+
54
+ Nine of the eleven docs pages' footers moved to 3.12 with the floor; the
55
+ two roadmap boards' footers — hand-authored outside the regions
56
+ `build_roadmap.py` regenerates, so `--check` stayed green — kept saying
57
+ 3.9, as did the design board's "targets Python ≥ 3.9". Stock macOS
58
+ `python3` is 3.9, so that is the reader the stale floor misleads.
59
+ """
60
+
61
+ def test_every_footer_names_requires_python(self):
62
+ major, minor = _requires_python_floor()
63
+ pages = sorted((ROOT / "docs").glob("*.html"))
64
+ footers = {page.name: [ln.strip() for ln in
65
+ page.read_text(encoding="utf-8").splitlines()
66
+ if 'class="foot-note"' in ln]
67
+ for page in pages}
68
+ # One footer per page, found by its class alone — so a page that
69
+ # loses its footer, or rewords it away from "requires Python", fails
70
+ # here rather than dropping out of the scan.
71
+ assert pages and all(len(f) == 1 for f in footers.values()), footers
72
+ stale = {name: f[0] for name, f in footers.items()
73
+ if "requires Python %d.%d+" % (major, minor) not in f[0]}
74
+ assert not stale, stale
75
+
76
+ def test_design_board_targets_the_same_floor(self):
77
+ major, minor = _requires_python_floor()
78
+ text = (ROOT / "docs" / "design-roadmap.html").read_text(encoding="utf-8")
79
+ assert re.findall(r"targets <code>Python ≥ (\d+\.\d+)</code>", text) \
80
+ == ["%d.%d" % (major, minor)]
@@ -100,6 +100,49 @@ class TestCommandCount:
100
100
  # test whose formula is a guess is worse than no test.
101
101
 
102
102
 
103
+ class TestSuiteSizesAgree:
104
+ """The smoke and BDD sizes the docs state.
105
+
106
+ They had drifted three ways at once: README said 176 smoke checks,
107
+ CONTRIBUTING and the OpenSSF badge answer 170, the suite ran 183, and the
108
+ badge's 170 was already wrong on the day it was copied in. Per the note
109
+ above, the smoke count is not derived from smoke.sh's shape; what IS
110
+ checkable without a formula is that the docs agree with each other, so a
111
+ reader never has to guess which file is right. The BDD size is
112
+ declarative (one `Scenario:` per scenario), so it is checked outright.
113
+ """
114
+
115
+ DOCS = ("README.md", "CONTRIBUTING.md", "docs/openssf-badge.md")
116
+
117
+ def _read(self, doc):
118
+ return (ROOT / doc).read_text(encoding="utf-8")
119
+
120
+ def test_every_doc_states_the_same_smoke_size(self):
121
+ sizes = {}
122
+ for doc in self.DOCS:
123
+ for line in self._read(doc).splitlines():
124
+ if "smoke" in line:
125
+ for n in re.findall(r"(\d+) (?:end-to-end )?checks", line):
126
+ sizes.setdefault(int(n), []).append(doc)
127
+ # Every statement, not just every doc: the badge answer states it twice.
128
+ assert sorted(d for docs in sizes.values() for d in docs) == sorted(
129
+ ["README.md", "CONTRIBUTING.md"] + ["docs/openssf-badge.md"] * 2)
130
+ assert len(sizes) == 1, "docs disagree on the smoke size: %s" % sizes
131
+
132
+ def test_bdd_size_matches_the_feature_files(self):
133
+ features = sorted((ROOT / "tests" / "bdd" / "features").glob("*.feature"))
134
+ texts = [f.read_text(encoding="utf-8") for f in features]
135
+ # An outline expands to one scenario per Examples row, and `Example:`
136
+ # is Gherkin's synonym for `Scenario:`; this count models neither, so
137
+ # refuse rather than undercount.
138
+ assert not any(re.search(r"^\s*(Scenario Outline|Example):", t, re.M)
139
+ for t in texts)
140
+ scenarios = sum(len(re.findall(r"^\s*Scenario:", t, re.M)) for t in texts)
141
+ stated = [(int(f), int(s)) for doc in self.DOCS for f, s in
142
+ re.findall(r"(\d+) features, (\d+) scenarios", self._read(doc))]
143
+ assert stated and set(stated) == {(len(features), scenarios)}, stated
144
+
145
+
103
146
  class TestNoStaleCountsElsewhere:
104
147
  @pytest.mark.parametrize("doc", ["README.md", "docs/index.html"])
105
148
  def test_no_command_count_is_a_stale_literal(self, doc):
File without changes