boost-skill-cli 1.2.127__tar.gz → 1.2.129__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.127 → boost_skill_cli-1.2.129}/CONTRIBUTING.md +2 -2
  2. {boost_skill_cli-1.2.127/boost_skill_cli.egg-info → boost_skill_cli-1.2.129}/PKG-INFO +3 -3
  3. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/README.md +2 -2
  4. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/_version.py +2 -2
  5. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/output.py +17 -4
  6. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129/boost_skill_cli.egg-info}/PKG-INFO +3 -3
  7. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/design-roadmap.html +2 -2
  8. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/openssf-badge.md +2 -2
  9. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +3 -3
  10. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +4 -5
  11. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +3 -3
  12. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +3 -3
  13. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap.html +9 -136
  14. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_launcher_python_floor.py +32 -0
  15. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_marketing_counts.py +59 -0
  16. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mutation_hardening.py +28 -0
  17. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.gitattributes +0 -0
  18. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.gitignore +0 -0
  19. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.gitleaks.toml +0 -0
  20. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.htmlvalidate.json +0 -0
  21. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.lighthouserc.json +0 -0
  22. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.lycheeignore +0 -0
  23. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.markdownlint-cli2.jsonc +0 -0
  24. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.pre-commit-config.yaml +0 -0
  25. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.stylelintrc.json +0 -0
  26. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.vale/styles/boost/AIWriting.yml +0 -0
  27. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.vale/styles/boost/Terminology.yml +0 -0
  28. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  29. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/.vale.ini +0 -0
  30. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/CLAUDE.md +0 -0
  31. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/CODE_OF_CONDUCT.md +0 -0
  32. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/DCO +0 -0
  33. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/GOVERNANCE.md +0 -0
  34. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/LICENSE +0 -0
  35. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/MAINTAINERS.md +0 -0
  36. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/MANIFEST.in +0 -0
  37. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/Makefile +0 -0
  38. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/SECURITY.md +0 -0
  39. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/SUPPORT.md +0 -0
  40. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost +0 -0
  41. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/__init__.py +0 -0
  42. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/__main__.py +0 -0
  43. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/cli.py +0 -0
  44. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/cliparse.py +0 -0
  45. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/__init__.py +0 -0
  46. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/_common.py +0 -0
  47. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/bmad.py +0 -0
  48. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/configuration.py +0 -0
  49. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/discovery.py +0 -0
  50. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/hooks.py +0 -0
  51. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/info.py +0 -0
  52. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/intelligence.py +0 -0
  53. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/pkg.py +0 -0
  54. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/quality.py +0 -0
  55. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/quickstart.py +0 -0
  56. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/run.py +0 -0
  57. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/safety.py +0 -0
  58. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/taps.py +0 -0
  59. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/commands/team.py +0 -0
  60. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/__init__.py +0 -0
  61. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/adapters.py +0 -0
  62. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/agents.py +0 -0
  63. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/ai.py +0 -0
  64. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/aihost.py +0 -0
  65. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/archive.py +0 -0
  66. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/bmad.py +0 -0
  67. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/bootstrap.py +0 -0
  68. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/browse.py +0 -0
  69. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/builtin.py +0 -0
  70. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/capabilities.py +0 -0
  71. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/catalog.py +0 -0
  72. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/catalogbundle.py +0 -0
  73. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/chat.py +0 -0
  74. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/claude_settings.py +0 -0
  75. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/cohort.py +0 -0
  76. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/complete.py +0 -0
  77. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/config.py +0 -0
  78. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/dense.py +0 -0
  79. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/deps.py +0 -0
  80. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/discovery.py +0 -0
  81. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/ed25519.py +0 -0
  82. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/embed.py +0 -0
  83. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/faithfulness.py +0 -0
  84. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/frontmatter.py +0 -0
  85. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/gitutil.py +0 -0
  86. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/hookhost.py +0 -0
  87. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/imperative.py +0 -0
  88. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/injectscan.py +0 -0
  89. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/installscan.py +0 -0
  90. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/integrity.py +0 -0
  91. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/journal.py +0 -0
  92. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/jsonstate.py +0 -0
  93. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/localembed.py +0 -0
  94. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/lockfile.py +0 -0
  95. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/logs.py +0 -0
  96. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/mcp.py +0 -0
  97. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/mcpdecl.py +0 -0
  98. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/mcphost.py +0 -0
  99. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/minisign.py +0 -0
  100. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/nethttp.py +0 -0
  101. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/paths.py +0 -0
  102. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/policy.py +0 -0
  103. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/projectlock.py +0 -0
  104. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/provenance.py +0 -0
  105. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/rag.py +0 -0
  106. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/registry.py +0 -0
  107. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/report.py +0 -0
  108. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/resolve.py +0 -0
  109. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/rules.py +0 -0
  110. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/scopes.py +0 -0
  111. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/secretscan.py +0 -0
  112. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/selfupdate.py +0 -0
  113. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/serve.py +0 -0
  114. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/shards.py +0 -0
  115. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/stackprobe.py +0 -0
  116. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/staleness.py +0 -0
  117. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/store.py +0 -0
  118. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/trustaudit.py +0 -0
  119. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/typedvalue.py +0 -0
  120. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/typosquat.py +0 -0
  121. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/updatediff.py +0 -0
  122. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/util.py +0 -0
  123. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/core/workflows.py +0 -0
  124. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/data/registries.json +0 -0
  125. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/data/rules/boost-first.mdc +0 -0
  126. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/errors.py +0 -0
  127. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_cli/spin.py +0 -0
  128. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/__init__.py +0 -0
  129. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/_compat.py +0 -0
  130. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/graph.py +0 -0
  131. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/loader.py +0 -0
  132. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/py.typed +0 -0
  133. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_langchain/retriever.py +0 -0
  134. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  135. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  136. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  137. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_skill_cli.egg-info/requires.txt +0 -0
  138. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/boost_skill_cli.egg-info/top_level.txt +0 -0
  139. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/codecov.yml +0 -0
  140. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/.claude/settings.local.json +0 -0
  141. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/DEBUGGING.md +0 -0
  142. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/adapters.html +0 -0
  143. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/architecture/README.md +0 -0
  144. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/architecture/c4-components-core.md +0 -0
  145. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/architecture/c4-containers.md +0 -0
  146. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/architecture/c4-context.md +0 -0
  147. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/architecture/c4-dynamic-install.md +0 -0
  148. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/bmad.md +0 -0
  149. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/distill.gif +0 -0
  150. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/doctor.gif +0 -0
  151. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/explain.gif +0 -0
  152. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/hooks.gif +0 -0
  153. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/install.gif +0 -0
  154. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/pulse.gif +0 -0
  155. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/search.gif +0 -0
  156. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/gifs/tap.gif +0 -0
  157. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/distill.tape +0 -0
  158. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/doctor.tape +0 -0
  159. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/explain.tape +0 -0
  160. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/hooks.tape +0 -0
  161. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/install.tape +0 -0
  162. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/pulse.tape +0 -0
  163. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/search.tape +0 -0
  164. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel/tapes/tap.tape +0 -0
  165. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/carousel.html +0 -0
  166. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/chat.html +0 -0
  167. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/code-review.md +0 -0
  168. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/commands.html +0 -0
  169. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/commit-audit.md +0 -0
  170. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/demo-index.json +0 -0
  171. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/demo.gif +0 -0
  172. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/demo.html +0 -0
  173. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/demo.tape +0 -0
  174. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/dependencies.md +0 -0
  175. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/eval-latest.json +0 -0
  176. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/eval.html +0 -0
  177. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/index.html +0 -0
  178. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/langchain.html +0 -0
  179. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/mcp-hub.html +0 -0
  180. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/openssf-playbook.md +0 -0
  181. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/rag-architecture.md +0 -0
  182. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D01.md +0 -0
  183. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D02.md +0 -0
  184. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D03.md +0 -0
  185. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D04.md +0 -0
  186. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D05.md +0 -0
  187. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D06.md +0 -0
  188. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D07.md +0 -0
  189. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D08.md +0 -0
  190. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D09.md +0 -0
  191. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D10.md +0 -0
  192. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D11.md +0 -0
  193. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D12.md +0 -0
  194. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D13.md +0 -0
  195. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D14.md +0 -0
  196. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D15.md +0 -0
  197. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D16.md +0 -0
  198. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D17.md +0 -0
  199. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D18.md +0 -0
  200. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D19.md +0 -0
  201. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D20.md +0 -0
  202. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D21.md +0 -0
  203. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D22.md +0 -0
  204. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D23.md +0 -0
  205. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D24.md +0 -0
  206. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D25.md +0 -0
  207. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D26.md +0 -0
  208. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/BOOST-D27.md +0 -0
  209. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  210. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  211. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  212. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  213. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  214. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  215. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  216. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  217. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  218. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  219. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  220. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  221. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  222. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  223. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  224. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  225. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-attest-findings.md +0 -0
  226. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-audit-findings.md +0 -0
  227. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  228. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-browse-findings.md +0 -0
  229. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  230. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  231. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  232. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  233. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-chat-findings.md +0 -0
  234. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  235. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  236. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  237. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-completions-findings.md +0 -0
  238. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-config-findings.md +0 -0
  239. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  240. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-context-findings.md +0 -0
  241. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  242. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  243. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-create-findings.md +0 -0
  244. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  245. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-deps-findings.md +0 -0
  246. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-discover-findings.md +0 -0
  247. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  248. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  249. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-drift-findings.md +0 -0
  250. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  251. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-edit-findings.md +0 -0
  252. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  253. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-explain-findings.md +0 -0
  254. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-export-findings.md +0 -0
  255. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  256. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  257. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  258. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  259. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/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.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-health-findings.md +0 -0
  261. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  262. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  263. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-import-findings.md +0 -0
  264. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-index-findings.md +0 -0
  265. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  266. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  267. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-install-findings.md +0 -0
  268. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  269. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  270. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-lint-findings.md +0 -0
  271. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-log-findings.md +0 -0
  272. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  273. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  274. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  275. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  276. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  277. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  278. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/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.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  280. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  281. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  282. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/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.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-policy-findings.md +0 -0
  284. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-preview-findings.md +0 -0
  285. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-profile-findings.md +0 -0
  286. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  287. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  288. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  289. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  290. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  291. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  292. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  293. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  294. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  295. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-replay-findings.md +0 -0
  296. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-root-findings.md +0 -0
  297. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  298. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-run-findings.md +0 -0
  299. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  300. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-search-findings.md +0 -0
  301. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  302. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  303. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  304. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  305. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  306. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  307. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  308. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  309. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-sync-findings.md +0 -0
  310. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-tag-findings.md +0 -0
  311. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  312. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-tap-findings.md +0 -0
  313. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-taps-findings.md +0 -0
  314. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  315. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-test-findings.md +0 -0
  316. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-trust-findings.md +0 -0
  317. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  318. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  319. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-untap-findings.md +0 -0
  320. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-update-findings.md +0 -0
  321. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  322. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-verify-findings.md +0 -0
  323. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/audit-who-findings.md +0 -0
  324. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  325. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  326. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  327. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  328. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  329. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  330. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  331. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  332. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  333. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  334. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  335. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  336. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  337. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  338. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  339. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  340. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/boost-first-rule.md +0 -0
  341. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  342. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  343. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/branch-current-gate.md +0 -0
  344. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  345. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  346. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  347. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  348. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  349. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  350. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  351. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  352. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  353. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  354. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  355. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  356. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  357. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  358. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  359. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  360. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  361. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/cli-command-audit.md +0 -0
  362. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  363. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  364. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  365. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  366. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/command-carousel-page.md +0 -0
  367. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  368. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  369. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  370. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  371. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  372. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  373. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  374. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  375. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  376. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  377. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  378. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  379. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  380. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  381. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  382. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  383. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  384. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  385. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  386. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  387. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  388. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  389. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  390. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  391. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  392. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  393. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  394. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  395. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  396. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  397. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  398. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  399. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  400. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  401. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  402. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  403. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  404. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  405. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  406. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  407. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  408. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  409. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  410. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  411. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  412. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  413. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  414. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  415. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  416. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  417. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  418. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  419. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  420. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  421. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  422. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  423. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  424. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  425. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  426. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  427. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  428. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  429. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  430. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  431. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  432. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  433. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  434. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  435. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  436. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  437. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  438. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/github-community-health-files.md +0 -0
  439. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  440. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  441. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  442. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  443. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  444. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  445. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  446. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  447. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  448. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  449. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  450. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  451. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  452. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  453. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  454. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  455. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  456. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  457. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  458. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  459. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  460. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  461. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  462. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  463. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  464. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  465. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  466. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  467. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  468. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  469. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  470. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  471. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  472. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  473. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  474. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  475. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  476. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  477. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  478. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  479. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  480. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  481. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  482. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  483. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  484. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  485. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  486. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  487. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  488. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  489. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  490. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  491. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  492. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  493. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  494. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  495. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  496. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  497. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  498. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  499. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  500. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  501. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  502. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  503. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  504. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  505. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  506. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  507. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  508. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  509. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  510. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  511. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  512. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  513. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  514. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  515. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  516. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  517. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  518. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  519. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  520. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  521. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  522. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  523. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  524. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/openssf-playbook.md +0 -0
  525. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/openssf-silver.md +0 -0
  526. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  527. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  528. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  529. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  530. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  531. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  532. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  533. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  534. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  535. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  536. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  537. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  538. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  539. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  540. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  541. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  542. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  543. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  544. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  545. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  546. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  547. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  548. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  549. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  550. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  551. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  552. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  553. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  554. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  555. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  556. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  557. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  558. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  559. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  560. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  561. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  562. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  563. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  564. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  565. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  566. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  567. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  568. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  569. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/relicence-apache-2.md +0 -0
  570. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  571. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  572. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  573. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  574. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  575. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  576. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  577. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  578. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  579. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  580. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  581. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  582. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  583. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  584. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  585. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  586. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  587. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  588. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  589. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  590. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  591. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  592. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  593. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  594. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  595. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  596. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  597. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  598. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  599. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  600. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  601. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  602. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  603. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  604. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  605. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  606. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  607. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  608. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  609. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  610. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  611. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  612. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  613. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  614. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  615. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  616. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  617. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  618. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  619. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  620. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  621. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  622. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  623. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  624. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  625. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  626. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  627. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  628. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  629. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  630. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  631. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  632. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  633. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  634. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  635. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  636. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  637. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  638. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  639. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  640. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  641. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  642. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  643. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  644. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  645. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  646. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  647. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  648. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  649. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  650. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  651. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  652. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  653. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  654. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  655. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  656. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  657. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  658. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  659. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  660. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  661. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  662. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  663. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  664. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  665. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  666. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  667. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  668. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  669. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/workspace-scope-install.md +0 -0
  670. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/zip-strict-audit.md +0 -0
  671. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  672. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  673. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/security-design.md +0 -0
  674. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/semantic-search.md +0 -0
  675. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  676. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/verifying-releases.md +0 -0
  677. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/meta.md +0 -0
  678. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/openvex.json +0 -0
  679. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  680. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  681. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  682. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  683. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/eslint.config.mjs +0 -0
  684. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/README.md +0 -0
  685. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/__init__.py +0 -0
  686. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/baseline.json +0 -0
  687. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/faithfulness.py +0 -0
  688. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/golden_set.json +0 -0
  689. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/make_corpus.py +0 -0
  690. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/make_golden.py +0 -0
  691. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/metrics.py +0 -0
  692. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/publish_golden_dataset.py +0 -0
  693. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/evals/run_evals.py +0 -0
  694. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/examples/README.md +0 -0
  695. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/examples/adapt-demo.sh +0 -0
  696. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/examples/boost-run-prototype.sh +0 -0
  697. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/index.html +0 -0
  698. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/noxfile.py +0 -0
  699. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/pyproject.toml +0 -0
  700. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/coverage-tools.in +0 -0
  701. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/coverage-tools.txt +0 -0
  702. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/lint-tools.in +0 -0
  703. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/lint-tools.txt +0 -0
  704. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/mutation-tools.in +0 -0
  705. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/mutation-tools.txt +0 -0
  706. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/platform-pins.lock +0 -0
  707. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/release-tools.in +0 -0
  708. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/release-tools.txt +0 -0
  709. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/test-tools.in +0 -0
  710. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/requirements/test-tools.txt +0 -0
  711. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/a11y_check.py +0 -0
  712. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/add_spdx_headers.py +0 -0
  713. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/bench_cli.sh +0 -0
  714. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_command_reference.py +0 -0
  715. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_demo_index.py +0 -0
  716. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_registries.py +0 -0
  717. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_roadmap.py +0 -0
  718. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_scale_corpus.py +0 -0
  719. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/build_vex.py +0 -0
  720. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_anchors.py +0 -0
  721. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_branch_current.py +0 -0
  722. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_dco.py +0 -0
  723. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_licenses.py +0 -0
  724. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_reproducible.py +0 -0
  725. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/check_required_checks.py +0 -0
  726. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/ensure_eval_corpus.sh +0 -0
  727. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_corpus.py +0 -0
  728. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_explain.py +0 -0
  729. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_gate.py +0 -0
  730. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_recommend.py +0 -0
  731. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_retrieval.py +0 -0
  732. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_stats_summary.py +0 -0
  733. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/eval_tools.py +0 -0
  734. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/import_budget.py +0 -0
  735. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/lock_toolchain.py +0 -0
  736. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/measure_near_duplicate_bound.py +0 -0
  737. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/measure_registry.py +0 -0
  738. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/mutation_gate.py +0 -0
  739. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/mutation_shards.py +0 -0
  740. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/mutation_weights.json +0 -0
  741. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/normalize_sdist.py +0 -0
  742. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/page_budget.py +0 -0
  743. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/perf_gate.py +0 -0
  744. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/post_deploy_smoke.py +0 -0
  745. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/publish_eval_json.py +0 -0
  746. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/publish_shards.py +0 -0
  747. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/release_guard.py +0 -0
  748. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/release_preflight.py +0 -0
  749. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/serve_docs.py +0 -0
  750. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/scripts/shard_plan.py +0 -0
  751. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/setup.cfg +0 -0
  752. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/sonar-project.properties +0 -0
  753. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/style/README.md +0 -0
  754. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/style/boost.css +0 -0
  755. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/style/boost.js +0 -0
  756. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/style/demo.html +0 -0
  757. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/adapt.feature +0 -0
  758. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/browse.feature +0 -0
  759. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/count.feature +0 -0
  760. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/discover.feature +0 -0
  761. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/doctor.feature +0 -0
  762. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/environment.py +0 -0
  763. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/explain.feature +0 -0
  764. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/index.feature +0 -0
  765. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/install.feature +0 -0
  766. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/list.feature +0 -0
  767. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/mcp.feature +0 -0
  768. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/search.feature +0 -0
  769. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/steps/cli_steps.py +0 -0
  770. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/steps/discovery_steps.py +0 -0
  771. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/steps/mcp_steps.py +0 -0
  772. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/bdd/features/steps/quality_steps.py +0 -0
  773. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/conftest.py +0 -0
  774. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/baseline.json +0 -0
  775. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/explain.jsonl +0 -0
  776. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  777. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/golden-natural.jsonl +0 -0
  778. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/golden.jsonl +0 -0
  779. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/recommend.jsonl +0 -0
  780. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/taps-scale.txt +0 -0
  781. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/taps.txt +0 -0
  782. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/eval/tool_calls.jsonl +0 -0
  783. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  784. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_bmad_all_hosts.py +0 -0
  785. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_bmad_personas_scope.py +0 -0
  786. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_capabilities_policy.py +0 -0
  787. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_adapt.py +0 -0
  788. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_bmad.py +0 -0
  789. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_catalog.py +0 -0
  790. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_chat.py +0 -0
  791. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_configuration.py +0 -0
  792. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_discovery.py +0 -0
  793. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_hooks.py +0 -0
  794. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_hooks_gemini.py +0 -0
  795. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_info.py +0 -0
  796. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_intelligence.py +0 -0
  797. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_json_reports.py +0 -0
  798. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_pane_width.py +0 -0
  799. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_pkg.py +0 -0
  800. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_quality.py +0 -0
  801. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_quickstart.py +0 -0
  802. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_tap_pins.py +0 -0
  803. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_taps.py +0 -0
  804. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_cli_team.py +0 -0
  805. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  806. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  807. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_everyday_loop.py +0 -0
  808. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_integrity_enforce.py +0 -0
  809. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_kind_conformance.py +0 -0
  810. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_property_parsers.py +0 -0
  811. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_recommend_because_is_true.py +0 -0
  812. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_reports_match_reality.py +0 -0
  813. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_run.py +0 -0
  814. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_tap_signing.py +0 -0
  815. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/functional/test_workspace_scope.py +0 -0
  816. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/README.md +0 -0
  817. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  818. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  819. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  820. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  821. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  822. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  823. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  824. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  825. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  826. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  827. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  828. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  829. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  830. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  831. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  832. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  833. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  834. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  835. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  836. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  837. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  838. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  839. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  840. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/fuzz_frontmatter.py +0 -0
  841. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/fuzz/fuzz_registry.py +0 -0
  842. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/langchain/conftest.py +0 -0
  843. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/langchain/test_graph.py +0 -0
  844. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/langchain/test_loader.py +0 -0
  845. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/langchain/test_retriever.py +0 -0
  846. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/make_fixture.py +0 -0
  847. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/perf/test_benchmarks.py +0 -0
  848. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/smoke.sh +0 -0
  849. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  850. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_a11y_check.py +0 -0
  851. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_action_pin_lockstep.py +0 -0
  852. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_adapters.py +0 -0
  853. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_adapters_multi.py +0 -0
  854. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_adapters_runner.py +0 -0
  855. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_agents.py +0 -0
  856. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_ai.py +0 -0
  857. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_aihost.py +0 -0
  858. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_archive.py +0 -0
  859. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_bmad_core.py +0 -0
  860. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_boost_first_offer.py +0 -0
  861. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_bootstrap.py +0 -0
  862. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_bot_pr_dco.py +0 -0
  863. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_branch_current.py +0 -0
  864. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_browse.py +0 -0
  865. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_builtin.py +0 -0
  866. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_capabilities.py +0 -0
  867. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_catalog.py +0 -0
  868. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_catalog_keyword_words.py +0 -0
  869. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_catalogbundle.py +0 -0
  870. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_chat.py +0 -0
  871. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_check_anchors.py +0 -0
  872. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_check_dco.py +0 -0
  873. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_check_licenses.py +0 -0
  874. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_check_reproducible.py +0 -0
  875. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_claude_settings.py +0 -0
  876. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_clean_internal_cache.py +0 -0
  877. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_cli_update_shards.py +0 -0
  878. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_cliparse.py +0 -0
  879. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_codeql_analysis_key.py +0 -0
  880. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_cohort.py +0 -0
  881. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_command_reference_fresh.py +0 -0
  882. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_community_health_files.py +0 -0
  883. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_compact.py +0 -0
  884. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_complete.py +0 -0
  885. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_complete_rc_block.py +0 -0
  886. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_config.py +0 -0
  887. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_content_dedupe.py +0 -0
  888. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_content_identity.py +0 -0
  889. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  890. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_crash_redaction.py +0 -0
  891. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dedup_trust.py +0 -0
  892. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_demo_index.py +0 -0
  893. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense.py +0 -0
  894. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  895. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_embed_dedupe.py +0 -0
  896. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_entry_reuse.py +0 -0
  897. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_entry_vectors.py +0 -0
  898. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_fallback.py +0 -0
  899. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_fix_hint.py +0 -0
  900. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_progress.py +0 -0
  901. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_quantized.py +0 -0
  902. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_ready_order.py +0 -0
  903. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_shard_real_schema.py +0 -0
  904. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  905. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_shards.py +0 -0
  906. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_status.py +0 -0
  907. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_status_cheap.py +0 -0
  908. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dense_vector_dedupe.py +0 -0
  909. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_dependabot_config.py +0 -0
  910. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_deps.py +0 -0
  911. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_discovery.py +0 -0
  912. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_distill_merge.py +0 -0
  913. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_docs_pages_linked.py +0 -0
  914. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_docsite_chrome.py +0 -0
  915. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_doctor_output_polish.py +0 -0
  916. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_drift_hint.py +0 -0
  917. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_ed25519.py +0 -0
  918. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_embed.py +0 -0
  919. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_embed_local.py +0 -0
  920. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_embed_truncated_response.py +0 -0
  921. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_entry_key.py +0 -0
  922. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_errors_and_cli_table.py +0 -0
  923. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_baseline.py +0 -0
  924. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_corpus.py +0 -0
  925. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_faithfulness.py +0 -0
  926. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_gate.py +0 -0
  927. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_grading.py +0 -0
  928. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_metrics.py +0 -0
  929. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_stats_summary.py +0 -0
  930. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_tools.py +0 -0
  931. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_eval_tools_probe.py +0 -0
  932. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  933. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_faithfulness.py +0 -0
  934. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_frontmatter.py +0 -0
  935. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_fuzz_targets.py +0 -0
  936. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  937. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gitleaks_config.py +0 -0
  938. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gitutil.py +0 -0
  939. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gitutil_lfs.py +0 -0
  940. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gitutil_sparse.py +0 -0
  941. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_gstack_coexistence.py +0 -0
  942. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_hook_settings_hosts.py +0 -0
  943. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_hookhost.py +0 -0
  944. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_imperative.py +0 -0
  945. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_import_budget.py +0 -0
  946. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_injectscan.py +0 -0
  947. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_install_permission_error.py +0 -0
  948. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_installscan.py +0 -0
  949. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_integrity.py +0 -0
  950. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_journal.py +0 -0
  951. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_jsonstate.py +0 -0
  952. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_langchain_packaging.py +0 -0
  953. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_link_ownership.py +0 -0
  954. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_localembed.py +0 -0
  955. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_localembed_e2e.py +0 -0
  956. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_lockfile.py +0 -0
  957. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_logs.py +0 -0
  958. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mcp.py +0 -0
  959. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mcp_install_scan.py +0 -0
  960. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mcp_read.py +0 -0
  961. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mcpdecl.py +0 -0
  962. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mcphost.py +0 -0
  963. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_measure_registry.py +0 -0
  964. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_minisign.py +0 -0
  965. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mutation_shards.py +0 -0
  966. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mutation_subfile_shards.py +0 -0
  967. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_mutmut_source_paths.py +0 -0
  968. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_near_duplicate_collapse.py +0 -0
  969. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_nethttp.py +0 -0
  970. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_normalize_sdist.py +0 -0
  971. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_output.py +0 -0
  972. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_page_budget.py +0 -0
  973. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_paths.py +0 -0
  974. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_perf_gate.py +0 -0
  975. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_pkg_confusions.py +0 -0
  976. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_pkg_injection.py +0 -0
  977. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_pkg_secrets.py +0 -0
  978. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_platform_pins.py +0 -0
  979. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_policy.py +0 -0
  980. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_post_deploy_smoke.py +0 -0
  981. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_project_mcp_sidecar.py +0 -0
  982. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_projectlock.py +0 -0
  983. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_provenance.py +0 -0
  984. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_publish_golden_dataset.py +0 -0
  985. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rag.py +0 -0
  986. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rag_completeness.py +0 -0
  987. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rag_fastpath.py +0 -0
  988. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rag_fusion.py +0 -0
  989. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_registries_fresh.py +0 -0
  990. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_registry.py +0 -0
  991. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_registry_categories.py +0 -0
  992. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_registry_control_chars.py +0 -0
  993. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_registry_parallel.py +0 -0
  994. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_release_guard.py +0 -0
  995. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_release_preflight.py +0 -0
  996. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_report.py +0 -0
  997. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_required_checks.py +0 -0
  998. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rerank_cache.py +0 -0
  999. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_resolve.py +0 -0
  1000. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1001. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_roadmap_fresh.py +0 -0
  1002. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_rules.py +0 -0
  1003. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_scale_corpus.py +0 -0
  1004. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_schedule_plist.py +0 -0
  1005. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_scopes.py +0 -0
  1006. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_secretscan.py +0 -0
  1007. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_selfupdate.py +0 -0
  1008. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_serve.py +0 -0
  1009. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_serve_docs.py +0 -0
  1010. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_shard_plan.py +0 -0
  1011. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_shards.py +0 -0
  1012. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_shards_incremental.py +0 -0
  1013. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_shards_ingest.py +0 -0
  1014. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_shards_matrix.py +0 -0
  1015. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1016. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_spdx_headers.py +0 -0
  1017. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_spin.py +0 -0
  1018. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_stackprobe.py +0 -0
  1019. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_staleness.py +0 -0
  1020. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_store.py +0 -0
  1021. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_store_materialize.py +0 -0
  1022. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_sync_blocked_links.py +0 -0
  1023. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_sync_lost_lock.py +0 -0
  1024. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1025. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_tap_pins.py +0 -0
  1026. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_token_parity.py +0 -0
  1027. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_toolchain_lock.py +0 -0
  1028. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_trustaudit.py +0 -0
  1029. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_typedvalue.py +0 -0
  1030. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_typosquat.py +0 -0
  1031. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_updatediff.py +0 -0
  1032. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_util.py +0 -0
  1033. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_version.py +0 -0
  1034. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_version_tags.py +0 -0
  1035. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_vex.py +0 -0
  1036. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_visual_harness_capture.py +0 -0
  1037. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_visual_harness_flags.py +0 -0
  1038. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_workflow_concurrency.py +0 -0
  1039. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1040. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1041. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_workflow_timeouts.py +0 -0
  1042. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_workflows.py +0 -0
  1043. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1044. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/visual/a11y_check.mjs +0 -0
  1045. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/visual/console_check.mjs +0 -0
  1046. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/visual/package-lock.json +0 -0
  1047. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/tests/visual/package.json +0 -0
  1048. {boost_skill_cli-1.2.127 → boost_skill_cli-1.2.129}/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.127
3
+ Version: 1.2.129
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -453,7 +453,7 @@ the C4 diagrams in [`docs/architecture/`](docs/architecture/README.md).
453
453
  | Registry (Taps) | tap · untap · taps · outdated · catalog |
454
454
  | Intelligence | chat · distill · simulate · infer · absorb · evolve · context · focus · impact |
455
455
  | Quality & Health | doctor · lint · audit · verify · drift · test · fingerprint · quarantine · decay · heal · conflict · changelog · attest · health · trust |
456
- | Configuration | config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
456
+ | Configuration | quickstart · config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
457
457
  | Team & Collaboration | cohort · profile · protocol · pulse · replay · who |
458
458
 
459
459
  The AI-assisted commands (`search --smart`, `explain`, `distill`, `infer`,
@@ -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
 
@@ -411,7 +411,7 @@ the C4 diagrams in [`docs/architecture/`](docs/architecture/README.md).
411
411
  | Registry (Taps) | tap · untap · taps · outdated · catalog |
412
412
  | Intelligence | chat · distill · simulate · infer · absorb · evolve · context · focus · impact |
413
413
  | Quality & Health | doctor · lint · audit · verify · drift · test · fingerprint · quarantine · decay · heal · conflict · changelog · attest · health · trust |
414
- | Configuration | config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
414
+ | Configuration | quickstart · config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
415
415
  | Team & Collaboration | cohort · profile · protocol · pulse · replay · who |
416
416
 
417
417
  The AI-assisted commands (`search --smart`, `explain`, `distill`, `infer`,
@@ -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.127'
22
- __version_tuple__ = version_tuple = (1, 2, 127)
21
+ __version__ = version = '1.2.129'
22
+ __version_tuple__ = version_tuple = (1, 2, 129)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -72,11 +72,23 @@ def use_color(stream=None) -> bool:
72
72
  return hasattr(stream, "isatty") and stream.isatty()
73
73
 
74
74
 
75
+ def _span(code: str, text: str) -> str:
76
+ """``code + text + RESET``, applied to each line on its own.
77
+
78
+ One span across a newline opens the style on line 1 and closes it at the
79
+ end of the last: a reader that stops early (``… 2>&1 | head -2``) is left
80
+ inside an unterminated style, and lines 2+ carry no code of their own. A
81
+ multi-line hint from `err` did exactly that. Every painter below routes
82
+ through here, so no emitter can reintroduce it.
83
+ """
84
+ return "\n".join(code + line + RESET for line in text.split("\n"))
85
+
86
+
75
87
  def c(text: str, *styles: str) -> str:
76
88
  """Wrap text in the given SGR styles + RESET; plain when color is off."""
77
89
  if not styles or not use_color():
78
90
  return text
79
- return "".join(styles) + text + RESET
91
+ return _span("".join(styles), text)
80
92
 
81
93
 
82
94
  # --------------------------------------------------------------------------- #
@@ -139,7 +151,7 @@ def aurora(text: str, name: str, stream=None) -> str:
139
151
  return text
140
152
  triple, fallback = _AURORA[name]
141
153
  code = rgb(*triple) if level == 2 else fallback
142
- return code + text + RESET
154
+ return _span(code, text)
143
155
 
144
156
 
145
157
  # --------------------------------------------------------------------------- #
@@ -171,8 +183,9 @@ def role(text: str, name: str, bold: bool = False, stream=None) -> str:
171
183
  if color_level(stream) == 0:
172
184
  return text
173
185
  kind, value = ROLES[name]
174
- painted = aurora(text, value, stream) if kind == "aurora" else value + text + RESET
175
- return BOLD + painted if bold else painted
186
+ painted = aurora(text, value, stream) if kind == "aurora" else _span(value, text)
187
+ # Per line too: BOLD before line 1 alone would leave lines 2+ regular.
188
+ return "\n".join(BOLD + ln for ln in painted.split("\n")) if bold else painted
176
189
 
177
190
 
178
191
  def _lerp(a, b, t: float):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.127
3
+ Version: 1.2.129
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -453,7 +453,7 @@ the C4 diagrams in [`docs/architecture/`](docs/architecture/README.md).
453
453
  | Registry (Taps) | tap · untap · taps · outdated · catalog |
454
454
  | Intelligence | chat · distill · simulate · infer · absorb · evolve · context · focus · impact |
455
455
  | Quality & Health | doctor · lint · audit · verify · drift · test · fingerprint · quarantine · decay · heal · conflict · changelog · attest · health · trust |
456
- | Configuration | config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
456
+ | Configuration | quickstart · config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
457
457
  | Team & Collaboration | cohort · profile · protocol · pulse · replay · who |
458
458
 
459
459
  The AI-assisted commands (`search --smart`, `explain`, `distill`, `infer`,
@@ -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: err-multiline-hint-colours-across-the-newline
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: err() joins a multi-line hint's lines and then wraps the whole joined string in one c…
11
11
  order: 207
12
- owner:
13
- pr:
12
+ owner: loop/err-hint-per-line
13
+ pr: 877
14
14
  title: <code>out.err</code>'s multi-line hint is coloured as one span, so line 1 ends with no RESET and lines 2+ carry no start code
15
15
  ---
16
16
  <b>Measured.</b> With colour forced, a three-line hint from <code>err()</code> emits an opening <code>ESC[2m</code> on hint line 1 that is never terminated, two bare continuation lines carrying no SGR at all, and one closing <code>ESC[0m</code> at visible column 98 of the last line — so <code>boost index 2&gt;&amp;1 | head -2</code> under <code>CLICOLOR_FORCE</code> hands the consumer a stream ending inside an unterminated dim span; output.py:252 wraps the newline-joined body in a single <code>c(..., DIM)</code>, colouring first and splitting after.
@@ -2,15 +2,15 @@
2
2
  id: readme-81-command-table-lists-80-omits-quickstart
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:389 heads a table "## 81 commands, organized into 8 groups", but the eight …
11
11
  order: 224
12
- owner:
13
- pr:
12
+ owner: loop/readme-command-table
13
+ pr: 876
14
14
  title: README's "81 commands" table enumerates only 80 — the missing one is <code>quickstart</code>, the README's own first command
15
15
  ---
16
16
  <b>Measured.</b> Commit dd2fba07 (PR #594, "publish prebuilt vectors where a new user can reach them") added <code>("quickstart", "cfg", ...)</code> to cli.py's COMMANDS and changed README.md:389 from "## 80 commands" to "## 81 commands" — and left README.md:404's Configuration row at its 13 names, so the README has advertised 81 commands while listing 80 ever since, with the whole test suite green, because <code>test_marketing_counts.py</code> asserts the integer and <code>test_docsite_chrome.py:63-71</code> pins the enumeration only for <code>docs/index.html</code>.
@@ -41,7 +41,6 @@ The defect itself reproduces exactly as stated — README.md:389 heads "81 comma
41
41
 
42
42
  2. SOFT — "the one <code>docs/semantic-search.md</code> points at three times". Three is only right if you count fenced-code invocations (lines 30, 63, 64). The string <code>boost quickstart</code> appears 4 times (30, 33, 63, 64) and <code>quickstart</code> appears on 7 lines (+1, 83, 89). Say "four <code>boost quickstart</code> references across seven mentions" or drop the number.
43
43
 
44
- 3.
45
44
 
46
45
  <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
47
46
 
@@ -51,6 +50,6 @@ WHY Low, not Med. The finder's Med overstates it. <code>quickstart</code> is nam
51
50
 
52
51
  WHY IT IS STILL WORTH A CARD. The value is structural, not the symptom: of the three enumerations of the command surface, <code>docs/index.html</code> is pinned name-by-name against COMMANDS (test_docsite_chrome.py:63-71), <code>docs/commands.html</code> is generated from COMMANDS and gated by <code>build_command_reference.py --check</code>, and README's table is hand-maintained with only its integer asserted. PR #594 is the proof that the gap is live rather than theoretical.
53
52
 
54
- <b>Why it is worth doing.</b> The README table is the only place a reader browses the command surface without running the CLI, and the one command it drops is the one the same file's hero block makes step 2 of onboarding. A user who reads the table sees no quickstart, and a user who reads the hero sees a command the table says does not exist. The count and the list also contradict each other in the same heading, which is exactly the class of drift test_marketing_counts.py was written for — it just guards the integer and not the enumeration.
53
+ <b>Why it is worth doing.</b> The README table is the command surface a reader browses in-file, and the one enumeration of the three that nothing pinned; the one command it dropped is the one the same file's hero block makes step 2 of onboarding. A user who reads the table sees no quickstart, and a user who reads the hero sees a command the table says does not exist. The count and the list also contradict each other in the same heading, which is exactly the class of drift test_marketing_counts.py was written for — it just guards the integer and not the enumeration.
55
54
 
56
55
  <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>
@@ -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.
@@ -1294,42 +1294,9 @@ PRIOR DISCLOSURE (the finder declared it, and I confirmed it): docs/roadmap/item
1294
1294
  </article>
1295
1295
 
1296
1296
  <article class="cap rcard" id="err-multiline-hint-colours-across-the-newline">
1297
- <div class="head"><span class="pill planned">Planned</span><span class="cat">UX · Bug</span></div>
1297
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">UX · Bug</span></div>
1298
1298
  <h3><code>out.err</code>'s multi-line hint is coloured as one span, so line 1 ends with no RESET and lines 2+ carry no start code</h3>
1299
- <p><b>Measured.</b> With colour forced, a three-line hint from <code>err()</code> emits an opening <code>ESC[2m</code> on hint line 1 that is never terminated, two bare continuation lines carrying no SGR at all, and one closing <code>ESC[0m</code> at visible column 98 of the last line — so <code>boost index 2&gt;&amp;1 | head -2</code> under <code>CLICOLOR_FORCE</code> hands the consumer a stream ending inside an unterminated dim span; output.py:252 wraps the newline-joined body in a single <code>c(..., DIM)</code>, colouring first and splitting after.
1300
-
1301
- <b>Reproduce it.</b>
1302
-
1303
- <code>cd &lt;repo&gt;</code><br>
1304
- <code>BOOST_COLOR=always .venv/bin/python -c "</code><br>
1305
- <code>from boost_cli.core import output as out</code><br>
1306
- <code>out.err('gh api failed', 'HTTP 401: Bad credentials\nTry authenticating with: gh auth login\ngh: To use GitHub CLI in a GitHub Actions workflow, set the GH_TOKEN environment variable.')</code><br>
1307
- <code>" 2&gt;&amp;1 | /bin/cat -v</code><br>
1308
- <code># and the live call path (single-line tail in this sandbox, but proves err() is reached):</code><br>
1309
- <code>export HOME=$TMPDIR/audit-output-formatting; export BOOST_HOME=$HOME/.boost; mkdir -p "$HOME"</code><br>
1310
- <code>GH_TOKEN=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef BOOST_COLOR=always ./boost index 2&gt;&amp;1 | head -3 | /bin/cat -v</code>
1311
-
1312
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
1313
-
1314
- The core defect and its byte shape reproduce exactly. Five stated details are wrong:
1315
-
1316
- 1. "<code>empty_state._block</code> (output.py:559-561)" — WRONG LINES. 559-561 is docstring prose. <code>_block</code> is defined at output.py:569 and its per-line colouring is at 571-572.
1317
-
1318
- 2. "the lone <code>^[[0m</code> is 90 columns into line 4" — WRONG. It sits at visible column 98. 90 is the length of the message text alone; the line also carries the 8-column <code> hint: </code> alignment indent.
1319
-
1320
- 3. "<code>err</code> is the one emitter that does not [colour per line]" — REFUTED. Handed a string containing a literal newline with <code>wrap</code> off, <code>dim()</code>, <code>warn()</code> and <code>empty_state()</code> all emit the identical straddling span (measured above). <code>empty_state._block</code> only colours per line of its *wrap* output; with <code>wrap=False</code> <code>body = [text]</code>, so the newline sits inside one <code>c(..., DIM)</code>. What is actually unique about <code>err</code> is that it is the only emitter whose docstring documents accepting embedded newlines and the only one with a live multi-line caller (<code>gh_failure_hint</code>); I grepped every <code>out.warn(</code> / <code>out.dim(</code> / <code>out.empty_state(</code> call site and none passes a <code>\n</code>-bearing string (all joins use ", " or "; ").
1321
-
1322
- 4. "<code>boost index 2&gt;&amp;1 | head -2</code> hands the shell an opening SGR with no close" — WRONG without a stated precondition.
1323
-
1324
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
1325
-
1326
- Not carded — I re-checked independently. Grepped all <code>^title:</code> lines for colour/ANSI/reset/escape/SGR/dim/hint terms and read the four plausible cards in full: <code>long-hints-overflow-narrow-panes.md</code> (line width, not escape spans), <code>BOOST-D04.md</code> (semantic colour roles), <code>BOOST-D18.md</code> (empty-state/hint styling consistency), <code>BOOST-D27.md</code> (its three named remaining wrap-law gaps are <code>dim()</code>'s embedded indent, <code>empty_state()</code> adoption, and <code>truncate()</code>/<code>search_layout()</code> wide-char width — <code>err()</code> is not among them). <code>grep -ril 'unterminated|RESET|SGR|escape code' docs/roadmap/items/</code> returned 11 files, none about <code>err()</code>.
1327
-
1328
- Scope of my repro, and what a card must not overclaim: - No corpus was needed; this is a pure library-call repro plus one live CLI path. The 20-tap eval corpus at $TMPDIR/eval-home is irrelevant here and I did not touch it. The <code>./boost index</code> run used its own disposable HOME. - I could not produce the 3-line <code>gh</code> tail live either: the sandbox proxy's TLS failure is a single line, so the live run only proves <code>err()</code> is reached with a <code>gh</code>-sourced hint, not that a 3-line tail occurred. The multi-line shape is proven by the direct call, which is what the finder also did. - A card must state the forced-colour precondition. In an ordinary interactive run the bytes ARE emitted (stdout is a TTY), but every terminal I know carries DIM across a newline, so it renders correctly — the finding concedes this. The only consumer that sees breakage is a line-oriented reader under <code>BOOST_COLOR=always</code> / <code>CLICOLOR_FORCE</code> (CI).
1329
-
1330
- <b>Why it is worth doing.</b> Most terminals carry DIM across a newline, so it usually *looks* right — the harm is to anything reading a line at a time. <code>boost index 2&gt;&amp;1 | head -2</code> hands the shell an opening SGR with no close, dimming everything printed afterwards; and because the hint goes to stderr, any stdout written between hint lines lands inside the unterminated dim run. The module already knows the correct shape and uses it twice — <code>empty_state._block</code> (output.py:559-561) and <code>table</code>'s header cells (output.py:906-908, with the comment "a whole-line wrap would be cancelled at the first separator's RESET") both colour per line. <code>err</code> is the one emitter that does not.
1331
-
1332
- <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>
1299
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md">Write-up &middot; err-multiline-hint-colours-across-the-newline.md</a></p>
1333
1300
  <div class="meta">
1334
1301
  <span class="m">Complexity <b>S</b></span>
1335
1302
  <span class="m">Impact <b>Low</b></span>
@@ -2083,49 +2050,9 @@ FIX SCOPE IS WIDER THAN THE FINDING SAYS: because <code>pkg.py:941</code> (<code
2083
2050
  </article>
2084
2051
 
2085
2052
  <article class="cap rcard" id="readme-81-command-table-lists-80-omits-quickstart">
2086
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
2053
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
2087
2054
  <h3>README's "81 commands" table enumerates only 80 — the missing one is <code>quickstart</code>, the README's own first command</h3>
2088
- <p><b>Measured.</b> Commit dd2fba07 (PR #594, "publish prebuilt vectors where a new user can reach them") added <code>("quickstart", "cfg", ...)</code> to cli.py's COMMANDS and changed README.md:389 from "## 80 commands" to "## 81 commands" — and left README.md:404's Configuration row at its 13 names, so the README has advertised 81 commands while listing 80 ever since, with the whole test suite green, because <code>test_marketing_counts.py</code> asserts the integer and <code>test_docsite_chrome.py:63-71</code> pins the enumeration only for <code>docs/index.html</code>.
2089
-
2090
- <b>Reproduce it.</b>
2091
-
2092
- <code>cd &lt;repo&gt;</code><br>
2093
- <code>.venv/bin/python - &lt;&lt;'PY'</code><br>
2094
- <code>import re, sys</code><br>
2095
- <code>sys.path.insert(0,'.')</code><br>
2096
- <code>from boost_cli.cli import COMMANDS</code><br>
2097
- <code>names = {n for n,_,_,_ in COMMANDS}</code><br>
2098
- <code>readme = open('README.md').read()</code><br>
2099
- <code>rows = re.findall(r'^\| ([A-Z][^|]*?) \| (.+?) \|$', readme, re.M)</code><br>
2100
- <code>tbl = {g.strip(): [c.strip() for c in cmds.split('·')] for g, cmds in rows if '·' in cmds}</code><br>
2101
- <code>listed = {c for v in tbl.values() for c in v}</code><br>
2102
- <code>print("README table total:", sum(len(v) for v in tbl.values()), "COMMANDS:", len(names))</code><br>
2103
- <code>print("missing from README table:", sorted(names - listed))</code><br>
2104
- <code>PY</code><br>
2105
- <code>grep -n '81 commands' README.md</code><br>
2106
- <code>./boost --help | grep -n 'quickstart'</code>
2107
-
2108
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
2109
-
2110
- The defect itself reproduces exactly as stated — README.md:389 heads "81 commands", the eight rows at README.md:398-405 enumerate 80, and the set difference against <code>cli.py</code>'s COMMANDS is exactly <code>{'quickstart'}</code>. Two stated facts are wrong:
2111
-
2112
- 1. LOAD-BEARING — <code>why_it_matters</code> says "The README table is the only place a reader browses the command surface without running the CLI." False. <code>docs/commands.html</code> (4 quickstart hits) and <code>docs/index.html</code> (3 hits, including the pinned <code>["quickstart","cfg",...]</code> row) both enumerate the full surface, and README.md:391-393 links both of them two lines ABOVE the table. A card must not ship that sentence. The honest framing: the README table is the surface a reader browses in-file, and the one enumeration of the three that nothing pins.
2113
-
2114
- 2. SOFT — "the one <code>docs/semantic-search.md</code> points at three times". Three is only right if you count fenced-code invocations (lines 30, 63, 64). The string <code>boost quickstart</code> appears 4 times (30, 33, 63, 64) and <code>quickstart</code> appears on 7 lines (+1, 83, 89). Say "four <code>boost quickstart</code> references across seven mentions" or drop the number.
2115
-
2116
- 3.
2117
-
2118
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2119
-
2120
- SCOPE OF MY REPRO: entirely static — README.md, boost_cli/cli.py, docs/*.html, the two test files, and <code>./boost --help</code> from the repo checkout. No corpus, tap set or network was needed, so nothing here is contingent on the 20-tap eval corpus or on which registries ship by default. Fully settled.
2121
-
2122
- WHY Low, not Med. The finder's Med overstates it. <code>quickstart</code> is named in README.md five other times (line 23 hero, 142, 145, 151, 176), in <code>./boost --help</code>, and in both generated doc pages that the README links immediately above the table. The user-visible cost is one missing name out of 81 in one browsable list; nothing breaks and no one is misinformed about whether the command exists. The finder's line "a user who reads the hero sees a command the table says does not exist" is rhetorical — the table omits, it does not deny.
2123
-
2124
- WHY IT IS STILL WORTH A CARD. The value is structural, not the symptom: of the three enumerations of the command surface, <code>docs/index.html</code> is pinned name-by-name against COMMANDS (test_docsite_chrome.py:63-71), <code>docs/commands.html</code> is generated from COMMANDS and gated by <code>build_command_reference.py --check</code>, and README's table is hand-maintained with only its integer asserted. PR #594 is the proof that the gap is live rather than theoretical.
2125
-
2126
- <b>Why it is worth doing.</b> The README table is the only place a reader browses the command surface without running the CLI, and the one command it drops is the one the same file's hero block makes step 2 of onboarding. A user who reads the table sees no quickstart, and a user who reads the hero sees a command the table says does not exist. The count and the list also contradict each other in the same heading, which is exactly the class of drift test_marketing_counts.py was written for — it just guards the integer and not the enumeration.
2127
-
2128
- <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>
2055
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md">Write-up &middot; readme-81-command-table-lists-80-omits-quickstart.md</a></p>
2129
2056
  <div class="meta">
2130
2057
  <span class="m">Complexity <b>S</b></span>
2131
2058
  <span class="m">Impact <b>Low</b></span>
@@ -2270,40 +2197,9 @@ BLAST RADIUS — do not overstate it in the card. The natural set is NOT wired i
2270
2197
  </article>
2271
2198
 
2272
2199
  <article class="cap rcard" id="roadmap-boards-advertise-python-39">
2273
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
2200
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
2274
2201
  <h3>The two roadmap boards' install footers still advertise Python 3.9+, four minor versions under the real floor</h3>
2275
- <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.
2276
-
2277
- <b>Reproduce it.</b>
2278
-
2279
- <code>cd &lt;repo&gt;</code><br>
2280
- <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>
2281
- <code>grep -n 'requires Python 3.9' docs/roadmap.html docs/design-roadmap.html</code><br>
2282
- <code>sed -n '206p' docs/design-roadmap.html</code><br>
2283
- <code>grep -n 'requires-python' pyproject.toml</code><br>
2284
- <code>.venv/bin/python scripts/build_roadmap.py --check ; echo "EXIT=$?" # green despite the drift</code>
2285
-
2286
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
2287
-
2288
- 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:
2289
-
2290
- 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.
2291
-
2292
- 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.
2293
-
2294
- 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.
2295
-
2296
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2297
-
2298
- 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).
2299
-
2300
- 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.
2301
-
2302
- 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.
2303
-
2304
- <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.
2305
-
2306
- <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>
2202
+ <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>
2307
2203
  <div class="meta">
2308
2204
  <span class="m">Complexity <b>S</b></span>
2309
2205
  <span class="m">Impact <b>Low</b></span>
@@ -2555,32 +2451,9 @@ NOT ALREADY CARDED — I re-checked independently. The PR 739 card (<code>audit-
2555
2451
  </article>
2556
2452
 
2557
2453
  <article class="cap rcard" id="stale-gate-sizes-in-readme-and-contributing">
2558
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
2454
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
2559
2455
  <h3>The contributor-onboarding gate tables state three wrong suite sizes, and README and CONTRIBUTING disagree with each other</h3>
2560
- <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.
2561
-
2562
- <b>Reproduce it.</b>
2563
-
2564
- <code>cd &lt;repo&gt;</code><br>
2565
- <code>sed -n '48,49p' Makefile # make smoke == bash tests/smoke.sh</code><br>
2566
- <code>bash tests/smoke.sh 2&gt;&amp;1 | tail -1 # == results: 183 passed, 0 failed</code><br>
2567
- <code>sed -n '515p' README.md # "176 checks"</code><br>
2568
- <code>sed -n '123,124p' CONTRIBUTING.md # "170 end-to-end checks" ; "11 features, 47 scenarios"</code><br>
2569
- <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>
2570
-
2571
- <b>Verification found nothing to correct.</b> Every number, <code>file:line</code> and command output above was independently re-derived and matched exactly.
2572
-
2573
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
2574
-
2575
- 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.
2576
-
2577
- 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.
2578
-
2579
- 3. 183 IS DETERMINISTIC — a card author must not "correct" it.
2580
-
2581
- <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.
2582
-
2583
- <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>
2456
+ <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>
2584
2457
  <div class="meta">
2585
2458
  <span class="m">Complexity <b>S</b></span>
2586
2459
  <span class="m">Impact <b>Low</b></span>
@@ -8477,7 +8350,7 @@ regressed. Lowering the floor alone just relocates the coin flip.</p>
8477
8350
  <footer>
8478
8351
  <div class="wrap">
8479
8352
  <p class="foot-brand"><b>boost</b> — a package manager for AI skills</p>
8480
- <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.9+ and <code>git</code></p>
8353
+ <p class="foot-note">Install with <code>pip install boost-skill-cli</code> · requires Python 3.12+ and <code>git</code></p>
8481
8354
  <nav class="foot-links" aria-label="Documentation">
8482
8355
  <a href="index.html">Guide</a>
8483
8356
  <a href="commands.html">Commands</a>
@@ -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)]
@@ -59,6 +59,22 @@ class TestCommandCount:
59
59
  assert counts == {_command_count()}, \
60
60
  "README states conflicting command counts: %s" % sorted(counts)
61
61
 
62
+ def test_readme_table_lists_exactly_the_registry(self):
63
+ # The integer above was guarded; the enumeration under it was not, so
64
+ # #594 moved the heading to 81 and the table stayed at 80 (quickstart,
65
+ # the README's own onboarding step, was the one missing). Pin the rows
66
+ # by group title and order, the way docs/index.html's list is pinned.
67
+ from boost_cli.cli import GROUPS
68
+ rows = {group: [c.strip() for c in cmds.split("·")]
69
+ for group, cmds in re.findall(
70
+ r"^\| ([A-Z][^|]*?) \| (.+?) \|$", README, re.M)
71
+ if "·" in cmds}
72
+ want: dict[str, list[str]] = {}
73
+ for name, group, _module, _summary in COMMANDS:
74
+ want.setdefault(GROUPS[group][1], []).append(name)
75
+ assert rows == want
76
+ assert list(rows) == list(want) # the groups' order too
77
+
62
78
  def test_landing_page_counts_agree(self):
63
79
  counts = {int(n) for n in re.findall(r"(\d+)\s+commands", INDEX)}
64
80
  assert counts == {_command_count()}, \
@@ -84,6 +100,49 @@ class TestCommandCount:
84
100
  # test whose formula is a guess is worse than no test.
85
101
 
86
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
+
87
146
  class TestNoStaleCountsElsewhere:
88
147
  @pytest.mark.parametrize("doc", ["README.md", "docs/index.html"])
89
148
  def test_no_command_count_is_a_stale_literal(self, doc):