boost-skill-cli 1.2.172__tar.gz → 1.2.173__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 (1134) hide show
  1. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  4. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
  5. boost_skill_cli-1.2.173/docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md +56 -0
  6. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md +40 -3
  7. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap.html +91 -3
  8. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/mutation_shards.py +218 -11
  9. boost_skill_cli-1.2.173/tests/unit/test_mutation_shard_count.py +336 -0
  10. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mutation_subfile_shards.py +3 -2
  11. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.gitattributes +0 -0
  12. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.gitignore +0 -0
  13. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.gitleaks.toml +0 -0
  14. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.htmlvalidate.json +0 -0
  15. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.lighthouserc.json +0 -0
  16. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.lycheeignore +0 -0
  17. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.markdownlint-cli2.jsonc +0 -0
  18. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.pre-commit-config.yaml +0 -0
  19. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.stylelintrc.json +0 -0
  20. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.vale/styles/boost/AIWriting.yml +0 -0
  21. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.vale/styles/boost/Terminology.yml +0 -0
  22. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  23. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/.vale.ini +0 -0
  24. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/CLAUDE.md +0 -0
  25. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/CODE_OF_CONDUCT.md +0 -0
  26. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/CONTRIBUTING.md +0 -0
  27. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/DCO +0 -0
  28. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/GOVERNANCE.md +0 -0
  29. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/LICENSE +0 -0
  30. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/MAINTAINERS.md +0 -0
  31. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/MANIFEST.in +0 -0
  32. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/Makefile +0 -0
  33. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/README.md +0 -0
  34. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/SECURITY.md +0 -0
  35. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/SUPPORT.md +0 -0
  36. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost +0 -0
  37. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/__init__.py +0 -0
  38. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/__main__.py +0 -0
  39. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/cli.py +0 -0
  40. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/cliparse.py +0 -0
  41. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/__init__.py +0 -0
  42. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/_common.py +0 -0
  43. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/bmad.py +0 -0
  44. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/configuration.py +0 -0
  45. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/discovery.py +0 -0
  46. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/hooks.py +0 -0
  47. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/info.py +0 -0
  48. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/intelligence.py +0 -0
  49. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/pkg.py +0 -0
  50. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/quality.py +0 -0
  51. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/quickstart.py +0 -0
  52. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/run.py +0 -0
  53. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/safety.py +0 -0
  54. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/taps.py +0 -0
  55. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/commands/team.py +0 -0
  56. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/__init__.py +0 -0
  57. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/adapters.py +0 -0
  58. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/agents.py +0 -0
  59. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/ai.py +0 -0
  60. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/aihost.py +0 -0
  61. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/archive.py +0 -0
  62. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/bmad.py +0 -0
  63. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/bootstrap.py +0 -0
  64. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/browse.py +0 -0
  65. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/builtin.py +0 -0
  66. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/capabilities.py +0 -0
  67. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/catalog.py +0 -0
  68. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/catalogbundle.py +0 -0
  69. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/chat.py +0 -0
  70. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/claude_settings.py +0 -0
  71. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/cohort.py +0 -0
  72. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/compact.py +0 -0
  73. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/complete.py +0 -0
  74. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/config.py +0 -0
  75. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/dense.py +0 -0
  76. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/deps.py +0 -0
  77. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/discovery.py +0 -0
  78. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/ed25519.py +0 -0
  79. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/embed.py +0 -0
  80. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/faithfulness.py +0 -0
  81. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/frontmatter.py +0 -0
  82. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/gitutil.py +0 -0
  83. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/hookhost.py +0 -0
  84. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/imperative.py +0 -0
  85. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/injectscan.py +0 -0
  86. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/installscan.py +0 -0
  87. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/integrity.py +0 -0
  88. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/journal.py +0 -0
  89. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/jsonstate.py +0 -0
  90. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/localembed.py +0 -0
  91. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/lockfile.py +0 -0
  92. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/logs.py +0 -0
  93. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/mcp.py +0 -0
  94. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/mcpdecl.py +0 -0
  95. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/mcphost.py +0 -0
  96. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/minisign.py +0 -0
  97. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/nethttp.py +0 -0
  98. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/output.py +0 -0
  99. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/paths.py +0 -0
  100. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/policy.py +0 -0
  101. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/prereq.py +0 -0
  102. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/projectlock.py +0 -0
  103. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/provenance.py +0 -0
  104. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/rag.py +0 -0
  105. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/registry.py +0 -0
  106. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/report.py +0 -0
  107. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/resolve.py +0 -0
  108. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/rules.py +0 -0
  109. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/scopes.py +0 -0
  110. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/secretscan.py +0 -0
  111. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/selfupdate.py +0 -0
  112. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/serve.py +0 -0
  113. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/shards.py +0 -0
  114. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/stackprobe.py +0 -0
  115. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/staleness.py +0 -0
  116. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/store.py +0 -0
  117. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/trustaudit.py +0 -0
  118. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/typedvalue.py +0 -0
  119. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/typosquat.py +0 -0
  120. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/updatediff.py +0 -0
  121. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/util.py +0 -0
  122. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/core/workflows.py +0 -0
  123. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/data/registries.json +0 -0
  124. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/data/rules/boost-first.mdc +0 -0
  125. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/errors.py +0 -0
  126. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_cli/spin.py +0 -0
  127. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/__init__.py +0 -0
  128. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/_compat.py +0 -0
  129. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/graph.py +0 -0
  130. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/loader.py +0 -0
  131. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/py.typed +0 -0
  132. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_langchain/retriever.py +0 -0
  133. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  134. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  135. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/requires.txt +0 -0
  136. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/boost_skill_cli.egg-info/top_level.txt +0 -0
  137. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/codecov.yml +0 -0
  138. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/DEBUGGING.md +0 -0
  139. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/adapters.html +0 -0
  140. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/architecture/README.md +0 -0
  141. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/architecture/c4-components-core.md +0 -0
  142. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/architecture/c4-containers.md +0 -0
  143. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/architecture/c4-context.md +0 -0
  144. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/architecture/c4-dynamic-install.md +0 -0
  145. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/bmad.md +0 -0
  146. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/distill.gif +0 -0
  147. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/doctor.gif +0 -0
  148. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/explain.gif +0 -0
  149. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/hooks.gif +0 -0
  150. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/install.gif +0 -0
  151. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/pulse.gif +0 -0
  152. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/search.gif +0 -0
  153. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/gifs/tap.gif +0 -0
  154. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/distill.tape +0 -0
  155. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/doctor.tape +0 -0
  156. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/explain.tape +0 -0
  157. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/hooks.tape +0 -0
  158. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/install.tape +0 -0
  159. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/pulse.tape +0 -0
  160. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/search.tape +0 -0
  161. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel/tapes/tap.tape +0 -0
  162. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/carousel.html +0 -0
  163. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/chat.html +0 -0
  164. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/code-review.md +0 -0
  165. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/commands.html +0 -0
  166. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/commit-audit.md +0 -0
  167. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/demo-index.json +0 -0
  168. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/demo.gif +0 -0
  169. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/demo.html +0 -0
  170. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/demo.tape +0 -0
  171. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/dependencies.md +0 -0
  172. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/design-roadmap.html +0 -0
  173. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/eval-latest.json +0 -0
  174. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/eval.html +0 -0
  175. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/index.html +0 -0
  176. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/langchain.html +0 -0
  177. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/mcp-hub.html +0 -0
  178. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/openssf-badge.md +0 -0
  179. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/openssf-playbook.md +0 -0
  180. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/rag-architecture.md +0 -0
  181. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D01.md +0 -0
  182. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D02.md +0 -0
  183. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D03.md +0 -0
  184. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D04.md +0 -0
  185. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D05.md +0 -0
  186. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D06.md +0 -0
  187. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D07.md +0 -0
  188. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D08.md +0 -0
  189. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D09.md +0 -0
  190. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D10.md +0 -0
  191. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D11.md +0 -0
  192. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D12.md +0 -0
  193. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D13.md +0 -0
  194. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D14.md +0 -0
  195. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D15.md +0 -0
  196. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D16.md +0 -0
  197. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D17.md +0 -0
  198. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D18.md +0 -0
  199. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D19.md +0 -0
  200. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D20.md +0 -0
  201. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D21.md +0 -0
  202. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D22.md +0 -0
  203. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D23.md +0 -0
  204. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D24.md +0 -0
  205. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D25.md +0 -0
  206. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D26.md +0 -0
  207. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/BOOST-D27.md +0 -0
  208. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  209. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  210. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  211. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  212. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  213. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  214. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  215. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  216. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  217. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  218. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  219. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  220. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/an-item-materialized-nowhere-reads-ok-in-verify-health-drift.md +0 -0
  221. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  222. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  223. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  224. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  225. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  226. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  227. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  228. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-attest-findings.md +0 -0
  229. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-audit-findings.md +0 -0
  230. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  231. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-browse-findings.md +0 -0
  232. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  233. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  234. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  235. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  236. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-chat-findings.md +0 -0
  237. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  238. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  239. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  240. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-completions-findings.md +0 -0
  241. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-config-findings.md +0 -0
  242. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  243. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-context-findings.md +0 -0
  244. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  245. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  246. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-create-findings.md +0 -0
  247. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  248. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-deps-findings.md +0 -0
  249. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-discover-findings.md +0 -0
  250. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  251. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  252. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-drift-findings.md +0 -0
  253. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  254. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-edit-findings.md +0 -0
  255. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  256. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-explain-findings.md +0 -0
  257. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-export-findings.md +0 -0
  258. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  259. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  260. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  261. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  262. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  263. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-health-findings.md +0 -0
  264. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  265. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  266. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-import-findings.md +0 -0
  267. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-index-findings.md +0 -0
  268. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  269. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  270. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-install-findings.md +0 -0
  271. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  272. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  273. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-lint-findings.md +0 -0
  274. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-log-findings.md +0 -0
  275. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  276. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  277. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  278. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  279. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  280. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  281. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  282. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  283. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  284. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  285. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  286. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-policy-findings.md +0 -0
  287. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-preview-findings.md +0 -0
  288. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-profile-findings.md +0 -0
  289. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  290. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  291. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  292. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  293. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  294. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  295. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  296. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  297. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  298. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-replay-findings.md +0 -0
  299. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-root-findings.md +0 -0
  300. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  301. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-run-findings.md +0 -0
  302. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  303. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-search-findings.md +0 -0
  304. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  305. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  306. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  307. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  308. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  309. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  310. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  311. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  312. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-sync-findings.md +0 -0
  313. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-tag-findings.md +0 -0
  314. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  315. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-tap-findings.md +0 -0
  316. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-taps-findings.md +0 -0
  317. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  318. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-test-findings.md +0 -0
  319. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-trust-findings.md +0 -0
  320. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  321. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  322. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-untap-findings.md +0 -0
  323. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-update-findings.md +0 -0
  324. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  325. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-verify-findings.md +0 -0
  326. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/audit-who-findings.md +0 -0
  327. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  328. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  329. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  330. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  331. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  332. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  333. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  334. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  335. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  336. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  337. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  338. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  339. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  340. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  341. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  342. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  343. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/boost-first-rule.md +0 -0
  344. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  345. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  346. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/branch-current-gate.md +0 -0
  347. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  348. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  349. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  350. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  351. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  352. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  353. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  354. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md +0 -0
  355. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  356. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  357. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  358. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  359. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  360. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  361. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  362. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  363. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  364. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  365. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  366. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  367. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  368. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cli-command-audit.md +0 -0
  369. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  370. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  371. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  372. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  373. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  374. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  375. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/command-carousel-page.md +0 -0
  376. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  377. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  378. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  379. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  380. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  381. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/concurrency-probe-measured-a-race-not-the-pool.md +0 -0
  382. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  383. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  384. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  385. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  386. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  387. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  388. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  389. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  390. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  391. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  392. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  393. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  394. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  395. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  396. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  397. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  398. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
  399. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  400. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  401. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  402. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  403. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  404. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  405. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  406. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  407. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  408. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  409. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  410. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  411. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  412. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  413. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  414. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  415. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  416. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  417. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  418. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  419. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  420. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  421. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  422. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  423. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  424. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  425. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  426. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  427. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  428. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  429. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  430. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  431. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  432. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  433. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  434. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  435. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  436. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  437. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  438. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  439. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  440. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/floors-job-never-installed-setuptools.md +0 -0
  441. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  442. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  443. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  444. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  445. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  446. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  447. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  448. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  449. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  450. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  451. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  452. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  453. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  454. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/github-community-health-files.md +0 -0
  455. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  456. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  457. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  458. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  459. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  460. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  461. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  462. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  463. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  464. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  465. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  466. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  467. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  468. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  469. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  470. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  471. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  472. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  473. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  474. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/install-writes-through-a-redirected-dotdir-uninstall-will-not.md +0 -0
  475. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  476. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  477. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  478. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  479. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/is-dir-follows-a-symlink-at-eleven-rmtree-call-sites.md +0 -0
  480. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  481. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  482. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  483. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  484. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  485. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  486. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  487. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  488. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  489. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  490. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  491. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  492. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  493. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  494. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  495. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  496. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  497. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  498. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  499. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  500. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  501. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  502. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  503. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  504. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  505. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  506. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  507. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  508. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  509. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  510. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  511. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  512. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  513. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  514. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  515. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  516. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  517. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  518. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  519. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  520. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  521. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  522. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  523. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  524. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  525. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  526. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  527. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  528. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  529. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  530. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  531. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  532. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  533. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  534. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  535. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  536. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  537. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  538. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  539. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  540. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  541. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  542. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-shard-balance-hints-are-a-release-behind.md +0 -0
  543. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  544. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  545. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  546. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  547. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  548. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  549. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  550. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  551. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  552. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  553. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  554. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  555. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  556. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  557. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  558. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/openssf-playbook.md +0 -0
  559. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/openssf-silver.md +0 -0
  560. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  561. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  562. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  563. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  564. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  565. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  566. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  567. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  568. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  569. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  570. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  571. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  572. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  573. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  574. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/project-scope-in-an-unmarked-tree-does-not-walk-up.md +0 -0
  575. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  576. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/project-uninstall-deletes-any-in-repo-directory-the-lock-names.md +0 -0
  577. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  578. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  579. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  580. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  581. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  582. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  583. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  584. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  585. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  586. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  587. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  588. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  589. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  590. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  591. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  592. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  593. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  594. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  595. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  596. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  597. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  598. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  599. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  600. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  601. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  602. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  603. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  604. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  605. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  606. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  607. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  608. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  609. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/relicence-apache-2.md +0 -0
  610. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  611. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  612. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  613. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  614. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  615. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  616. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  617. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  618. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  619. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  620. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  621. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  622. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  623. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/rule-and-workflow-rows-carry-a-scope-nothing-but-list-local-reads.md +0 -0
  624. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  625. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  626. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  627. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  628. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  629. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  630. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  631. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  632. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  633. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  634. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  635. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  636. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  637. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  638. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  639. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  640. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  641. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  642. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  643. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  644. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  645. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  646. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  647. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  648. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  649. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  650. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  651. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  652. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  653. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  654. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  655. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  656. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  657. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  658. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  659. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  660. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  661. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  662. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  663. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  664. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  665. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  666. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  667. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  668. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  669. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  670. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  671. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  672. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  673. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  674. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  675. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  676. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  677. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  678. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  679. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  680. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  681. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  682. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  683. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md +0 -0
  684. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  685. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  686. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  687. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  688. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  689. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  690. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  691. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  692. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  693. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  694. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  695. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  696. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  697. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  698. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  699. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  700. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  701. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/uninstall-local-cannot-remove-a-rule-or-workflow-list-local-shows.md +0 -0
  702. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  703. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  704. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  705. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  706. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  707. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  708. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  709. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  710. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  711. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  712. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/util-rmtree-chmods-a-symlink-target-outside-the-tree.md +0 -0
  713. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  714. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  715. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  716. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  717. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  718. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  719. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  720. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  721. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  722. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/workspace-scope-install.md +0 -0
  723. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/wrap-width-judged-by-stdout.md +0 -0
  724. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +0 -0
  725. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/zip-strict-audit.md +0 -0
  726. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  727. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  728. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/security-design.md +0 -0
  729. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/semantic-search.md +0 -0
  730. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  731. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/verifying-releases.md +0 -0
  732. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/meta.md +0 -0
  733. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/openvex.json +0 -0
  734. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  735. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  736. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  737. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  738. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/eslint.config.mjs +0 -0
  739. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/README.md +0 -0
  740. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/__init__.py +0 -0
  741. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/baseline.json +0 -0
  742. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/faithfulness.py +0 -0
  743. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/golden_set.json +0 -0
  744. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/make_corpus.py +0 -0
  745. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/make_golden.py +0 -0
  746. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/metrics.py +0 -0
  747. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/publish_golden_dataset.py +0 -0
  748. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/evals/run_evals.py +0 -0
  749. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/examples/README.md +0 -0
  750. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/examples/adapt-demo.sh +0 -0
  751. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/examples/boost-run-prototype.sh +0 -0
  752. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/index.html +0 -0
  753. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/noxfile.py +0 -0
  754. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/pyproject.toml +0 -0
  755. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/coverage-tools.in +0 -0
  756. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/coverage-tools.txt +0 -0
  757. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/lint-tools.in +0 -0
  758. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/lint-tools.txt +0 -0
  759. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/mutation-tools.in +0 -0
  760. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/mutation-tools.txt +0 -0
  761. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/platform-pins.lock +0 -0
  762. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/release-tools.in +0 -0
  763. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/release-tools.txt +0 -0
  764. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/test-tools.in +0 -0
  765. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/requirements/test-tools.txt +0 -0
  766. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/a11y_check.py +0 -0
  767. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/add_spdx_headers.py +0 -0
  768. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/bench_cli.sh +0 -0
  769. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_command_reference.py +0 -0
  770. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_demo_index.py +0 -0
  771. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_registries.py +0 -0
  772. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_roadmap.py +0 -0
  773. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_scale_corpus.py +0 -0
  774. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/build_vex.py +0 -0
  775. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_anchors.py +0 -0
  776. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_branch_current.py +0 -0
  777. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_dco.py +0 -0
  778. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_licenses.py +0 -0
  779. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_reproducible.py +0 -0
  780. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/check_required_checks.py +0 -0
  781. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/ensure_eval_corpus.sh +0 -0
  782. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_corpus.py +0 -0
  783. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_explain.py +0 -0
  784. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_gate.py +0 -0
  785. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_recommend.py +0 -0
  786. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_retrieval.py +0 -0
  787. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_stats_summary.py +0 -0
  788. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/eval_tools.py +0 -0
  789. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/import_budget.py +0 -0
  790. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/lock_toolchain.py +0 -0
  791. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/measure_near_duplicate_bound.py +0 -0
  792. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/measure_registry.py +0 -0
  793. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/mutation_gate.py +0 -0
  794. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/mutation_weights.json +0 -0
  795. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/normalize_sdist.py +0 -0
  796. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/page_budget.py +0 -0
  797. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/perf_gate.py +0 -0
  798. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/post_deploy_smoke.py +0 -0
  799. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/publish_eval_json.py +0 -0
  800. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/publish_shards.py +0 -0
  801. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/release_guard.py +0 -0
  802. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/release_preflight.py +0 -0
  803. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/serve_docs.py +0 -0
  804. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/scripts/shard_plan.py +0 -0
  805. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/setup.cfg +0 -0
  806. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/sonar-project.properties +0 -0
  807. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/style/README.md +0 -0
  808. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/style/boost.css +0 -0
  809. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/style/boost.js +0 -0
  810. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/style/demo.html +0 -0
  811. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/adapt.feature +0 -0
  812. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/browse.feature +0 -0
  813. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/count.feature +0 -0
  814. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/discover.feature +0 -0
  815. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/doctor.feature +0 -0
  816. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/environment.py +0 -0
  817. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/explain.feature +0 -0
  818. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/index.feature +0 -0
  819. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/install.feature +0 -0
  820. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/list.feature +0 -0
  821. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/mcp.feature +0 -0
  822. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/search.feature +0 -0
  823. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/steps/cli_steps.py +0 -0
  824. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/steps/discovery_steps.py +0 -0
  825. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/steps/mcp_steps.py +0 -0
  826. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/bdd/features/steps/quality_steps.py +0 -0
  827. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/conftest.py +0 -0
  828. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/baseline.json +0 -0
  829. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/explain.jsonl +0 -0
  830. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  831. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/golden-natural.jsonl +0 -0
  832. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/golden.jsonl +0 -0
  833. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/recommend.jsonl +0 -0
  834. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/taps-scale.txt +0 -0
  835. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/taps.txt +0 -0
  836. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/eval/tool_calls.jsonl +0 -0
  837. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  838. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_bmad_all_hosts.py +0 -0
  839. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_bmad_personas_scope.py +0 -0
  840. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_capabilities_policy.py +0 -0
  841. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_adapt.py +0 -0
  842. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_bmad.py +0 -0
  843. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_catalog.py +0 -0
  844. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_chat.py +0 -0
  845. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_configuration.py +0 -0
  846. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_discovery.py +0 -0
  847. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_hooks.py +0 -0
  848. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_hooks_codex.py +0 -0
  849. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_hooks_gemini.py +0 -0
  850. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_identifier_columns.py +0 -0
  851. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_info.py +0 -0
  852. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_intelligence.py +0 -0
  853. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_json_reports.py +0 -0
  854. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_pane_width.py +0 -0
  855. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_pkg.py +0 -0
  856. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_quality.py +0 -0
  857. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_quickstart.py +0 -0
  858. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_tap_pins.py +0 -0
  859. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_taps.py +0 -0
  860. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_cli_team.py +0 -0
  861. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  862. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  863. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_everyday_loop.py +0 -0
  864. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_integrity_enforce.py +0 -0
  865. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_keyed_no_store_hint.py +0 -0
  866. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_kind_conformance.py +0 -0
  867. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_property_parsers.py +0 -0
  868. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_recommend_because_is_true.py +0 -0
  869. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  870. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_reports_match_reality.py +0 -0
  871. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_run.py +0 -0
  872. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_tap_signing.py +0 -0
  873. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/functional/test_workspace_scope.py +0 -0
  874. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/README.md +0 -0
  875. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  876. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  877. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  878. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  879. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  880. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  881. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  882. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  883. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  884. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  885. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  886. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  887. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  888. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  889. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  890. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  891. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  892. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  893. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  894. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  895. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  896. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  897. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  898. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/fuzz_frontmatter.py +0 -0
  899. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/fuzz/fuzz_registry.py +0 -0
  900. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/langchain/conftest.py +0 -0
  901. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/langchain/test_graph.py +0 -0
  902. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/langchain/test_loader.py +0 -0
  903. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/langchain/test_retriever.py +0 -0
  904. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/make_fixture.py +0 -0
  905. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/perf/test_benchmarks.py +0 -0
  906. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/smoke.sh +0 -0
  907. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  908. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_a11y_check.py +0 -0
  909. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_action_pin_lockstep.py +0 -0
  910. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_adapters.py +0 -0
  911. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_adapters_multi.py +0 -0
  912. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_adapters_runner.py +0 -0
  913. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_agents.py +0 -0
  914. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_ai.py +0 -0
  915. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_aihost.py +0 -0
  916. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_archive.py +0 -0
  917. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_bmad_core.py +0 -0
  918. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_boost_first_offer.py +0 -0
  919. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_bootstrap.py +0 -0
  920. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_bot_pr_dco.py +0 -0
  921. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_branch_current.py +0 -0
  922. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_browse.py +0 -0
  923. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_builtin.py +0 -0
  924. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_canary_deps.py +0 -0
  925. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_capabilities.py +0 -0
  926. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_catalog.py +0 -0
  927. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_catalog_distinct.py +0 -0
  928. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_catalog_keyword_words.py +0 -0
  929. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_catalogbundle.py +0 -0
  930. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_chat.py +0 -0
  931. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_check_anchors.py +0 -0
  932. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_check_dco.py +0 -0
  933. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_check_licenses.py +0 -0
  934. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_check_reproducible.py +0 -0
  935. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_claude_settings.py +0 -0
  936. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_claude_settings_codex.py +0 -0
  937. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_clean_internal_cache.py +0 -0
  938. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_cli_update_shards.py +0 -0
  939. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_cliparse.py +0 -0
  940. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_codeql_analysis_key.py +0 -0
  941. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_cohort.py +0 -0
  942. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_command_reference_fresh.py +0 -0
  943. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_community_health_files.py +0 -0
  944. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_compact.py +0 -0
  945. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_complete.py +0 -0
  946. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_complete_rc_block.py +0 -0
  947. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_config.py +0 -0
  948. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_content_dedupe.py +0 -0
  949. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_content_identity.py +0 -0
  950. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_corpus_prose.py +0 -0
  951. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  952. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_coverage_gate_prose.py +0 -0
  953. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_crash_redaction.py +0 -0
  954. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dedup_trust.py +0 -0
  955. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_demo_index.py +0 -0
  956. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense.py +0 -0
  957. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  958. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_embed_dedupe.py +0 -0
  959. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_entry_reuse.py +0 -0
  960. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_entry_vectors.py +0 -0
  961. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_fallback.py +0 -0
  962. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_fix_hint.py +0 -0
  963. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_model_unavailable.py +0 -0
  964. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_progress.py +0 -0
  965. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_quantized.py +0 -0
  966. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_ready_order.py +0 -0
  967. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_shard_real_schema.py +0 -0
  968. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  969. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_shards.py +0 -0
  970. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_status.py +0 -0
  971. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_status_cheap.py +0 -0
  972. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dense_vector_dedupe.py +0 -0
  973. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dependabot_config.py +0 -0
  974. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_deps.py +0 -0
  975. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_discovery.py +0 -0
  976. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_distill_merge.py +0 -0
  977. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_docs_pages_linked.py +0 -0
  978. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_docsite_chrome.py +0 -0
  979. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_doctor_output_polish.py +0 -0
  980. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_drift_hint.py +0 -0
  981. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_dry_run_parity.py +0 -0
  982. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_ed25519.py +0 -0
  983. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_embed.py +0 -0
  984. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_embed_local.py +0 -0
  985. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_embed_outranking.py +0 -0
  986. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_embed_truncated_response.py +0 -0
  987. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_entry_key.py +0 -0
  988. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_errors_and_cli_table.py +0 -0
  989. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_baseline.py +0 -0
  990. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_corpus.py +0 -0
  991. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_corpus_bodies.py +0 -0
  992. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_faithfulness.py +0 -0
  993. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_gate.py +0 -0
  994. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_grading.py +0 -0
  995. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_metrics.py +0 -0
  996. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_query_sets.py +0 -0
  997. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_stats_summary.py +0 -0
  998. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_tools.py +0 -0
  999. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_eval_tools_probe.py +0 -0
  1000. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  1001. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_faithfulness.py +0 -0
  1002. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_first_run_pointer.py +0 -0
  1003. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_frontmatter.py +0 -0
  1004. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_fuzz_targets.py +0 -0
  1005. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  1006. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gitleaks_config.py +0 -0
  1007. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gitutil.py +0 -0
  1008. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gitutil_lfs.py +0 -0
  1009. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gitutil_sparse.py +0 -0
  1010. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_gstack_coexistence.py +0 -0
  1011. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_help_contracts.py +0 -0
  1012. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_hook_settings_hosts.py +0 -0
  1013. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_hookhost.py +0 -0
  1014. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_hookhost_codex.py +0 -0
  1015. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_imperative.py +0 -0
  1016. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_import_budget.py +0 -0
  1017. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_injectscan.py +0 -0
  1018. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_install_permission_error.py +0 -0
  1019. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_installscan.py +0 -0
  1020. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_integrity.py +0 -0
  1021. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_journal.py +0 -0
  1022. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_jsonstate.py +0 -0
  1023. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_langchain_packaging.py +0 -0
  1024. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_launcher_python_floor.py +0 -0
  1025. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_lighthouse_budgets.py +0 -0
  1026. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_link_ownership.py +0 -0
  1027. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_localembed.py +0 -0
  1028. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_localembed_e2e.py +0 -0
  1029. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_lockfile.py +0 -0
  1030. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_logs.py +0 -0
  1031. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_marketing_counts.py +0 -0
  1032. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcp.py +0 -0
  1033. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1034. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcp_install_scan.py +0 -0
  1035. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcp_read.py +0 -0
  1036. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcpdecl.py +0 -0
  1037. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mcphost.py +0 -0
  1038. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_measure_registry.py +0 -0
  1039. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_minisign.py +0 -0
  1040. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mutation_hardening.py +0 -0
  1041. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mutation_shards.py +0 -0
  1042. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mutation_weights_drift.py +0 -0
  1043. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_mutmut_source_paths.py +0 -0
  1044. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1045. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_nethttp.py +0 -0
  1046. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_normalize_sdist.py +0 -0
  1047. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_output.py +0 -0
  1048. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_output_table_drop.py +0 -0
  1049. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_output_table_whole.py +0 -0
  1050. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_page_budget.py +0 -0
  1051. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_paths.py +0 -0
  1052. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_perf_gate.py +0 -0
  1053. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_pkg_confusions.py +0 -0
  1054. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_pkg_injection.py +0 -0
  1055. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_pkg_secrets.py +0 -0
  1056. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_platform_pins.py +0 -0
  1057. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_policy.py +0 -0
  1058. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_post_deploy_smoke.py +0 -0
  1059. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_prereq.py +0 -0
  1060. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1061. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_projectlock.py +0 -0
  1062. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_provenance.py +0 -0
  1063. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_publish_golden_dataset.py +0 -0
  1064. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_quickstart_readiness.py +0 -0
  1065. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rag.py +0 -0
  1066. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rag_completeness.py +0 -0
  1067. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rag_extra_hint.py +0 -0
  1068. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rag_fastpath.py +0 -0
  1069. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rag_fusion.py +0 -0
  1070. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_read_text_arg.py +0 -0
  1071. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_registries_fresh.py +0 -0
  1072. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_registry.py +0 -0
  1073. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_registry_categories.py +0 -0
  1074. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_registry_control_chars.py +0 -0
  1075. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_registry_parallel.py +0 -0
  1076. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_release_guard.py +0 -0
  1077. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_release_preflight.py +0 -0
  1078. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_repo_root_guard.py +0 -0
  1079. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_report.py +0 -0
  1080. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_required_checks.py +0 -0
  1081. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rerank_cache.py +0 -0
  1082. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_resolve.py +0 -0
  1083. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1084. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_roadmap_fresh.py +0 -0
  1085. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_rules.py +0 -0
  1086. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1087. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_scale_corpus.py +0 -0
  1088. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_schedule_plist.py +0 -0
  1089. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_scopes.py +0 -0
  1090. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_sdist_contents.py +0 -0
  1091. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_secretscan.py +0 -0
  1092. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_selfupdate.py +0 -0
  1093. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_serve.py +0 -0
  1094. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_serve_docs.py +0 -0
  1095. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shard_plan.py +0 -0
  1096. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shards.py +0 -0
  1097. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shards_carry_forward.py +0 -0
  1098. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shards_incremental.py +0 -0
  1099. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shards_ingest.py +0 -0
  1100. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_shards_matrix.py +0 -0
  1101. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1102. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_spdx_headers.py +0 -0
  1103. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_spin.py +0 -0
  1104. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_stackprobe.py +0 -0
  1105. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_staleness.py +0 -0
  1106. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_store.py +0 -0
  1107. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_store_materialize.py +0 -0
  1108. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_sync_blocked_links.py +0 -0
  1109. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_sync_lost_lock.py +0 -0
  1110. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1111. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_tap_pins.py +0 -0
  1112. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_text_io_names_its_encoding.py +0 -0
  1113. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_token_parity.py +0 -0
  1114. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_toolchain_lock.py +0 -0
  1115. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_trustaudit.py +0 -0
  1116. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_typedvalue.py +0 -0
  1117. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_typosquat.py +0 -0
  1118. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_updatediff.py +0 -0
  1119. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_upstream_path.py +0 -0
  1120. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_util.py +0 -0
  1121. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_version.py +0 -0
  1122. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_version_tags.py +0 -0
  1123. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_vex.py +0 -0
  1124. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_visual_harness_capture.py +0 -0
  1125. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_visual_harness_flags.py +0 -0
  1126. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_workflow_concurrency.py +0 -0
  1127. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1128. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1129. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_workflow_timeouts.py +0 -0
  1130. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_workflows.py +0 -0
  1131. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1132. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/visual/a11y_check.mjs +0 -0
  1133. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/visual/console_check.mjs +0 -0
  1134. {boost_skill_cli-1.2.172 → boost_skill_cli-1.2.173}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.172
3
+ Version: 1.2.173
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.172'
22
- __version_tuple__ = version_tuple = (1, 2, 172)
21
+ __version__ = version = '1.2.173'
22
+ __version_tuple__ = version_tuple = (1, 2, 173)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.172
3
+ Version: 1.2.173
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -355,6 +355,7 @@ docs/roadmap/items/build-provenance-slsa-attestations.md
355
355
  docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md
356
356
  docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md
357
357
  docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md
358
+ docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md
358
359
  docs/roadmap/items/capability-manifest-and-least-privilege-policy.md
359
360
  docs/roadmap/items/capability-policy-skips-rules-and-workflows.md
360
361
  docs/roadmap/items/catalog-categories-beyond-curated.md
@@ -1033,6 +1034,7 @@ tests/unit/test_mcphost.py
1033
1034
  tests/unit/test_measure_registry.py
1034
1035
  tests/unit/test_minisign.py
1035
1036
  tests/unit/test_mutation_hardening.py
1037
+ tests/unit/test_mutation_shard_count.py
1036
1038
  tests/unit/test_mutation_shards.py
1037
1039
  tests/unit/test_mutation_subfile_shards.py
1038
1040
  tests/unit/test_mutation_weights_drift.py
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: cancelled-ci-on-main-is-silent-and-skips-the-release
3
+ board: code
4
+ section: trust
5
+ status: planned
6
+ category: CI · Bug
7
+ complexity: S
8
+ impact: High
9
+ wow: 4
10
+ note: the alerting that exists to make a red main impossible to miss asks only about 'failure', and the run that skipped a release was 'cancelled'
11
+ order: 365
12
+ owner:
13
+ pr:
14
+ title: "A <code>cancelled</code> <code>ci</code> on main skips the release and alerts nobody, because the alert asks only about <code>failure</code>"
15
+ ---
16
+ <b>Two independent gates, both keyed on the wrong half of the same enum.</b>
17
+ <code>publish.yml</code> fires on <code>workflow_run</code> and ships only when
18
+ <code>conclusion == 'success'</code>; <code>ci-failure-alert</code> opens the tracking issue
19
+ only when <code>conclusion == 'failure'</code>. A <code>ci</code> run that concludes
20
+ <code>cancelled</code> satisfies neither. <b>It does not ship and it does not tell anyone</b>
21
+ &mdash; the one conclusion that falls through both.
22
+
23
+ <b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> hit
24
+ <code>timeout-minutes: 75</code> and was cancelled, the aggregate <code>mutation</code> job
25
+ failed, and the run concluded <code>cancelled</code> rather than <code>failure</code>. No
26
+ release, no issue, no notification. It surfaced the same day, and only because somebody was
27
+ reading per-shard job durations out of the Actions API for an unrelated reason &mdash; nothing
28
+ in the repo would have raised it, and the next one will be found the same way or not at all.
29
+
30
+ <b>This is the exact blind spot <code>ci-failure-alert</code>'s own header describes.</b> That
31
+ file opens by explaining that <code>demo</code> "failed six runs out of six on main, alerted
32
+ nobody, and was found by a manual audit instead", and concludes that "any workflow that runs on
33
+ main and nobody watches belongs here". The list was then enforced by
34
+ <code>tests/unit/test_failure_alerting_covers_unattended.py</code> so a new workflow cannot
35
+ quietly join the blind spot. <b>The enforcement is over <em>which workflows</em> are watched,
36
+ and the hole here is <em>which conclusions</em> are</b> &mdash; <code>ci</code> is on the list
37
+ and still said nothing.
38
+
39
+ <b>Why a timeout is not an exotic case.</b> It is the designed behaviour of every
40
+ <code>timeout-minutes</code> in the repo, and <code>mutation-shard</code>'s is reached by an
41
+ ordinary slow runner rather than by a bug: across 169 measured shard jobs the worst was 72.5
42
+ minutes against a 75-minute cap. A job can also be cancelled by the concurrency group, by a
43
+ runner eviction (<code>mutation-shard (4)</code> on #1012 died at 15.1 min with exit 143), or by
44
+ a human pressing the button &mdash; and only the last of those is one anybody already knows
45
+ about.
46
+
47
+ <b>Shape of the work.</b> Widen the alert's condition from <code>== 'failure'</code> to the set
48
+ of conclusions that mean "main is not green", which is every one except <code>success</code>,
49
+ <code>skipped</code> and <code>neutral</code> &mdash; naming what is <em>excluded</em> rather
50
+ than what is included, so the next conclusion GitHub adds defaults to loud. The issue body
51
+ should say which conclusion it was, because <em>cancelled</em> and <em>failure</em> want
52
+ different first moves. Then pin it: the sibling test already enforces the workflow list, so the
53
+ conclusion set wants the same treatment rather than a comment. Worth checking at the same time
54
+ whether <code>publish.yml</code> should distinguish "CI did not pass" from "CI did not finish"
55
+ &mdash; today both are a silent no-op, and a release that was skipped because a runner was slow
56
+ is recoverable by a rerun that nobody currently knows to start.
@@ -2,15 +2,15 @@
2
2
  id: shard-weights-do-not-predict-the-job-timeout
3
3
  board: code
4
4
  section: trust
5
- status: planned
5
+ status: inflight
6
6
  category: CI · Bug
7
7
  complexity: M
8
8
  impact: High
9
9
  wow: 4
10
10
  note: the pack is balanced to within 700ms of ideal and a shard still timed out at 75 min, cancelling a release
11
11
  order: 364
12
- owner:
13
- pr:
12
+ owner: loop/shard-headroom
13
+ pr: 1023
14
14
  title: "Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release"
15
15
  ---
16
16
  <b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
@@ -55,3 +55,40 @@ speedup cap is 6.0x only because <code>store.py</code> is split per function alr
55
55
  shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
56
56
  looks identical to a success from the release path's point of view, because
57
57
  <code>publish.yml</code> only asks whether the conclusion was <code>success</code>.
58
+
59
+ <b>Fixed, and the calibration is measured.</b> Fitted over the Actions job API on 2026-10-01:
60
+ <b>169 successful <code>mutation-shard</code> jobs</b>, of which 26 runs completed all six
61
+ shards. Two numbers come out, and they answer different questions. Per <em>run</em> &mdash; the
62
+ sum over its six shards, which is pack-invariant and so isolates runner speed from packing
63
+ &mdash; observed minutes over committed weight-minutes is min 0.265, <b>median 0.307</b>, max
64
+ 0.355: a spread of only <b>1.34x</b>. Per <em>shard</em> against its own median the range is
65
+ 1.10x (shard 3) to <b>1.91x</b> (shard 2: median 38.0 min, worst 72.5). <b>So the mean is not
66
+ what fails.</b> A single slow runner inside an otherwise ordinary run is, and a check scored on
67
+ the median would have passed the pack that was cancelled &mdash; its median shard was 37.8
68
+ minutes against a 75-minute cap, half the ceiling.
69
+
70
+ <b>The 0.307 is not a fudge factor, it is parallelism.</b> Weights are summed per-mutant
71
+ durations &mdash; the work a shard holds laid end to end &mdash; and the runner executes it
72
+ four-way parallel (<code>max_children</code> defaults to <code>os.cpu_count()</code>;
73
+ <code>ubuntu-latest</code> is 4 vCPU). The median inverts to 3.26 effective workers of 4, so what
74
+ is stored is <b>81.4% parallel efficiency</b> and the worker count separately: a runner with more
75
+ vCPUs then moves one constant and contention moves the other, where a single fitted number would
76
+ hide which had happened.
77
+
78
+ <b>It reproduces the failure it was derived to predict.</b> Six shards at these weights:
79
+ 37.8 median minutes &times; 1.91 = a <b>72.3-minute tail</b> against a real worst job of
80
+ <b>72.5</b> &mdash; 96% of the cap. <code>plan --explain --timeout-minutes 75</code> now prints
81
+ that and exits 1. The matrix moved to <b>eight</b>, where the same arithmetic gives 28.4 &times;
82
+ 1.91 = <b>54.2 min, 72% of the cap</b>; the largest unit (4,063,161 ms) still fits inside an even
83
+ share (5,543,280 ms), so the speedup cap is a full 8.00x and more shards cost nothing but runner
84
+ slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
85
+ <code>ci.yml</code> and <code>mutation-weights-refresh.yml</code> (<code>timeout-minutes</code>
86
+ cannot be read through <code>${{ }}</code>, so agreement is asserted rather than derived), and
87
+ re-runs the headroom check on the committed pack every build &mdash; a pack that would be
88
+ cancelled now fails in the <code>test</code> job in milliseconds.
89
+
90
+ <b>Not fixed here, and now its own card:</b> a <code>cancelled</code> <code>ci</code> on main is
91
+ still silent. <code>ci-failure-alert</code> gates on
92
+ <code>conclusion == 'failure'</code>, so the run that skipped the release notified nobody either
93
+ &mdash; see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code>.
94
+
@@ -143,7 +143,7 @@
143
143
  <div class="stat"><b>27</b><span>Shipped</span></div>
144
144
  <div class="stat"><b>1</b><span>Next up</span></div>
145
145
  <div class="stat"><b>75</b><span>Planned</span></div>
146
- <div class="stat"><b>521</b><span>Loop finds</span></div>
146
+ <div class="stat"><b>522</b><span>Loop finds</span></div>
147
147
  <!-- /ROADMAP:stats -->
148
148
  </div>
149
149
  </section>
@@ -7748,7 +7748,7 @@ the walk and the <code>redirected</code> reporting this card inherits.</p>
7748
7748
  </article>
7749
7749
 
7750
7750
  <article class="cap rcard" id="shard-weights-do-not-predict-the-job-timeout">
7751
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CI · Bug</span></div>
7751
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">CI · Bug</span></div>
7752
7752
  <h3>Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release</h3>
7753
7753
  <p><b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
7754
7754
  job's <code>timeout-minutes: 75</code> and was cancelled. The aggregate <code>mutation</code> job
@@ -7791,7 +7791,43 @@ give the heaviest shard headroom &mdash; at eight shards the ideal drops by a qu
7791
7791
  speedup cap is 6.0x only because <code>store.py</code> is split per function already, so more
7792
7792
  shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
7793
7793
  looks identical to a success from the release path's point of view, because
7794
- <code>publish.yml</code> only asks whether the conclusion was <code>success</code>.</p>
7794
+ <code>publish.yml</code> only asks whether the conclusion was <code>success</code>.
7795
+
7796
+ <b>Fixed, and the calibration is measured.</b> Fitted over the Actions job API on 2026-10-01:
7797
+ <b>169 successful <code>mutation-shard</code> jobs</b>, of which 26 runs completed all six
7798
+ shards. Two numbers come out, and they answer different questions. Per <em>run</em> &mdash; the
7799
+ sum over its six shards, which is pack-invariant and so isolates runner speed from packing
7800
+ &mdash; observed minutes over committed weight-minutes is min 0.265, <b>median 0.307</b>, max
7801
+ 0.355: a spread of only <b>1.34x</b>. Per <em>shard</em> against its own median the range is
7802
+ 1.10x (shard 3) to <b>1.91x</b> (shard 2: median 38.0 min, worst 72.5). <b>So the mean is not
7803
+ what fails.</b> A single slow runner inside an otherwise ordinary run is, and a check scored on
7804
+ the median would have passed the pack that was cancelled &mdash; its median shard was 37.8
7805
+ minutes against a 75-minute cap, half the ceiling.
7806
+
7807
+ <b>The 0.307 is not a fudge factor, it is parallelism.</b> Weights are summed per-mutant
7808
+ durations &mdash; the work a shard holds laid end to end &mdash; and the runner executes it
7809
+ four-way parallel (<code>max_children</code> defaults to <code>os.cpu_count()</code>;
7810
+ <code>ubuntu-latest</code> is 4 vCPU). The median inverts to 3.26 effective workers of 4, so what
7811
+ is stored is <b>81.4% parallel efficiency</b> and the worker count separately: a runner with more
7812
+ vCPUs then moves one constant and contention moves the other, where a single fitted number would
7813
+ hide which had happened.
7814
+
7815
+ <b>It reproduces the failure it was derived to predict.</b> Six shards at these weights:
7816
+ 37.8 median minutes &times; 1.91 = a <b>72.3-minute tail</b> against a real worst job of
7817
+ <b>72.5</b> &mdash; 96% of the cap. <code>plan --explain --timeout-minutes 75</code> now prints
7818
+ that and exits 1. The matrix moved to <b>eight</b>, where the same arithmetic gives 28.4 &times;
7819
+ 1.91 = <b>54.2 min, 72% of the cap</b>; the largest unit (4,063,161 ms) still fits inside an even
7820
+ share (5,543,280 ms), so the speedup cap is a full 8.00x and more shards cost nothing but runner
7821
+ slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
7822
+ <code>ci.yml</code> and <code>mutation-weights-refresh.yml</code> (<code>timeout-minutes</code>
7823
+ cannot be read through <code>${{ }}</code>, so agreement is asserted rather than derived), and
7824
+ re-runs the headroom check on the committed pack every build &mdash; a pack that would be
7825
+ cancelled now fails in the <code>test</code> job in milliseconds.
7826
+
7827
+ <b>Not fixed here, and now its own card:</b> a <code>cancelled</code> <code>ci</code> on main is
7828
+ still silent. <code>ci-failure-alert</code> gates on
7829
+ <code>conclusion == 'failure'</code>, so the run that skipped the release notified nobody either
7830
+ &mdash; see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code>.</p>
7795
7831
  <div class="meta">
7796
7832
  <span class="m">Complexity <b>M</b></span>
7797
7833
  <span class="m hi">Impact <b>High</b></span>
@@ -7799,6 +7835,58 @@ looks identical to a success from the release path's point of view, because
7799
7835
  <span class="m">the pack is balanced to within 700ms of ideal and a shard still timed out at 75 min, cancelling a release</span>
7800
7836
  </div>
7801
7837
  </article>
7838
+
7839
+ <article class="cap rcard" id="cancelled-ci-on-main-is-silent-and-skips-the-release">
7840
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">CI · Bug</span></div>
7841
+ <h3>A <code>cancelled</code> <code>ci</code> on main skips the release and alerts nobody, because the alert asks only about <code>failure</code></h3>
7842
+ <p><b>Two independent gates, both keyed on the wrong half of the same enum.</b>
7843
+ <code>publish.yml</code> fires on <code>workflow_run</code> and ships only when
7844
+ <code>conclusion == 'success'</code>; <code>ci-failure-alert</code> opens the tracking issue
7845
+ only when <code>conclusion == 'failure'</code>. A <code>ci</code> run that concludes
7846
+ <code>cancelled</code> satisfies neither. <b>It does not ship and it does not tell anyone</b>
7847
+ &mdash; the one conclusion that falls through both.
7848
+
7849
+ <b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> hit
7850
+ <code>timeout-minutes: 75</code> and was cancelled, the aggregate <code>mutation</code> job
7851
+ failed, and the run concluded <code>cancelled</code> rather than <code>failure</code>. No
7852
+ release, no issue, no notification. It surfaced the same day, and only because somebody was
7853
+ reading per-shard job durations out of the Actions API for an unrelated reason &mdash; nothing
7854
+ in the repo would have raised it, and the next one will be found the same way or not at all.
7855
+
7856
+ <b>This is the exact blind spot <code>ci-failure-alert</code>'s own header describes.</b> That
7857
+ file opens by explaining that <code>demo</code> "failed six runs out of six on main, alerted
7858
+ nobody, and was found by a manual audit instead", and concludes that "any workflow that runs on
7859
+ main and nobody watches belongs here". The list was then enforced by
7860
+ <code>tests/unit/test_failure_alerting_covers_unattended.py</code> so a new workflow cannot
7861
+ quietly join the blind spot. <b>The enforcement is over <em>which workflows</em> are watched,
7862
+ and the hole here is <em>which conclusions</em> are</b> &mdash; <code>ci</code> is on the list
7863
+ and still said nothing.
7864
+
7865
+ <b>Why a timeout is not an exotic case.</b> It is the designed behaviour of every
7866
+ <code>timeout-minutes</code> in the repo, and <code>mutation-shard</code>'s is reached by an
7867
+ ordinary slow runner rather than by a bug: across 169 measured shard jobs the worst was 72.5
7868
+ minutes against a 75-minute cap. A job can also be cancelled by the concurrency group, by a
7869
+ runner eviction (<code>mutation-shard (4)</code> on #1012 died at 15.1 min with exit 143), or by
7870
+ a human pressing the button &mdash; and only the last of those is one anybody already knows
7871
+ about.
7872
+
7873
+ <b>Shape of the work.</b> Widen the alert's condition from <code>== 'failure'</code> to the set
7874
+ of conclusions that mean "main is not green", which is every one except <code>success</code>,
7875
+ <code>skipped</code> and <code>neutral</code> &mdash; naming what is <em>excluded</em> rather
7876
+ than what is included, so the next conclusion GitHub adds defaults to loud. The issue body
7877
+ should say which conclusion it was, because <em>cancelled</em> and <em>failure</em> want
7878
+ different first moves. Then pin it: the sibling test already enforces the workflow list, so the
7879
+ conclusion set wants the same treatment rather than a comment. Worth checking at the same time
7880
+ whether <code>publish.yml</code> should distinguish "CI did not pass" from "CI did not finish"
7881
+ &mdash; today both are a silent no-op, and a release that was skipped because a runner was slow
7882
+ is recoverable by a rerun that nobody currently knows to start.</p>
7883
+ <div class="meta">
7884
+ <span class="m">Complexity <b>S</b></span>
7885
+ <span class="m hi">Impact <b>High</b></span>
7886
+ <span class="m">Wow <b class="wow">★★★★</b></span>
7887
+ <span class="m">the alerting that exists to make a red main impossible to miss asks only about 'failure', and the run that skipped a release was 'cancelled'</span>
7888
+ </div>
7889
+ </article>
7802
7890
  <!-- /ROADMAP:cards -->
7803
7891
 
7804
7892
  </div>
@@ -4,8 +4,9 @@
4
4
  """Split the mutation gate across parallel CI shards, and merge the results back.
5
5
 
6
6
  The gate runs ~10.5k mutants over ``boost_cli/core`` and is the single longest
7
- job in CI — roughly 26 minutes against ~9 for the next-slowest, so it alone sets
8
- how long a PR (and therefore a release) waits.
7
+ job in CI — measured at a median 37.5 minutes a shard over 169 real shard jobs,
8
+ against ~9 for the next-slowest job, so it alone sets how long a PR (and
9
+ therefore a release) waits.
9
10
 
10
11
  mutmut's ``run`` accepts fnmatch patterns over mutant names
11
12
  (``boost_cli.core.lockfile.x__skeleton__mutmut_1``), and each source file owns a
@@ -78,14 +79,39 @@ needs no freshness gate — unlike every other generated file in this repo.
78
79
 
79
80
  The bound worth knowing: the largest *unit* is a floor on the slowest shard.
80
81
  That used to be the largest file — ``store.py``, capping the useful speedup at
81
- about 5.4x — and is now the largest unsplittable file, which lifts the cap to
82
- about 6.0x at six shards. ``plan --explain`` prints the cap, which files were
83
- split, and the resulting per-shard loads.
82
+ about 5.4x — and is now the largest unsplittable file, which at the committed
83
+ :data:`SHARDS` still fits inside an even share and so leaves the cap at the
84
+ shard count itself. ``plan --explain`` prints the cap, which files were split,
85
+ and the resulting per-shard loads.
86
+
87
+ Ratios, and the one question they cannot answer
88
+ -----------------------------------------------
89
+ Everything above is scale-free: the packer needs only that one unit is twice
90
+ another, so the weights can be in any unit that is consistent with itself, and
91
+ they are in summed per-mutant milliseconds. That was fine until it was asked a
92
+ question in a different unit. ``ci.yml`` caps each shard at ``timeout-minutes``;
93
+ a cancelled shard fails the aggregate ``mutation`` job; a ``ci`` run that is
94
+ *cancelled* rather than *failed* does not satisfy ``publish.yml``'s
95
+ ``conclusion == 'success'``; so a merge to main stops shipping, quietly. That
96
+ happened on the merge of #1015, with ``plan --explain`` reporting ``7391040``
97
+ against a ceiling written in minutes and nothing anywhere converting between
98
+ them.
99
+
100
+ :func:`runner_minutes` converts, by dividing the serial weight by the
101
+ parallelism the runner actually delivers — see :data:`RUNNER_EFFICIENCY` and
102
+ :data:`TAIL_MULTIPLIER`, both fitted over the job API rather than assumed.
103
+ ``plan --explain --timeout-minutes N`` then answers the question directly and
104
+ exits non-zero when the answer is no;
105
+ ``tests/unit/test_mutation_shard_count.py`` asks it of the committed pack on
106
+ every run, so a pack that would be cancelled fails in the ``test`` job in
107
+ milliseconds instead of 75 minutes into the matrix.
84
108
 
85
109
  Usage
86
110
  -----
87
111
  mutation_shards.py plan --shards N --index I # patterns for one shard
88
112
  mutation_shards.py plan --shards N --explain # the whole split + speedup cap
113
+ mutation_shards.py plan --shards N --explain --timeout-minutes M
114
+ # ...and does it fit in M minutes?
89
115
  mutation_shards.py merge --shards N --into mutants results/* # rebuild results
90
116
  mutation_shards.py weights --source mutants # refresh the balance hints
91
117
  mutation_shards.py drift --candidate new.json # is a refresh worth a PR?
@@ -107,6 +133,82 @@ ROOT = Path(__file__).resolve().parent.parent
107
133
  SOURCE = Path("boost_cli/core")
108
134
  WEIGHTS = Path("scripts/mutation_weights.json")
109
135
 
136
+ #: How many shards the CI matrix runs. Python's copy of a number that is also
137
+ #: spelled in two workflows, pinned against them by
138
+ #: ``tests/unit/test_mutation_shard_count.py`` — ``timeout-minutes`` cannot be
139
+ #: read through ``${{ }}``, so the agreement is asserted rather than derived.
140
+ SHARDS = 8
141
+
142
+ #: ``mutmut``'s worker count on the runner. It defaults to ``os.cpu_count()``
143
+ #: and ``setup.cfg`` sets no ``max_children``, so on ``ubuntu-latest`` — 4 vCPU
144
+ #: — the mutant set runs four at a time.
145
+ RUNNER_WORKERS = 4
146
+
147
+ #: The fraction of those four workers the runner actually delivers.
148
+ #:
149
+ #: **This is the number that made the plan predictive, and it is measured, not
150
+ #: assumed.** The weights are summed per-mutant durations, so a shard's weight
151
+ #: is the work it holds *serially* while the job runs it four-way parallel: a
152
+ #: plan in weight-milliseconds was predicting 123 minutes a shard against 27-76
153
+ #: observed, and nothing in the repo could answer "will a shard exceed the
154
+ #: cap?".
155
+ #:
156
+ #: Fitted over the GitHub Actions job API on 2026-10-01: **169 successful
157
+ #: `mutation-shard` jobs**, of which **26 runs completed all six shards**, from
158
+ #: 2026-09-30 to 2026-10-01. Per *run* (the sum over its six shards, which is
159
+ #: pack-invariant and so isolates runner speed from packing) the ratio of
160
+ #: observed minutes to committed weight-minutes was min 0.265, **median
161
+ #: 0.307**, p90 0.347, max 0.355 — a 1.34x spread. The median inverts to 3.26
162
+ #: effective workers of 4, hence 81.4%.
163
+ #:
164
+ #: **Two days, and the window is the weakest part of the fit.** The sample is
165
+ #: large (169 jobs) but short, because the weights it is a ratio *against* were
166
+ #: themselves re-measured on 2026-09-30 — before that the denominator is a
167
+ #: different number and the ratio is not comparable. So 1.34x is how much
168
+ #: runners varied over two days, not over a quarter, and a seasonal effect
169
+ #: would not be in it. That is an argument for re-fitting when the weights
170
+ #: move, which is the same event that already opens a PR
171
+ #: (``mutation-weights-refresh.yml``), not for widening the constant on a
172
+ #: guess.
173
+ #:
174
+ #: Expressed as efficiency rather than as the 0.307 itself so that the two
175
+ #: things that could move it stay separable: a runner with more vCPUs changes
176
+ #: ``RUNNER_WORKERS`` and leaves this alone, where contention changes this and
177
+ #: leaves that alone. A single fitted constant would hide which had happened.
178
+ #:
179
+ #: **The model is linear in the weight because the fixed cost is negligible,
180
+ #: and that was measured too, not assumed.** Extrapolating a constant fitted
181
+ #: at six shards to eight is only sound if per-job overhead — checkout, Python
182
+ #: setup, the pip install, the cache restore — does not survive the split, and
183
+ #: it does: over 41 shard jobs the ``mutate shard`` step is a median 35.6
184
+ #: minutes inside a 36.2-minute job, so everything else is **0.6 min, 1.7%**.
185
+ #: Predicting eight shards by the step alone (35.6 x 6/8 + 0.6 = 27.3 min)
186
+ #: lands 4% under what this model gives (28.4), i.e. the model errs toward
187
+ #: *more* time and therefore toward refusing a pack rather than passing one.
188
+ #: If the cache ever stops hitting, that 0.6 is what grows — re-measure before
189
+ #: trusting the extrapolation again.
190
+ RUNNER_EFFICIENCY = 0.814
191
+
192
+ #: How much worse the *worst* run of a shard is than that shard's median.
193
+ #:
194
+ #: The mean is not what fails. Per-run totals vary by only 1.34x, but an
195
+ #: individual shard against its own median ranges 1.10x (shard 3) to **1.91x**
196
+ #: (shard 2: median 38.0 min, worst 72.5) — one slow runner inside an otherwise
197
+ #: ordinary run. The cap is reached by that tail, so the headroom check is
198
+ #: scored against it and not against the median.
199
+ #:
200
+ #: It is a *measured* multiplier and it reproduces the observed worst case:
201
+ #: 37.8 predicted median minutes at six shards x 1.91 = 72.2, against a real
202
+ #: worst job of 72.5 — which is 97% of ``timeout-minutes: 75``. That is the
203
+ #: cancellation this constant exists to predict, and at the time it was
204
+ #: observed nothing printed a number anyone could have compared to the cap.
205
+ TAIL_MULTIPLIER = 1.91
206
+
207
+ #: Fraction of ``timeout-minutes`` the predicted tail may reach before
208
+ #: ``plan --timeout-minutes`` calls the pack unsafe. 0.80 leaves the slowest
209
+ #: shard a fifth of the cap in hand; the pack that was cancelled scored 0.97.
210
+ HEADROOM = 0.80
211
+
110
212
  #: "No override is in force", which is a different state from "the override is
111
213
  #: no file at all" — ``None`` has to stay available as a value, because that is
112
214
  #: how ``drift`` compares against a checkout with no committed hints.
@@ -596,6 +698,66 @@ def pattern_for(root: Path, path: Path):
596
698
  return "%s.x_%s__mutmut_*" % (dotted, unit.symbol)
597
699
 
598
700
 
701
+ def runner_minutes(weight_ms: float) -> float:
702
+ """Weight-milliseconds as wall-clock minutes on a CI runner.
703
+
704
+ The two units are not the same quantity and the gap is not a fudge: a
705
+ shard's weight is summed per-mutant durations — the work it holds laid end
706
+ to end — and the runner executes that work ``RUNNER_WORKERS``-way parallel
707
+ at ``RUNNER_EFFICIENCY``. Dividing is the whole of the model.
708
+
709
+ It is the *only* thing that lets the plan be compared to anything. Weights
710
+ are self-consistent ratios, which is all the packer needs, so the packer
711
+ was right to ignore this; but a ratio cannot be held against
712
+ ``timeout-minutes``, and the question "will this shard be cancelled?" is
713
+ asked in minutes or not at all.
714
+ """
715
+ return weight_ms / 60000.0 / (RUNNER_WORKERS * RUNNER_EFFICIENCY)
716
+
717
+
718
+ def tail_minutes(weight_ms: float) -> float:
719
+ """The slow-runner case for a shard of this weight — what the cap must clear.
720
+
721
+ :func:`runner_minutes` gives the median run. Scoring the cap against that
722
+ would have passed the pack that was cancelled: its median shard was 37.8
723
+ minutes against a 75-minute cap, a comfortable-looking 50%, while the job
724
+ that actually died ran 72.5. See :data:`TAIL_MULTIPLIER`.
725
+ """
726
+ return runner_minutes(weight_ms) * TAIL_MULTIPLIER
727
+
728
+
729
+ def headroom_report(loads: list[int], cap: int) -> tuple[bool, list[str]]:
730
+ """Does the heaviest shard fit inside ``cap`` minutes, with margin?
731
+
732
+ Returns ``(safe, lines)``. The caller decides what a false means, because
733
+ the two callers want different things: ``plan --explain`` prints the lines
734
+ and exits non-zero, and the lockstep test asserts on the bool.
735
+
736
+ The budget is ``cap * HEADROOM`` rather than ``cap`` itself, and **not**
737
+ because the prediction is a median — :func:`tail_minutes` has already
738
+ applied the slow-runner multiplier, so the number being compared is the
739
+ tail, not the middle. The margin is for the two things the tail estimate
740
+ does not contain: :data:`TAIL_MULTIPLIER` is a *max over 28 samples per
741
+ shard*, which is an estimate that only grows as runs accumulate, and the
742
+ weights it scales drift between refreshes. Twenty percent is what keeps a
743
+ pack that is merely near the line from being called fine until the day a
744
+ worse runner than any yet seen turns up.
745
+ """
746
+ worst = max(loads)
747
+ tail = tail_minutes(worst)
748
+ budget = cap * HEADROOM
749
+ safe = tail <= budget
750
+ lines = [
751
+ "timeout : %d min (ci.yml), budget %.1f min at %.0f%% headroom"
752
+ % (cap, budget, HEADROOM * 100),
753
+ "slowest tail: %.1f min (%.1f min median x %.2f slow-runner)"
754
+ % (tail, runner_minutes(worst), TAIL_MULTIPLIER),
755
+ "headroom : %s — slowest shard reaches %.0f%% of the cap"
756
+ % ("OK" if safe else "TOO TIGHT", 100.0 * tail / cap),
757
+ ]
758
+ return safe, lines
759
+
760
+
599
761
  def cmd_plan(args: argparse.Namespace) -> int:
600
762
  root = Path(args.root)
601
763
  bins = pack(root, args.shards)
@@ -625,15 +787,55 @@ def cmd_plan(args: argparse.Namespace) -> int:
625
787
  else:
626
788
  unit = "lines"
627
789
  print("weights : lines of code (no %s yet)" % WEIGHTS)
790
+ # Minutes only where the weights ARE time. On the count and line tiers
791
+ # the number is a ratio with no runner behind it, and printing "min"
792
+ # against it would be the same category error this whole calibration
793
+ # exists to remove — one unit further along.
794
+ def also_minutes(value: float) -> str:
795
+ return " (~%.1f min)" % runner_minutes(value) if unit == "ms" else ""
796
+
628
797
  print("total weight: %d %s" % (total, unit))
629
- print("ideal shard : %d %s" % (total // args.shards, unit))
798
+ print("ideal shard : %d %s%s"
799
+ % (total // args.shards, unit, also_minutes(total / args.shards)))
630
800
  heaviest = max(unit_weight(root, u) for b in bins for u in b)
631
801
  print("largest unit: %d (floor on the slowest shard)" % heaviest)
632
802
  print("speedup cap : %.2fx" % (total / max(loads)))
633
803
  for i, (b, ld) in enumerate(zip(bins, loads, strict=True)):
634
- print(" shard %d: weight %5d, %2d units" % (i, ld, len(b)))
635
- return 0
804
+ print(" shard %d: weight %5d, %2d units%s"
805
+ % (i, ld, len(b), also_minutes(ld)))
636
806
 
807
+ if args.timeout_minutes is None:
808
+ return 0
809
+ if unit != "ms":
810
+ # Refuse rather than answer. A headroom verdict computed off line
811
+ # counts would read exactly like one computed off measured time,
812
+ # and the whole point of the check is that it can be trusted
813
+ # against the cap.
814
+ print("headroom : not checked — weights are %s, not measured time"
815
+ % unit)
816
+ return 0
817
+ safe, lines = headroom_report(loads, args.timeout_minutes)
818
+ for line in lines:
819
+ print(line)
820
+ return 0 if safe else 1
821
+
822
+ if args.timeout_minutes is not None:
823
+ # Not merely unsupported — actively refused. ci.yml does
824
+ # PATTERNS="$(plan --shards N --index $SHARD)", so every word this
825
+ # prints on the --index path becomes an argument to `mutmut run`.
826
+ #
827
+ # Checked against mutmut rather than assumed, because the obvious
828
+ # guess is wrong: it does NOT quietly run an empty set. A filter that
829
+ # matches nothing trips `assert filtered_mutants, "Filtered for
830
+ # specific mutants, but nothing matches"`, and a stray word with no
831
+ # `*` in it goes to `tests_by_mangled_function_name[...]` and raises
832
+ # KeyError. Both are loud. What is NOT loud is the mixed case — a
833
+ # stray word alongside real patterns leaves the assert satisfied, and
834
+ # the word is silently ignored. So the cost is a confusing crash or
835
+ # nothing at all, and neither is a reason to let prose onto that
836
+ # stdout. ci.yml's own `[ -z "$PATTERNS" ]` guard catches only the
837
+ # empty case and would not see any of this.
838
+ raise SystemExit("mutation_shards plan: --timeout-minutes needs --explain")
637
839
  if args.index is None:
638
840
  raise SystemExit("mutation_shards plan: --index is required without --explain")
639
841
  if not 0 <= args.index < args.shards:
@@ -822,8 +1024,8 @@ def cmd_scope(args: argparse.Namespace) -> int:
822
1024
 
823
1025
  Fails SAFE. An empty or unreadable file list means we could not prove the
824
1026
  score is unchanged, so we say `true` and do the work. The expensive outcome
825
- is a wasted 26 minutes; the cheap-looking one is a gate that silently stops
826
- gating.
1027
+ is one wasted shard — ~28 minutes at the committed :data:`SHARDS` — and the
1028
+ cheap-looking one is a gate that silently stops gating.
827
1029
  """
828
1030
  if args.changed == "-":
829
1031
  changed = sys.stdin.read().splitlines()
@@ -1257,6 +1459,11 @@ def main() -> int:
1257
1459
  p.add_argument("--shards", type=int, required=True)
1258
1460
  p.add_argument("--index", type=int)
1259
1461
  p.add_argument("--explain", action="store_true", help="print the whole split instead")
1462
+ p.add_argument("--timeout-minutes", type=int,
1463
+ help="ci.yml's per-shard ceiling; with --explain, exit 1 "
1464
+ "when the slowest shard's predicted tail reaches it "
1465
+ "(requires --explain — the --index path's stdout is "
1466
+ "captured into mutmut's argv and must stay patterns)")
1260
1467
  p.set_defaults(func=cmd_plan)
1261
1468
 
1262
1469
  m = sub.add_parser("merge", help="merge per-shard .meta results for the gate")
@@ -1282,7 +1489,7 @@ def main() -> int:
1282
1489
  d = sub.add_parser("drift", help="is the committed balance hint worth replacing?")
1283
1490
  d.add_argument("--candidate", required=True,
1284
1491
  help="a freshly measured mutation_weights.json to compare against")
1285
- d.add_argument("--shards", type=int, default=6)
1492
+ d.add_argument("--shards", type=int, default=SHARDS)
1286
1493
  d.add_argument("--threshold", type=float, default=DRIFT_THRESHOLD,
1287
1494
  help="slowest-shard cost over the measured best, above which "
1288
1495
  "a refresh is worth a pull request (default: %(default)s)")