boost-skill-cli 1.2.165__tar.gz → 1.2.167__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 (1132) hide show
  1. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/journal.py +1 -1
  4. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  5. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/SOURCES.txt +3 -1
  6. boost_skill_cli-1.2.167/docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md +57 -0
  7. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md +44 -24
  8. boost_skill_cli-1.2.167/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +49 -0
  9. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap.html +106 -75
  10. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_workspace_scope.py +5 -3
  11. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_canary_deps.py +2 -2
  12. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_baseline.py +7 -5
  13. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_corpus.py +1 -1
  14. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gemini_agent_sanitize.py +3 -2
  15. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_journal.py +32 -1
  16. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mutation_shards.py +51 -36
  17. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mutation_subfile_shards.py +28 -21
  18. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mutation_weights_drift.py +1 -1
  19. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shards.py +1 -1
  20. boost_skill_cli-1.2.167/tests/unit/test_text_io_names_its_encoding.py +496 -0
  21. boost_skill_cli-1.2.165/tests/unit/test_mutation_shards_names_its_encoding.py +0 -296
  22. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.gitattributes +0 -0
  23. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.gitignore +0 -0
  24. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.gitleaks.toml +0 -0
  25. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.htmlvalidate.json +0 -0
  26. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.lighthouserc.json +0 -0
  27. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.lycheeignore +0 -0
  28. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.markdownlint-cli2.jsonc +0 -0
  29. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.pre-commit-config.yaml +0 -0
  30. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.stylelintrc.json +0 -0
  31. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.vale/styles/boost/AIWriting.yml +0 -0
  32. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.vale/styles/boost/Terminology.yml +0 -0
  33. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  34. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/.vale.ini +0 -0
  35. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/CLAUDE.md +0 -0
  36. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/CODE_OF_CONDUCT.md +0 -0
  37. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/CONTRIBUTING.md +0 -0
  38. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/DCO +0 -0
  39. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/GOVERNANCE.md +0 -0
  40. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/LICENSE +0 -0
  41. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/MAINTAINERS.md +0 -0
  42. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/MANIFEST.in +0 -0
  43. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/Makefile +0 -0
  44. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/README.md +0 -0
  45. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/SECURITY.md +0 -0
  46. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/SUPPORT.md +0 -0
  47. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost +0 -0
  48. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/__init__.py +0 -0
  49. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/__main__.py +0 -0
  50. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/cli.py +0 -0
  51. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/cliparse.py +0 -0
  52. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/__init__.py +0 -0
  53. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/_common.py +0 -0
  54. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/bmad.py +0 -0
  55. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/configuration.py +0 -0
  56. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/discovery.py +0 -0
  57. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/hooks.py +0 -0
  58. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/info.py +0 -0
  59. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/intelligence.py +0 -0
  60. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/pkg.py +0 -0
  61. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/quality.py +0 -0
  62. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/quickstart.py +0 -0
  63. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/run.py +0 -0
  64. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/safety.py +0 -0
  65. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/taps.py +0 -0
  66. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/commands/team.py +0 -0
  67. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/__init__.py +0 -0
  68. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/adapters.py +0 -0
  69. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/agents.py +0 -0
  70. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/ai.py +0 -0
  71. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/aihost.py +0 -0
  72. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/archive.py +0 -0
  73. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/bmad.py +0 -0
  74. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/bootstrap.py +0 -0
  75. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/browse.py +0 -0
  76. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/builtin.py +0 -0
  77. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/capabilities.py +0 -0
  78. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/catalog.py +0 -0
  79. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/catalogbundle.py +0 -0
  80. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/chat.py +0 -0
  81. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/claude_settings.py +0 -0
  82. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/cohort.py +0 -0
  83. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/compact.py +0 -0
  84. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/complete.py +0 -0
  85. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/config.py +0 -0
  86. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/dense.py +0 -0
  87. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/deps.py +0 -0
  88. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/discovery.py +0 -0
  89. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/ed25519.py +0 -0
  90. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/embed.py +0 -0
  91. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/faithfulness.py +0 -0
  92. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/frontmatter.py +0 -0
  93. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/gitutil.py +0 -0
  94. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/hookhost.py +0 -0
  95. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/imperative.py +0 -0
  96. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/injectscan.py +0 -0
  97. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/installscan.py +0 -0
  98. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/integrity.py +0 -0
  99. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/jsonstate.py +0 -0
  100. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/localembed.py +0 -0
  101. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/lockfile.py +0 -0
  102. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/logs.py +0 -0
  103. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/mcp.py +0 -0
  104. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/mcpdecl.py +0 -0
  105. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/mcphost.py +0 -0
  106. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/minisign.py +0 -0
  107. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/nethttp.py +0 -0
  108. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/output.py +0 -0
  109. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/paths.py +0 -0
  110. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/policy.py +0 -0
  111. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/prereq.py +0 -0
  112. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/projectlock.py +0 -0
  113. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/provenance.py +0 -0
  114. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/rag.py +0 -0
  115. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/registry.py +0 -0
  116. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/report.py +0 -0
  117. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/resolve.py +0 -0
  118. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/rules.py +0 -0
  119. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/scopes.py +0 -0
  120. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/secretscan.py +0 -0
  121. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/selfupdate.py +0 -0
  122. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/serve.py +0 -0
  123. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/shards.py +0 -0
  124. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/stackprobe.py +0 -0
  125. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/staleness.py +0 -0
  126. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/store.py +0 -0
  127. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/trustaudit.py +0 -0
  128. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/typedvalue.py +0 -0
  129. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/typosquat.py +0 -0
  130. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/updatediff.py +0 -0
  131. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/util.py +0 -0
  132. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/core/workflows.py +0 -0
  133. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/data/registries.json +0 -0
  134. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/data/rules/boost-first.mdc +0 -0
  135. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/errors.py +0 -0
  136. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_cli/spin.py +0 -0
  137. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/__init__.py +0 -0
  138. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/_compat.py +0 -0
  139. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/graph.py +0 -0
  140. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/loader.py +0 -0
  141. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/py.typed +0 -0
  142. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_langchain/retriever.py +0 -0
  143. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  144. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  145. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/requires.txt +0 -0
  146. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/boost_skill_cli.egg-info/top_level.txt +0 -0
  147. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/codecov.yml +0 -0
  148. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/DEBUGGING.md +0 -0
  149. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/adapters.html +0 -0
  150. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/architecture/README.md +0 -0
  151. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/architecture/c4-components-core.md +0 -0
  152. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/architecture/c4-containers.md +0 -0
  153. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/architecture/c4-context.md +0 -0
  154. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/architecture/c4-dynamic-install.md +0 -0
  155. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/bmad.md +0 -0
  156. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/distill.gif +0 -0
  157. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/doctor.gif +0 -0
  158. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/explain.gif +0 -0
  159. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/hooks.gif +0 -0
  160. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/install.gif +0 -0
  161. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/pulse.gif +0 -0
  162. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/search.gif +0 -0
  163. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/gifs/tap.gif +0 -0
  164. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/distill.tape +0 -0
  165. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/doctor.tape +0 -0
  166. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/explain.tape +0 -0
  167. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/hooks.tape +0 -0
  168. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/install.tape +0 -0
  169. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/pulse.tape +0 -0
  170. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/search.tape +0 -0
  171. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel/tapes/tap.tape +0 -0
  172. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/carousel.html +0 -0
  173. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/chat.html +0 -0
  174. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/code-review.md +0 -0
  175. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/commands.html +0 -0
  176. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/commit-audit.md +0 -0
  177. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/demo-index.json +0 -0
  178. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/demo.gif +0 -0
  179. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/demo.html +0 -0
  180. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/demo.tape +0 -0
  181. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/dependencies.md +0 -0
  182. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/design-roadmap.html +0 -0
  183. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/eval-latest.json +0 -0
  184. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/eval.html +0 -0
  185. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/index.html +0 -0
  186. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/langchain.html +0 -0
  187. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/mcp-hub.html +0 -0
  188. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/openssf-badge.md +0 -0
  189. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/openssf-playbook.md +0 -0
  190. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/rag-architecture.md +0 -0
  191. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D01.md +0 -0
  192. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D02.md +0 -0
  193. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D03.md +0 -0
  194. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D04.md +0 -0
  195. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D05.md +0 -0
  196. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D06.md +0 -0
  197. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D07.md +0 -0
  198. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D08.md +0 -0
  199. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D09.md +0 -0
  200. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D10.md +0 -0
  201. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D11.md +0 -0
  202. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D12.md +0 -0
  203. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D13.md +0 -0
  204. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D14.md +0 -0
  205. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D15.md +0 -0
  206. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D16.md +0 -0
  207. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D17.md +0 -0
  208. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D18.md +0 -0
  209. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D19.md +0 -0
  210. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D20.md +0 -0
  211. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D21.md +0 -0
  212. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D22.md +0 -0
  213. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D23.md +0 -0
  214. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D24.md +0 -0
  215. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D25.md +0 -0
  216. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D26.md +0 -0
  217. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/BOOST-D27.md +0 -0
  218. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  219. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  220. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  221. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  222. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  223. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  224. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  225. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  226. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  227. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  228. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  229. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  230. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/an-item-materialized-nowhere-reads-ok-in-verify-health-drift.md +0 -0
  231. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  232. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  233. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  234. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  235. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  236. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  237. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  238. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-attest-findings.md +0 -0
  239. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-audit-findings.md +0 -0
  240. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  241. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-browse-findings.md +0 -0
  242. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  243. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  244. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  245. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  246. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-chat-findings.md +0 -0
  247. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  248. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  249. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  250. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-completions-findings.md +0 -0
  251. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-config-findings.md +0 -0
  252. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  253. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-context-findings.md +0 -0
  254. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  255. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  256. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-create-findings.md +0 -0
  257. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  258. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-deps-findings.md +0 -0
  259. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-discover-findings.md +0 -0
  260. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  261. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  262. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-drift-findings.md +0 -0
  263. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  264. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-edit-findings.md +0 -0
  265. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  266. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-explain-findings.md +0 -0
  267. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-export-findings.md +0 -0
  268. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  269. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  270. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  271. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  272. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  273. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-health-findings.md +0 -0
  274. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  275. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  276. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-import-findings.md +0 -0
  277. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-index-findings.md +0 -0
  278. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  279. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  280. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-install-findings.md +0 -0
  281. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  282. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  283. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-lint-findings.md +0 -0
  284. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-log-findings.md +0 -0
  285. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  286. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  287. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  288. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  289. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  290. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  291. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  292. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  293. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  294. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  295. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  296. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-policy-findings.md +0 -0
  297. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-preview-findings.md +0 -0
  298. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-profile-findings.md +0 -0
  299. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  300. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  301. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  302. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  303. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  304. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  305. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  306. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  307. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  308. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-replay-findings.md +0 -0
  309. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-root-findings.md +0 -0
  310. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  311. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-run-findings.md +0 -0
  312. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  313. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-search-findings.md +0 -0
  314. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  315. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  316. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  317. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  318. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  319. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  320. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  321. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  322. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-sync-findings.md +0 -0
  323. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-tag-findings.md +0 -0
  324. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  325. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-tap-findings.md +0 -0
  326. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-taps-findings.md +0 -0
  327. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  328. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-test-findings.md +0 -0
  329. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-trust-findings.md +0 -0
  330. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  331. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  332. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-untap-findings.md +0 -0
  333. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-update-findings.md +0 -0
  334. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  335. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-verify-findings.md +0 -0
  336. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/audit-who-findings.md +0 -0
  337. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  338. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  339. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  340. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  341. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  342. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  343. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  344. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  345. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  346. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  347. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  348. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  349. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  350. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  351. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  352. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  353. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/boost-first-rule.md +0 -0
  354. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  355. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  356. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/branch-current-gate.md +0 -0
  357. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  358. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  359. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  360. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  361. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  362. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  363. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  364. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md +0 -0
  365. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  366. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  367. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  368. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  369. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  370. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  371. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  372. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  373. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  374. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  375. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  376. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  377. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  378. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cli-command-audit.md +0 -0
  379. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  380. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  381. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  382. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  383. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  384. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  385. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/command-carousel-page.md +0 -0
  386. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  387. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  388. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  389. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  390. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  391. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/concurrency-probe-measured-a-race-not-the-pool.md +0 -0
  392. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  393. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  394. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  395. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  396. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  397. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  398. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  399. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  400. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  401. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  402. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  403. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  404. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  405. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  406. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  407. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  408. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
  409. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  410. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  411. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  412. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  413. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  414. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  415. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  416. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  417. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  418. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  419. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  420. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  421. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  422. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  423. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  424. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  425. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  426. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  427. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  428. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  429. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  430. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  431. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  432. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  433. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  434. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  435. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  436. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  437. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  438. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  439. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  440. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  441. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  442. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  443. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  444. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  445. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  446. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  447. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  448. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  449. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  450. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/floors-job-never-installed-setuptools.md +0 -0
  451. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  452. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  453. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  454. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  455. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  456. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  457. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  458. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  459. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  460. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  461. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  462. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  463. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  464. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/github-community-health-files.md +0 -0
  465. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  466. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  467. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  468. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  469. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  470. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  471. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  472. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  473. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  474. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  475. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  476. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  477. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  478. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  479. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  480. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  481. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  482. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  483. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  484. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  485. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  486. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  487. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  488. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/is-dir-follows-a-symlink-at-eleven-rmtree-call-sites.md +0 -0
  489. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  490. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  491. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  492. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  493. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  494. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  495. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  496. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  497. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  498. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  499. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  500. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  501. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  502. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  503. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  504. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  505. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  506. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  507. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  508. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  509. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  510. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  511. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  512. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  513. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  514. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  515. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  516. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  517. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  518. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  519. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  520. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  521. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  522. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  523. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  524. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  525. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  526. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  527. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  528. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  529. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  530. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  531. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  532. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  533. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  534. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  535. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  536. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  537. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  538. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  539. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  540. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  541. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  542. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  543. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  544. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  545. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  546. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  547. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  548. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  549. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  550. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  551. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-shard-balance-hints-are-a-release-behind.md +0 -0
  552. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  553. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  554. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  555. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  556. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  557. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  558. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  559. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  560. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  561. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  562. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  563. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  564. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  565. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  566. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  567. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/openssf-playbook.md +0 -0
  568. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/openssf-silver.md +0 -0
  569. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  570. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  571. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  572. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  573. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  574. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  575. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  576. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  577. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  578. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  579. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  580. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  581. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  582. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  583. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/project-scope-in-an-unmarked-tree-does-not-walk-up.md +0 -0
  584. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  585. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/project-uninstall-deletes-any-in-repo-directory-the-lock-names.md +0 -0
  586. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  587. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  588. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  589. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  590. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  591. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  592. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  593. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  594. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  595. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  596. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  597. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  598. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  599. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  600. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  601. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  602. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  603. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  604. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  605. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  606. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  607. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  608. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  609. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  610. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  611. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  612. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  613. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  614. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  615. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  616. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  617. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  618. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/relicence-apache-2.md +0 -0
  619. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  620. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  621. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  622. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  623. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  624. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  625. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  626. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  627. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  628. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  629. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  630. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  631. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  632. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/rule-and-workflow-rows-carry-a-scope-nothing-but-list-local-reads.md +0 -0
  633. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  634. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  635. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  636. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  637. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  638. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  639. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  640. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  641. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  642. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  643. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  644. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  645. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  646. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  647. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  648. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  649. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  650. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  651. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  652. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  653. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  654. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  655. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  656. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  657. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  658. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  659. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  660. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  661. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  662. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  663. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  664. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  665. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  666. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  667. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  668. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  669. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  670. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  671. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  672. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  673. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  674. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  675. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  676. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  677. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  678. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  679. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  680. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  681. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  682. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  683. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  684. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  685. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  686. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  687. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  688. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  689. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  690. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  691. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  692. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  693. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  694. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  695. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  696. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  697. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  698. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  699. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  700. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  701. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  702. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  703. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  704. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  705. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  706. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  707. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  708. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  709. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/uninstall-local-cannot-remove-a-rule-or-workflow-list-local-shows.md +0 -0
  710. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  711. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  712. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  713. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  714. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  715. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  716. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  717. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  718. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  719. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  720. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/util-rmtree-chmods-a-symlink-target-outside-the-tree.md +0 -0
  721. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  722. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  723. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  724. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  725. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  726. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  727. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  728. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  729. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  730. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/workspace-scope-install.md +0 -0
  731. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/wrap-width-judged-by-stdout.md +0 -0
  732. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/zip-strict-audit.md +0 -0
  733. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  734. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  735. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/security-design.md +0 -0
  736. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/semantic-search.md +0 -0
  737. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  738. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/verifying-releases.md +0 -0
  739. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/meta.md +0 -0
  740. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/openvex.json +0 -0
  741. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  742. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  743. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  744. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  745. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/eslint.config.mjs +0 -0
  746. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/README.md +0 -0
  747. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/__init__.py +0 -0
  748. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/baseline.json +0 -0
  749. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/faithfulness.py +0 -0
  750. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/golden_set.json +0 -0
  751. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/make_corpus.py +0 -0
  752. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/make_golden.py +0 -0
  753. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/metrics.py +0 -0
  754. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/publish_golden_dataset.py +0 -0
  755. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/evals/run_evals.py +0 -0
  756. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/examples/README.md +0 -0
  757. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/examples/adapt-demo.sh +0 -0
  758. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/examples/boost-run-prototype.sh +0 -0
  759. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/index.html +0 -0
  760. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/noxfile.py +0 -0
  761. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/pyproject.toml +0 -0
  762. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/coverage-tools.in +0 -0
  763. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/coverage-tools.txt +0 -0
  764. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/lint-tools.in +0 -0
  765. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/lint-tools.txt +0 -0
  766. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/mutation-tools.in +0 -0
  767. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/mutation-tools.txt +0 -0
  768. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/platform-pins.lock +0 -0
  769. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/release-tools.in +0 -0
  770. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/release-tools.txt +0 -0
  771. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/test-tools.in +0 -0
  772. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/requirements/test-tools.txt +0 -0
  773. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/a11y_check.py +0 -0
  774. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/add_spdx_headers.py +0 -0
  775. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/bench_cli.sh +0 -0
  776. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_command_reference.py +0 -0
  777. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_demo_index.py +0 -0
  778. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_registries.py +0 -0
  779. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_roadmap.py +0 -0
  780. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_scale_corpus.py +0 -0
  781. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/build_vex.py +0 -0
  782. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_anchors.py +0 -0
  783. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_branch_current.py +0 -0
  784. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_dco.py +0 -0
  785. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_licenses.py +0 -0
  786. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_reproducible.py +0 -0
  787. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/check_required_checks.py +0 -0
  788. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/ensure_eval_corpus.sh +0 -0
  789. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_corpus.py +0 -0
  790. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_explain.py +0 -0
  791. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_gate.py +0 -0
  792. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_recommend.py +0 -0
  793. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_retrieval.py +0 -0
  794. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_stats_summary.py +0 -0
  795. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/eval_tools.py +0 -0
  796. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/import_budget.py +0 -0
  797. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/lock_toolchain.py +0 -0
  798. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/measure_near_duplicate_bound.py +0 -0
  799. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/measure_registry.py +0 -0
  800. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/mutation_gate.py +0 -0
  801. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/mutation_shards.py +0 -0
  802. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/mutation_weights.json +0 -0
  803. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/normalize_sdist.py +0 -0
  804. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/page_budget.py +0 -0
  805. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/perf_gate.py +0 -0
  806. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/post_deploy_smoke.py +0 -0
  807. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/publish_eval_json.py +0 -0
  808. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/publish_shards.py +0 -0
  809. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/release_guard.py +0 -0
  810. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/release_preflight.py +0 -0
  811. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/serve_docs.py +0 -0
  812. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/scripts/shard_plan.py +0 -0
  813. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/setup.cfg +0 -0
  814. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/sonar-project.properties +0 -0
  815. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/style/README.md +0 -0
  816. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/style/boost.css +0 -0
  817. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/style/boost.js +0 -0
  818. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/style/demo.html +0 -0
  819. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/adapt.feature +0 -0
  820. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/browse.feature +0 -0
  821. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/count.feature +0 -0
  822. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/discover.feature +0 -0
  823. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/doctor.feature +0 -0
  824. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/environment.py +0 -0
  825. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/explain.feature +0 -0
  826. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/index.feature +0 -0
  827. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/install.feature +0 -0
  828. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/list.feature +0 -0
  829. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/mcp.feature +0 -0
  830. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/search.feature +0 -0
  831. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/steps/cli_steps.py +0 -0
  832. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/steps/discovery_steps.py +0 -0
  833. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/steps/mcp_steps.py +0 -0
  834. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/bdd/features/steps/quality_steps.py +0 -0
  835. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/conftest.py +0 -0
  836. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/baseline.json +0 -0
  837. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/explain.jsonl +0 -0
  838. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  839. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/golden-natural.jsonl +0 -0
  840. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/golden.jsonl +0 -0
  841. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/recommend.jsonl +0 -0
  842. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/taps-scale.txt +0 -0
  843. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/taps.txt +0 -0
  844. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/eval/tool_calls.jsonl +0 -0
  845. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  846. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_bmad_all_hosts.py +0 -0
  847. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_bmad_personas_scope.py +0 -0
  848. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_capabilities_policy.py +0 -0
  849. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_adapt.py +0 -0
  850. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_bmad.py +0 -0
  851. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_catalog.py +0 -0
  852. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_chat.py +0 -0
  853. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_configuration.py +0 -0
  854. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_discovery.py +0 -0
  855. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_hooks.py +0 -0
  856. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_hooks_codex.py +0 -0
  857. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_hooks_gemini.py +0 -0
  858. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_identifier_columns.py +0 -0
  859. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_info.py +0 -0
  860. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_intelligence.py +0 -0
  861. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_json_reports.py +0 -0
  862. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_pane_width.py +0 -0
  863. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_pkg.py +0 -0
  864. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_quality.py +0 -0
  865. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_quickstart.py +0 -0
  866. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_tap_pins.py +0 -0
  867. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_taps.py +0 -0
  868. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_cli_team.py +0 -0
  869. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  870. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  871. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_everyday_loop.py +0 -0
  872. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_integrity_enforce.py +0 -0
  873. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_keyed_no_store_hint.py +0 -0
  874. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_kind_conformance.py +0 -0
  875. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_property_parsers.py +0 -0
  876. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_recommend_because_is_true.py +0 -0
  877. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  878. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_reports_match_reality.py +0 -0
  879. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_run.py +0 -0
  880. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/functional/test_tap_signing.py +0 -0
  881. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/README.md +0 -0
  882. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  883. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  884. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  885. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  886. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  887. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  888. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  889. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  890. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  891. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  892. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  893. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  894. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  895. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  896. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  897. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  898. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  899. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  900. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  901. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  902. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  903. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  904. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  905. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/fuzz_frontmatter.py +0 -0
  906. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/fuzz/fuzz_registry.py +0 -0
  907. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/langchain/conftest.py +0 -0
  908. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/langchain/test_graph.py +0 -0
  909. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/langchain/test_loader.py +0 -0
  910. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/langchain/test_retriever.py +0 -0
  911. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/make_fixture.py +0 -0
  912. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/perf/test_benchmarks.py +0 -0
  913. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/smoke.sh +0 -0
  914. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  915. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_a11y_check.py +0 -0
  916. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_action_pin_lockstep.py +0 -0
  917. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_adapters.py +0 -0
  918. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_adapters_multi.py +0 -0
  919. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_adapters_runner.py +0 -0
  920. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_agents.py +0 -0
  921. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_ai.py +0 -0
  922. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_aihost.py +0 -0
  923. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_archive.py +0 -0
  924. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_bmad_core.py +0 -0
  925. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_boost_first_offer.py +0 -0
  926. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_bootstrap.py +0 -0
  927. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_bot_pr_dco.py +0 -0
  928. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_branch_current.py +0 -0
  929. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_browse.py +0 -0
  930. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_builtin.py +0 -0
  931. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_capabilities.py +0 -0
  932. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_catalog.py +0 -0
  933. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_catalog_distinct.py +0 -0
  934. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_catalog_keyword_words.py +0 -0
  935. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_catalogbundle.py +0 -0
  936. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_chat.py +0 -0
  937. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_check_anchors.py +0 -0
  938. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_check_dco.py +0 -0
  939. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_check_licenses.py +0 -0
  940. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_check_reproducible.py +0 -0
  941. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_claude_settings.py +0 -0
  942. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_claude_settings_codex.py +0 -0
  943. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_clean_internal_cache.py +0 -0
  944. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_cli_update_shards.py +0 -0
  945. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_cliparse.py +0 -0
  946. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_codeql_analysis_key.py +0 -0
  947. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_cohort.py +0 -0
  948. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_command_reference_fresh.py +0 -0
  949. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_community_health_files.py +0 -0
  950. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_compact.py +0 -0
  951. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_complete.py +0 -0
  952. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_complete_rc_block.py +0 -0
  953. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_config.py +0 -0
  954. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_content_dedupe.py +0 -0
  955. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_content_identity.py +0 -0
  956. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_corpus_prose.py +0 -0
  957. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  958. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_coverage_gate_prose.py +0 -0
  959. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_crash_redaction.py +0 -0
  960. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dedup_trust.py +0 -0
  961. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_demo_index.py +0 -0
  962. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense.py +0 -0
  963. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  964. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_embed_dedupe.py +0 -0
  965. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_entry_reuse.py +0 -0
  966. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_entry_vectors.py +0 -0
  967. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_fallback.py +0 -0
  968. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_fix_hint.py +0 -0
  969. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_model_unavailable.py +0 -0
  970. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_progress.py +0 -0
  971. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_quantized.py +0 -0
  972. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_ready_order.py +0 -0
  973. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_shard_real_schema.py +0 -0
  974. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  975. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_shards.py +0 -0
  976. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_status.py +0 -0
  977. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_status_cheap.py +0 -0
  978. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dense_vector_dedupe.py +0 -0
  979. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dependabot_config.py +0 -0
  980. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_deps.py +0 -0
  981. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_discovery.py +0 -0
  982. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_distill_merge.py +0 -0
  983. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_docs_pages_linked.py +0 -0
  984. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_docsite_chrome.py +0 -0
  985. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_doctor_output_polish.py +0 -0
  986. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_drift_hint.py +0 -0
  987. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_dry_run_parity.py +0 -0
  988. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_ed25519.py +0 -0
  989. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_embed.py +0 -0
  990. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_embed_local.py +0 -0
  991. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_embed_outranking.py +0 -0
  992. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_embed_truncated_response.py +0 -0
  993. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_entry_key.py +0 -0
  994. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_errors_and_cli_table.py +0 -0
  995. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_corpus_bodies.py +0 -0
  996. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_faithfulness.py +0 -0
  997. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_gate.py +0 -0
  998. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_grading.py +0 -0
  999. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_metrics.py +0 -0
  1000. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_query_sets.py +0 -0
  1001. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_stats_summary.py +0 -0
  1002. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_tools.py +0 -0
  1003. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_eval_tools_probe.py +0 -0
  1004. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  1005. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_faithfulness.py +0 -0
  1006. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_first_run_pointer.py +0 -0
  1007. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_frontmatter.py +0 -0
  1008. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_fuzz_targets.py +0 -0
  1009. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gitleaks_config.py +0 -0
  1010. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gitutil.py +0 -0
  1011. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gitutil_lfs.py +0 -0
  1012. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gitutil_sparse.py +0 -0
  1013. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_gstack_coexistence.py +0 -0
  1014. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_help_contracts.py +0 -0
  1015. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_hook_settings_hosts.py +0 -0
  1016. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_hookhost.py +0 -0
  1017. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_hookhost_codex.py +0 -0
  1018. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_imperative.py +0 -0
  1019. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_import_budget.py +0 -0
  1020. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_injectscan.py +0 -0
  1021. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_install_permission_error.py +0 -0
  1022. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_installscan.py +0 -0
  1023. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_integrity.py +0 -0
  1024. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_jsonstate.py +0 -0
  1025. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_langchain_packaging.py +0 -0
  1026. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_launcher_python_floor.py +0 -0
  1027. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_lighthouse_budgets.py +0 -0
  1028. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_link_ownership.py +0 -0
  1029. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_localembed.py +0 -0
  1030. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_localembed_e2e.py +0 -0
  1031. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_lockfile.py +0 -0
  1032. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_logs.py +0 -0
  1033. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_marketing_counts.py +0 -0
  1034. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcp.py +0 -0
  1035. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1036. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcp_install_scan.py +0 -0
  1037. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcp_read.py +0 -0
  1038. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcpdecl.py +0 -0
  1039. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mcphost.py +0 -0
  1040. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_measure_registry.py +0 -0
  1041. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_minisign.py +0 -0
  1042. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mutation_hardening.py +0 -0
  1043. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_mutmut_source_paths.py +0 -0
  1044. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1045. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_nethttp.py +0 -0
  1046. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_normalize_sdist.py +0 -0
  1047. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_output.py +0 -0
  1048. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_output_table_drop.py +0 -0
  1049. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_output_table_whole.py +0 -0
  1050. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_page_budget.py +0 -0
  1051. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_paths.py +0 -0
  1052. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_perf_gate.py +0 -0
  1053. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_pkg_confusions.py +0 -0
  1054. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_pkg_injection.py +0 -0
  1055. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_pkg_secrets.py +0 -0
  1056. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_platform_pins.py +0 -0
  1057. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_policy.py +0 -0
  1058. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_post_deploy_smoke.py +0 -0
  1059. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_prereq.py +0 -0
  1060. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1061. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_projectlock.py +0 -0
  1062. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_provenance.py +0 -0
  1063. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_publish_golden_dataset.py +0 -0
  1064. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_quickstart_readiness.py +0 -0
  1065. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rag.py +0 -0
  1066. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rag_completeness.py +0 -0
  1067. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rag_extra_hint.py +0 -0
  1068. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rag_fastpath.py +0 -0
  1069. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rag_fusion.py +0 -0
  1070. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_read_text_arg.py +0 -0
  1071. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_registries_fresh.py +0 -0
  1072. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_registry.py +0 -0
  1073. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_registry_categories.py +0 -0
  1074. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_registry_control_chars.py +0 -0
  1075. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_registry_parallel.py +0 -0
  1076. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_release_guard.py +0 -0
  1077. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_release_preflight.py +0 -0
  1078. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_repo_root_guard.py +0 -0
  1079. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_report.py +0 -0
  1080. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_required_checks.py +0 -0
  1081. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rerank_cache.py +0 -0
  1082. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_resolve.py +0 -0
  1083. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1084. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_roadmap_fresh.py +0 -0
  1085. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_rules.py +0 -0
  1086. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1087. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_scale_corpus.py +0 -0
  1088. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_schedule_plist.py +0 -0
  1089. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_scopes.py +0 -0
  1090. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_sdist_contents.py +0 -0
  1091. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_secretscan.py +0 -0
  1092. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_selfupdate.py +0 -0
  1093. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_serve.py +0 -0
  1094. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_serve_docs.py +0 -0
  1095. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shard_plan.py +0 -0
  1096. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shards_carry_forward.py +0 -0
  1097. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shards_incremental.py +0 -0
  1098. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shards_ingest.py +0 -0
  1099. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_shards_matrix.py +0 -0
  1100. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1101. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_spdx_headers.py +0 -0
  1102. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_spin.py +0 -0
  1103. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_stackprobe.py +0 -0
  1104. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_staleness.py +0 -0
  1105. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_store.py +0 -0
  1106. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_store_materialize.py +0 -0
  1107. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_sync_blocked_links.py +0 -0
  1108. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_sync_lost_lock.py +0 -0
  1109. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1110. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_tap_pins.py +0 -0
  1111. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_token_parity.py +0 -0
  1112. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_toolchain_lock.py +0 -0
  1113. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_trustaudit.py +0 -0
  1114. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_typedvalue.py +0 -0
  1115. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_typosquat.py +0 -0
  1116. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_updatediff.py +0 -0
  1117. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_upstream_path.py +0 -0
  1118. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_util.py +0 -0
  1119. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_version.py +0 -0
  1120. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_version_tags.py +0 -0
  1121. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_vex.py +0 -0
  1122. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_visual_harness_capture.py +0 -0
  1123. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_visual_harness_flags.py +0 -0
  1124. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_workflow_concurrency.py +0 -0
  1125. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1126. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1127. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_workflow_timeouts.py +0 -0
  1128. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_workflows.py +0 -0
  1129. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1130. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/visual/a11y_check.mjs +0 -0
  1131. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/tests/visual/console_check.mjs +0 -0
  1132. {boost_skill_cli-1.2.165 → boost_skill_cli-1.2.167}/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.165
3
+ Version: 1.2.167
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.165'
22
- __version_tuple__ = version_tuple = (1, 2, 165)
21
+ __version__ = version = '1.2.167'
22
+ __version_tuple__ = version_tuple = (1, 2, 167)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -52,7 +52,7 @@ def log(action: str, subject: str = "", **fields) -> None:
52
52
  p = paths.pulse_path()
53
53
  try:
54
54
  p.parent.mkdir(parents=True, exist_ok=True)
55
- with p.open("a") as f:
55
+ with p.open("a", encoding="utf-8") as f:
56
56
  f.write(json.dumps(event) + "\n")
57
57
  except OSError as e:
58
58
  if not _WARNED_UNSAVED:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.165
3
+ Version: 1.2.167
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -655,6 +655,7 @@ docs/roadmap/items/serve-is-a-searchable-catalogue.md
655
655
  docs/roadmap/items/serve-py-traversal-guards-untested.md
656
656
  docs/roadmap/items/shard-refresh-skips-processed-commits.md
657
657
  docs/roadmap/items/shard-runs-reembed-everything-weekly.md
658
+ docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md
658
659
  docs/roadmap/items/shards-pipeline-never-produced-a-shard.md
659
660
  docs/roadmap/items/shareable-catalogue-bundle.md
660
661
  docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md
@@ -723,6 +724,7 @@ docs/roadmap/items/workflow-linting-actionlint.md
723
724
  docs/roadmap/items/workflow-sast-zizmor.md
724
725
  docs/roadmap/items/workspace-scope-install.md
725
726
  docs/roadmap/items/wrap-width-judged-by-stdout.md
727
+ docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md
726
728
  docs/roadmap/items/zip-strict-audit.md
727
729
  docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md
728
730
  docs/roadmap/items/zizmor-pin-is-a-yanked-release.md
@@ -1031,7 +1033,6 @@ tests/unit/test_measure_registry.py
1031
1033
  tests/unit/test_minisign.py
1032
1034
  tests/unit/test_mutation_hardening.py
1033
1035
  tests/unit/test_mutation_shards.py
1034
- tests/unit/test_mutation_shards_names_its_encoding.py
1035
1036
  tests/unit/test_mutation_subfile_shards.py
1036
1037
  tests/unit/test_mutation_weights_drift.py
1037
1038
  tests/unit/test_mutmut_source_paths.py
@@ -1103,6 +1104,7 @@ tests/unit/test_sync_blocked_links.py
1103
1104
  tests/unit/test_sync_lost_lock.py
1104
1105
  tests/unit/test_sync_repairs_gutted_skill.py
1105
1106
  tests/unit/test_tap_pins.py
1107
+ tests/unit/test_text_io_names_its_encoding.py
1106
1108
  tests/unit/test_token_parity.py
1107
1109
  tests/unit/test_toolchain_lock.py
1108
1110
  tests/unit/test_trustaudit.py
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: shard-weights-do-not-predict-the-job-timeout
3
+ board: code
4
+ section: trust
5
+ status: planned
6
+ category: CI · Bug
7
+ complexity: M
8
+ impact: High
9
+ wow: 4
10
+ note: the pack is balanced to within 700ms of ideal and a shard still timed out at 75 min, cancelling a release
11
+ order: 364
12
+ owner:
13
+ pr:
14
+ title: "Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release"
15
+ ---
16
+ <b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
17
+ job's <code>timeout-minutes: 75</code> and was cancelled. The aggregate <code>mutation</code> job
18
+ then failed, the whole <code>ci</code> run concluded <code>cancelled</code> rather than
19
+ <code>failure</code>, and <code>publish.yml</code> &mdash; which gates on
20
+ <code>workflow_run.conclusion == 'success'</code> &mdash; skipped. <b>A merge to main silently did
21
+ not ship</b>, which is the exact failure mode the long comment above <code>ci.yml</code>'s
22
+ <code>concurrency:</code> block was written to prevent by a different route.
23
+
24
+ <b>The packer is not at fault, and that is the finding.</b>
25
+ <code>mutation_shards.py plan --shards 6 --explain</code> reports every shard within <b>700 ms</b>
26
+ of the ideal 6,884,259 ms &mdash; a balance of 0.01%. The same run measured 39, 27, 38, 36,
27
+ <b>76</b> and 65 minutes. Perfect balance against numbers that do not predict wall clock.
28
+
29
+ <b>The units are the tell.</b> Total weight is 41,305,555 ms over six shards, so the plan
30
+ predicts <b>114 minutes per shard</b> while shards finish in 27&ndash;76. The weights are
31
+ self-consistent ratios measured somewhere other than a CI runner, and ratios are all the
32
+ packer needs &mdash; but it means <b>nothing in the repo can answer "will a shard exceed the
33
+ cap?"</b>. <code>plan --explain</code> prints the speedup cap and the largest unit; it never
34
+ mentions <code>timeout-minutes</code>, and <code>grep</code> finds no comparison between the two
35
+ anywhere in <code>scripts/mutation_shards.py</code>.
36
+
37
+ <b>Run-to-run variance eats the margin.</b> The same tree, built twice: shard 4 took 66 min on
38
+ <code>5aaf8bc4</code> (the PR) and 76 min on <code>f196160d</code> (its merge commit); shard 5 went
39
+ 42 &rarr; 65. On <code>8c4a5094</code> shard 4 was 32. So the heaviest shard's observed range is
40
+ 32&ndash;76 minutes for identical work, and the cap is 75. Related and probably the same cause:
41
+ <code>mutation-shard (4)</code> on #1012 died at 15.1 minutes with exit 143 (SIGTERM), diagnosed
42
+ then as runner eviction.
43
+
44
+ <b>Why the open weights-refresh PR does not fix it.</b> #1014 re-measures and re-packs; under its
45
+ weights the plan is again balanced to within ~400 ms, and predicts 121 min/shard. Re-measuring a
46
+ quantity that was never in runner time produces a better-calibrated version of the same
47
+ unanswerable question.
48
+
49
+ <b>Shape of the work.</b> Three independent pieces, in increasing order of how much they fix:
50
+ calibrate the weights against observed job duration (the API has it per shard, per run) so the
51
+ plan is in minutes a human can compare to the cap; have <code>plan</code> fail, or at least warn,
52
+ when a packed shard's predicted time is within some margin of <code>timeout-minutes</code>; and
53
+ give the heaviest shard headroom &mdash; at eight shards the ideal drops by a quarter, and the
54
+ speedup cap is 6.0x only because <code>store.py</code> is split per function already, so more
55
+ shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
56
+ looks identical to a success from the release path's point of view, because
57
+ <code>publish.yml</code> only asks whether the conclusion was <code>success</code>.
@@ -2,16 +2,16 @@
2
2
  id: text-io-leaves-its-encoding-to-the-locale
3
3
  board: code
4
4
  section: compat
5
- status: planned
5
+ status: shipped
6
6
  category: Portability · Windows
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 2
10
- note: 73 reads and writes take the locale's encoding; 910 writes take its line ending
10
+ note: all 73 encoded; the guard is repo-wide over 414 files; the newline half is its own card
11
11
  order: 362
12
- owner:
13
- pr:
14
- title: "73 reads and writes leave the text encoding to the locale, and the Windows jobs are the only thing that notices"
12
+ owner: loop/text-io-encoding
13
+ pr: 1015
14
+ title: "73 reads and writes left the text encoding to the locale, and the Windows jobs were the only thing that noticed"
15
15
  ---
16
16
  <code>Path.read_text()</code>, <code>Path.write_text()</code> and <code>open()</code> in text mode use
17
17
  <code>locale.getencoding()</code> when no <code>encoding=</code> is given. On Linux and macOS that is UTF-8
@@ -52,21 +52,35 @@ have refused a valid measurement and said "not readable JSON".
52
52
  <b>preview</b> rule, so <code>ruff check --select PLW1514</code> without <code>--preview</code> checks
53
53
  nothing at all and prints "All checks passed" &mdash; indistinguishable from a clean tree, and a trap
54
54
  this card fell into once already. And with <code>--preview</code> it resolves the receiver
55
- syntactically: over <code>origin/main</code> it reports exactly <b>one</b> site,
56
- <code>scripts/mutation_shards.py:718</code>, because it sees <code>path.read_text()</code> where
57
- <code>path = Path(...)</code> is in view; it never saw the <code>md.read_text()</code> off a pytest
58
- <code>tmp_path</code> fixture that actually broke CI. #1012 fixed that one site, so on <code>main</code>
59
- after this merge the rule reports <b>zero</b> while the walker still reports 73 &mdash; which is the
60
- clearest statement of the gap there is. The sweep wants the AST walker in
61
- <code>tests/unit/test_mutation_shards_names_its_encoding.py</code>, whose <code>WATCHED</code> tuple is the
62
- list to grow &mdash; it already pins the two files #1012 owns, so the guard generalises by adding a path
63
- rather than by being rewritten.
55
+ <em>syntactically</em>, which over this repo means it sees almost nothing: run against the
56
+ pre-sweep tree it reports <b>0</b> sites to the walker's <b>73</b>. It flags
57
+ <code>p.read_text()</code> only where <code>p = Path(...)</code> is in view, and all 73 are a
58
+ <code>tmp_path / "x"</code> fixture, a chained call or a parameter &mdash; including the
59
+ <code>md.read_text()</code> that actually broke CI. 0 against 73 is the clearest statement of the gap
60
+ there is, and the reason the rule was not simply switched on. Turning it on also means turning
61
+ <code>preview</code> on in <code>pyproject.toml</code>, which changes how every other selected rule
62
+ behaves; one rule, for 0 of the 73, is not that trade.
64
63
 
65
- <b>Shape of the work.</b> Mechanical but not blind: each site needs a decision between
66
- <code>encoding="utf-8"</code> and <code>read_bytes()</code>/binary mode, and a handful read files boost did
67
- not write (a user's <code>CLAUDE.md</code>, a tapped repo's Markdown) where <code>errors="replace"</code> may
68
- be the honest answer rather than a crash. Land it per-directory so each PR stays reviewable, extending
69
- <code>WATCHED</code> as it goes.
64
+ <b>What shipped.</b> All 73 sites name <code>encoding="utf-8"</code>, and the guard
65
+ &mdash; renamed <code>tests/unit/test_text_io_names_its_encoding.py</code>, since it is no longer about
66
+ the shard planner &mdash; walks every root holding Python rather than a <code>WATCHED</code> list of two:
67
+ <code>boost_cli</code>, <code>boost_langchain</code>, <code>evals</code>, <code>scripts</code>,
68
+ <code>tests</code> and <code>noxfile.py</code>, <b>414</b> files. Its <code>EXEMPT</code> set is empty and
69
+ documented to stay empty: a call that should not be flagged is a bug in <code>_is_file_open</code> or
70
+ <code>_mode</code>, where fixing it covers every file, not an entry that mutes one. The
71
+ <code>./boost</code> launcher is the one deliberate omission &mdash; it is a bash shim that
72
+ <code>ast.parse</code> cannot read and that opens no files.
73
+
74
+ <b>The single <code>boost_cli</code> site was the interesting one.</b>
75
+ <code>journal.log</code> appended to the pulse feed with <code>p.open("a")</code> while
76
+ <code>journal.events</code> read it back with <code>encoding="utf-8"</code>. That asymmetry is latent
77
+ rather than live: <code>json.dumps</code> defaults to <code>ensure_ascii=True</code>, so every byte
78
+ written today is ASCII and cp1252 agrees with UTF-8 about all of them. What makes it worth fixing is
79
+ the reader's <code>errors="replace"</code>, which would turn the first byte they ever disagreed about
80
+ into U+FFFD without raising &mdash; a feed that silently loses a character rather than failing. A
81
+ round-trip test cannot show any of this on Linux, so the test watches the argument reaching
82
+ <code>Path.open</code> instead of the bytes on disk; dropping the keyword and misspelling the codec
83
+ both fail it.
70
84
 
71
85
  <b>The encoding is only half of what text mode decides.</b> It also translates <code>\n</code> to the
72
86
  platform separator on write, so a file written with <code>encoding="utf-8"</code> on a Windows runner
@@ -76,8 +90,14 @@ the encoding leaves every writer whose output is compared against a string, a ha
76
90
  still platform-dependent, so this card covers <code>newline="\n"</code> on writers as well &mdash;
77
91
  readers need nothing, since universal newlines already fold CRLF on the way in.
78
92
 
79
- That second sweep is <b>910</b> writes (857 tests, 32 <code>boost_cli</code>, 21 <code>scripts</code>),
80
- and unlike the encoding it should <em>not</em> be applied everywhere: a write whose bytes nobody
81
- compares is fine as it is. The ones that matter are writers whose output is read back and compared
82
- &mdash; against a string, a hash, a golden file, or the same report printed to a log. Scoping that
83
- subset is the first task of this card, not a mechanical pass.
93
+ That second sweep is <b>917</b> writes on the tree this change ships (858 <code>tests</code>, 32
94
+ <code>boost_cli</code>, 21 <code>scripts</code>, 6 <code>evals</code>; 916 on <code>origin/main</code>,
95
+ and the 910 this card first quoted was the same count taken before <code>evals</code> was in the walk)
96
+ and is <b>deliberately not in this change</b>, because unlike the encoding it
97
+ must <em>not</em> be applied everywhere: a write whose bytes nobody compares is fine as it is, so a
98
+ blanket pass would be 917 edits of which most are churn and none is a fix. Scoping the subset that
99
+ is read back and compared is work of its own, and it has its own card &mdash;
100
+ <code>writers-whose-bytes-are-compared-do-not-pin-their-newline</code>. The newline walker
101
+ (<code>unpinned_newline</code>) ships here beside the encoding one, still scoped to
102
+ <code>scripts/mutation_shards.py</code>, which is the one file whose writers are already known to be
103
+ byte-compared.
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: writers-whose-bytes-are-compared-do-not-pin-their-newline
3
+ board: code
4
+ section: compat
5
+ status: planned
6
+ category: Portability · Windows
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: 917 text writes take the platform line ending; only the compared ones are bugs
11
+ order: 363
12
+ owner:
13
+ pr:
14
+ title: "917 text writes leave the line ending to the platform, and only some of them are bugs"
15
+ ---
16
+ Text mode decides two things, and naming the encoding fixes one of them. It also translates
17
+ <code>\n</code> to the platform separator <em>on write</em>, so a file written with
18
+ <code>encoding="utf-8"</code> on a GitHub <b>Windows</b> runner still holds CRLF. The sibling card
19
+ <code>text-io-leaves-its-encoding-to-the-locale</code> closed the encoding half across 414 files; this
20
+ is the other half, and it is deliberately not the same kind of sweep.
21
+
22
+ <b>#1012 hit both, one after the other, and the first fix hid the second.</b> Naming the encoding
23
+ turned the three <code>tests (windows-latest, 3.1x)</code> jobs green on the assertion that had failed
24
+ &mdash; and the next run put them straight back to red on the line endings of the same line. Two
25
+ platform defects in one call, and no way to see the second until the first was gone.
26
+
27
+ <b>The count is 917, and a blanket pass would be wrong.</b> 858 in <code>tests</code>, 32 in
28
+ <code>boost_cli</code>, 21 in <code>scripts</code>, 6 in <code>evals</code>. Most of those writes
29
+ produce files whose line endings nothing ever compares, so pinning
30
+ <code>newline="\n"</code> on all of them is 917 edits of which the overwhelming majority are churn
31
+ and none is a fix &mdash; and churn in a diff is what makes the real change unreviewable. Readers need
32
+ nothing at all: universal newlines already fold CRLF to LF on the way in, which is why the guard that
33
+ ships with the encoding card walks <em>writers only</em>.
34
+
35
+ <b>So the work is the scoping, not the edit.</b> The subset that matters is writers whose output is
36
+ read back and compared &mdash; against a string, a hash, a golden file, or the same report printed to a
37
+ log beside it. Three shapes are known to qualify and are a good place to start the inventory:
38
+ a file written here and read back by an assertion in the same test; anything hashed or diffed
39
+ (<code>fingerprint</code>, the generated-file <code>--check</code> gates, golden fixtures); and
40
+ anything a <em>second</em> process parses line by line, which is how
41
+ <code>$GITHUB_OUTPUT</code> got onto the list. <code>scripts/mutation_shards.py</code> is already
42
+ pinned and already guarded by <code>TestTheScriptPinsItsNewlines</code> &mdash; extending that guard a
43
+ scoped set at a time, with the reason each set is in it, is the shape this should take.
44
+
45
+ <b>What would make it falsifiable.</b> A Windows job that asserts byte equality, not string
46
+ equality: today a round trip on Linux passes whether the newline is pinned or not, which is exactly
47
+ the class of test the encoding card's own verification pass caught twice. The AST walker
48
+ (<code>unpinned_newline</code> in <code>tests/unit/test_text_io_names_its_encoding.py</code>) is the
49
+ platform-independent half and already exists; what it cannot tell you is which of the 917 are bugs.
@@ -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>518</b><span>Loop finds</span></div>
146
+ <div class="stat"><b>520</b><span>Loop finds</span></div>
147
147
  <!-- /ROADMAP:stats -->
148
148
  </div>
149
149
  </section>
@@ -7185,81 +7185,59 @@ the stripped block. Found while verifying
7185
7185
  </article>
7186
7186
 
7187
7187
  <article class="cap rcard" id="text-io-leaves-its-encoding-to-the-locale">
7188
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Portability · Windows</span></div>
7189
+ <h3>73 reads and writes left the text encoding to the locale, and the Windows jobs were the only thing that noticed</h3>
7190
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md">Write-up &middot; text-io-leaves-its-encoding-to-the-locale.md</a></p>
7191
+ <div class="meta">
7192
+ <span class="m">Complexity <b>M</b></span>
7193
+ <span class="m">Impact <b>Med</b></span>
7194
+ <span class="m">Wow <b class="wow">★★</b></span>
7195
+ <span class="m">all 73 encoded; the guard is repo-wide over 414 files; the newline half is its own card</span>
7196
+ </div>
7197
+ </article>
7198
+
7199
+ <article class="cap rcard" id="writers-whose-bytes-are-compared-do-not-pin-their-newline">
7188
7200
  <div class="head"><span class="pill planned">Planned</span><span class="cat">Portability · Windows</span></div>
7189
- <h3>73 reads and writes leave the text encoding to the locale, and the Windows jobs are the only thing that notices</h3>
7190
- <p><code>Path.read_text()</code>, <code>Path.write_text()</code> and <code>open()</code> in text mode use
7191
- <code>locale.getencoding()</code> when no <code>encoding=</code> is given. On Linux and macOS that is UTF-8
7192
- and nothing ever goes wrong. On a GitHub <b>Windows</b> runner it is <b>cp1252</b>, so the same file
7193
- written by one call and read by another comes back as different text the moment it holds a
7194
- character outside Latin-1.
7195
-
7196
- An AST sweep of <code>boost_cli</code>, <code>scripts</code>, <code>tests</code> and <code>evals</code> finds
7197
- <b>73</b> such sites &mdash; 72 in the test suite, 1 in <code>boost_cli</code>
7198
- (<code>core/journal.py:55</code>, <code>with p.open("a")</code>) and none in <code>scripts</code>. The
7199
- test-suite concentration is not the harmless part: a test that writes UTF-8 and reads it back in
7200
- cp1252 is exactly the shape that reddened three Windows jobs below.
7201
-
7202
- <b>That figure was 116 in the first draft of this card, and the 43 it lost are the point.</b> An
7203
- inflated backlog is not a safe error &mdash; it sizes a sweep nobody can finish and plants a
7204
- false-positive the guard will fail on. Thirty of the 43 were <code>tarfile.open(path, "w:gz")</code>,
7205
- three <code>os.open</code> (a file descriptor, which has no encoding), two
7206
- <code>webbrowser.open(url)</code>, one a urllib response, and seven were binary
7207
- <code>Path.open("rb")</code> miscounted because the walker read the mode from the builtin's argument
7208
- position rather than <code>Path.open</code>'s. The single most misleading line was the one claiming
7209
- 17 <code>boost_cli</code> sites "would mis-read a user's own file": sixteen of those seventeen were
7210
- not text IO at all.
7211
-
7212
- <b>This is not theoretical, and it already cost a build.</b> #1012 added a <code>drift</code> report
7213
- written with <code>encoding="utf-8"</code> containing an em dash, and a test that read it back with a bare
7214
- <code>read_text()</code>. Every Linux and macOS job passed; all three
7215
- <code>tests (windows-latest, 3.12 / 3.13 / 3.14)</code> jobs failed, on a change that had touched nothing
7216
- platform-specific. The failure names neither the encoding nor the character &mdash; it prints two
7217
- truncated strings that look identical.
7218
-
7219
- <b>The quieter half is worse than the loud one.</b> A missing encoding on a <em>reader</em> raises
7220
- <code>UnicodeDecodeError</code>, which is a subclass of <code>ValueError</code> &mdash; so any
7221
- <code>except (OSError, ValueError)</code> around a JSON load swallows it and reports a perfectly good
7222
- file as unreadable. <code>mutation_shards._unusable</code> had exactly that shape: on Windows it would
7223
- have refused a valid measurement and said "not readable JSON".
7224
-
7225
- <b>Why ruff's <code>PLW1514</code> is not the whole answer.</b> Two reasons, both measured. It is a
7226
- <b>preview</b> rule, so <code>ruff check --select PLW1514</code> without <code>--preview</code> checks
7227
- nothing at all and prints "All checks passed" &mdash; indistinguishable from a clean tree, and a trap
7228
- this card fell into once already. And with <code>--preview</code> it resolves the receiver
7229
- syntactically: over <code>origin/main</code> it reports exactly <b>one</b> site,
7230
- <code>scripts/mutation_shards.py:718</code>, because it sees <code>path.read_text()</code> where
7231
- <code>path = Path(...)</code> is in view; it never saw the <code>md.read_text()</code> off a pytest
7232
- <code>tmp_path</code> fixture that actually broke CI. #1012 fixed that one site, so on <code>main</code>
7233
- after this merge the rule reports <b>zero</b> while the walker still reports 73 &mdash; which is the
7234
- clearest statement of the gap there is. The sweep wants the AST walker in
7235
- <code>tests/unit/test_mutation_shards_names_its_encoding.py</code>, whose <code>WATCHED</code> tuple is the
7236
- list to grow &mdash; it already pins the two files #1012 owns, so the guard generalises by adding a path
7237
- rather than by being rewritten.
7238
-
7239
- <b>Shape of the work.</b> Mechanical but not blind: each site needs a decision between
7240
- <code>encoding="utf-8"</code> and <code>read_bytes()</code>/binary mode, and a handful read files boost did
7241
- not write (a user's <code>CLAUDE.md</code>, a tapped repo's Markdown) where <code>errors="replace"</code> may
7242
- be the honest answer rather than a crash. Land it per-directory so each PR stays reviewable, extending
7243
- <code>WATCHED</code> as it goes.
7244
-
7245
- <b>The encoding is only half of what text mode decides.</b> It also translates <code>\n</code> to the
7246
- platform separator on write, so a file written with <code>encoding="utf-8"</code> on a Windows runner
7247
- still holds CRLF. #1012 hit both, one after the other: naming the encoding turned the three Windows
7248
- jobs green on that assertion and straight back to red on the line endings. A sweep that fixes only
7249
- the encoding leaves every writer whose output is compared against a string, a hash or another file
7250
- still platform-dependent, so this card covers <code>newline="\n"</code> on writers as well &mdash;
7251
- readers need nothing, since universal newlines already fold CRLF on the way in.
7252
-
7253
- That second sweep is <b>910</b> writes (857 tests, 32 <code>boost_cli</code>, 21 <code>scripts</code>),
7254
- and unlike the encoding it should <em>not</em> be applied everywhere: a write whose bytes nobody
7255
- compares is fine as it is. The ones that matter are writers whose output is read back and compared
7256
- &mdash; against a string, a hash, a golden file, or the same report printed to a log. Scoping that
7257
- subset is the first task of this card, not a mechanical pass.</p>
7258
- <div class="meta">
7259
- <span class="m">Complexity <b>M</b></span>
7260
- <span class="m">Impact <b>Med</b></span>
7261
- <span class="m">Wow <b class="wow">★★</b></span>
7262
- <span class="m">73 reads and writes take the locale's encoding; 910 writes take its line ending</span>
7201
+ <h3>917 text writes leave the line ending to the platform, and only some of them are bugs</h3>
7202
+ <p>Text mode decides two things, and naming the encoding fixes one of them. It also translates
7203
+ <code>\n</code> to the platform separator <em>on write</em>, so a file written with
7204
+ <code>encoding="utf-8"</code> on a GitHub <b>Windows</b> runner still holds CRLF. The sibling card
7205
+ <code>text-io-leaves-its-encoding-to-the-locale</code> closed the encoding half across 414 files; this
7206
+ is the other half, and it is deliberately not the same kind of sweep.
7207
+
7208
+ <b>#1012 hit both, one after the other, and the first fix hid the second.</b> Naming the encoding
7209
+ turned the three <code>tests (windows-latest, 3.1x)</code> jobs green on the assertion that had failed
7210
+ &mdash; and the next run put them straight back to red on the line endings of the same line. Two
7211
+ platform defects in one call, and no way to see the second until the first was gone.
7212
+
7213
+ <b>The count is 917, and a blanket pass would be wrong.</b> 858 in <code>tests</code>, 32 in
7214
+ <code>boost_cli</code>, 21 in <code>scripts</code>, 6 in <code>evals</code>. Most of those writes
7215
+ produce files whose line endings nothing ever compares, so pinning
7216
+ <code>newline="\n"</code> on all of them is 917 edits of which the overwhelming majority are churn
7217
+ and none is a fix &mdash; and churn in a diff is what makes the real change unreviewable. Readers need
7218
+ nothing at all: universal newlines already fold CRLF to LF on the way in, which is why the guard that
7219
+ ships with the encoding card walks <em>writers only</em>.
7220
+
7221
+ <b>So the work is the scoping, not the edit.</b> The subset that matters is writers whose output is
7222
+ read back and compared &mdash; against a string, a hash, a golden file, or the same report printed to a
7223
+ log beside it. Three shapes are known to qualify and are a good place to start the inventory:
7224
+ a file written here and read back by an assertion in the same test; anything hashed or diffed
7225
+ (<code>fingerprint</code>, the generated-file <code>--check</code> gates, golden fixtures); and
7226
+ anything a <em>second</em> process parses line by line, which is how
7227
+ <code>$GITHUB_OUTPUT</code> got onto the list. <code>scripts/mutation_shards.py</code> is already
7228
+ pinned and already guarded by <code>TestTheScriptPinsItsNewlines</code> &mdash; extending that guard a
7229
+ scoped set at a time, with the reason each set is in it, is the shape this should take.
7230
+
7231
+ <b>What would make it falsifiable.</b> A Windows job that asserts byte equality, not string
7232
+ equality: today a round trip on Linux passes whether the newline is pinned or not, which is exactly
7233
+ the class of test the encoding card's own verification pass caught twice. The AST walker
7234
+ (<code>unpinned_newline</code> in <code>tests/unit/test_text_io_names_its_encoding.py</code>) is the
7235
+ platform-independent half and already exists; what it cannot tell you is which of the 917 are bugs.</p>
7236
+ <div class="meta">
7237
+ <span class="m">Complexity <b>M</b></span>
7238
+ <span class="m">Impact <b>Med</b></span>
7239
+ <span class="m">Wow <b class="wow">★★</b></span>
7240
+ <span class="m">917 text writes take the platform line ending; only the compared ones are bugs</span>
7263
7241
  </div>
7264
7242
  </article>
7265
7243
  <!-- /ROADMAP:cards -->
@@ -7768,6 +7746,59 @@ had 4 clones in flight".</p>
7768
7746
  <span class="m">it skipped in all six jobs that run the suite, not the three this card first counted</span>
7769
7747
  </div>
7770
7748
  </article>
7749
+
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>
7752
+ <h3>Mutation shard weights balance perfectly and predict nothing, so a shard can time out and cancel a release</h3>
7753
+ <p><b>Observed, on the merge of #1015.</b> <code>mutation-shard (4)</code> ran 75 minutes against the
7754
+ job's <code>timeout-minutes: 75</code> and was cancelled. The aggregate <code>mutation</code> job
7755
+ then failed, the whole <code>ci</code> run concluded <code>cancelled</code> rather than
7756
+ <code>failure</code>, and <code>publish.yml</code> &mdash; which gates on
7757
+ <code>workflow_run.conclusion == 'success'</code> &mdash; skipped. <b>A merge to main silently did
7758
+ not ship</b>, which is the exact failure mode the long comment above <code>ci.yml</code>'s
7759
+ <code>concurrency:</code> block was written to prevent by a different route.
7760
+
7761
+ <b>The packer is not at fault, and that is the finding.</b>
7762
+ <code>mutation_shards.py plan --shards 6 --explain</code> reports every shard within <b>700 ms</b>
7763
+ of the ideal 6,884,259 ms &mdash; a balance of 0.01%. The same run measured 39, 27, 38, 36,
7764
+ <b>76</b> and 65 minutes. Perfect balance against numbers that do not predict wall clock.
7765
+
7766
+ <b>The units are the tell.</b> Total weight is 41,305,555 ms over six shards, so the plan
7767
+ predicts <b>114 minutes per shard</b> while shards finish in 27&ndash;76. The weights are
7768
+ self-consistent ratios measured somewhere other than a CI runner, and ratios are all the
7769
+ packer needs &mdash; but it means <b>nothing in the repo can answer "will a shard exceed the
7770
+ cap?"</b>. <code>plan --explain</code> prints the speedup cap and the largest unit; it never
7771
+ mentions <code>timeout-minutes</code>, and <code>grep</code> finds no comparison between the two
7772
+ anywhere in <code>scripts/mutation_shards.py</code>.
7773
+
7774
+ <b>Run-to-run variance eats the margin.</b> The same tree, built twice: shard 4 took 66 min on
7775
+ <code>5aaf8bc4</code> (the PR) and 76 min on <code>f196160d</code> (its merge commit); shard 5 went
7776
+ 42 &rarr; 65. On <code>8c4a5094</code> shard 4 was 32. So the heaviest shard's observed range is
7777
+ 32&ndash;76 minutes for identical work, and the cap is 75. Related and probably the same cause:
7778
+ <code>mutation-shard (4)</code> on #1012 died at 15.1 minutes with exit 143 (SIGTERM), diagnosed
7779
+ then as runner eviction.
7780
+
7781
+ <b>Why the open weights-refresh PR does not fix it.</b> #1014 re-measures and re-packs; under its
7782
+ weights the plan is again balanced to within ~400 ms, and predicts 121 min/shard. Re-measuring a
7783
+ quantity that was never in runner time produces a better-calibrated version of the same
7784
+ unanswerable question.
7785
+
7786
+ <b>Shape of the work.</b> Three independent pieces, in increasing order of how much they fix:
7787
+ calibrate the weights against observed job duration (the API has it per shard, per run) so the
7788
+ plan is in minutes a human can compare to the cap; have <code>plan</code> fail, or at least warn,
7789
+ when a packed shard's predicted time is within some margin of <code>timeout-minutes</code>; and
7790
+ give the heaviest shard headroom &mdash; at eight shards the ideal drops by a quarter, and the
7791
+ speedup cap is 6.0x only because <code>store.py</code> is split per function already, so more
7792
+ shards is cheap. Separately, a cancelled <code>ci</code> on main should be loud: it currently
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>
7795
+ <div class="meta">
7796
+ <span class="m">Complexity <b>M</b></span>
7797
+ <span class="m hi">Impact <b>High</b></span>
7798
+ <span class="m">Wow <b class="wow">★★★★</b></span>
7799
+ <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
+ </div>
7801
+ </article>
7771
7802
  <!-- /ROADMAP:cards -->
7772
7803
 
7773
7804
  </div>
@@ -400,7 +400,7 @@ def test_a_local_install_records_mcp_servers_in_the_repo(boost, tapped, repo):
400
400
  boost("install", "brainstorming", "--local")
401
401
  sidecar = repo / mcpdecl.SIDECAR
402
402
  assert sidecar.is_file(), "no .mcp.json written into the repo"
403
- servers = json.loads(sidecar.read_text())[mcpdecl.SERVERS_KEY]
403
+ servers = json.loads(sidecar.read_text(encoding="utf-8"))[mcpdecl.SERVERS_KEY]
404
404
  assert "gh" in servers
405
405
  assert servers["gh"][mcpdecl.MARKER_KEY] == "brainstorming", \
406
406
  "the entry must name the skill that asked for it, so uninstall can reverse it"
@@ -423,7 +423,8 @@ def test_uninstalling_locally_removes_the_servers_it_added(boost, tapped, repo):
423
423
  _declare_mcp(tapped, "brainstorming")
424
424
  boost("install", "brainstorming", "--local")
425
425
  boost("uninstall", "brainstorming", "--local")
426
- servers = json.loads((repo / mcpdecl.SIDECAR).read_text())[mcpdecl.SERVERS_KEY]
426
+ servers = json.loads(
427
+ (repo / mcpdecl.SIDECAR).read_text(encoding="utf-8"))[mcpdecl.SERVERS_KEY]
427
428
  assert "gh" not in servers, \
428
429
  "a skill removed from the repo must stop launching its server"
429
430
 
@@ -445,7 +446,8 @@ def test_uninstall_leaves_a_hand_written_server_alone(boost, tapped, repo):
445
446
  _declare_mcp(tapped, "brainstorming")
446
447
  boost("install", "brainstorming", "--local")
447
448
  boost("uninstall", "brainstorming", "--local")
448
- servers = json.loads((repo / mcpdecl.SIDECAR).read_text())[mcpdecl.SERVERS_KEY]
449
+ servers = json.loads(
450
+ (repo / mcpdecl.SIDECAR).read_text(encoding="utf-8"))[mcpdecl.SERVERS_KEY]
449
451
  assert servers["mine"] == {"command": "my-own-thing"}, \
450
452
  "boost must only reverse what boost wrote"
451
453
 
@@ -918,8 +918,8 @@ class TestGuardDetection:
918
918
  files never touch it, and one imports it without a guard.
919
919
  """
920
920
  (tmp_path / "a_test.py").write_text(
921
- "import pytest\nwidget = pytest.importorskip('widget')\n")
922
- (tmp_path / "b_test.py").write_text("import widget\n")
921
+ "import pytest\nwidget = pytest.importorskip('widget')\n", encoding="utf-8")
922
+ (tmp_path / "b_test.py").write_text("import widget\n", encoding="utf-8")
923
923
  required, optional = _scan([tmp_path])
924
924
  assert "widget" in required
925
925
  assert "widget" not in optional
@@ -73,7 +73,7 @@ class TestBaselineIsKeyedToItsQuerySet:
73
73
  ev.save_baseline(10, [_result()], golden=KEYWORD)
74
74
  ev.save_baseline(10, [_result(**{"recall@k": 0.69, "hit@1": 0.24})],
75
75
  golden=NATURAL)
76
- data = json.loads(baseline.read_text())
76
+ data = json.loads(baseline.read_text(encoding="utf-8"))
77
77
  keys = set(data["sets"])
78
78
  assert len(keys) == 2, "one set's baseline overwrote the other: %s" % keys
79
79
 
@@ -96,9 +96,11 @@ class TestBaselineIsKeyedToItsQuerySet:
96
96
  # Editing the queries changes what the numbers mean, even under the same
97
97
  # filename — so identity is the content, not the path.
98
98
  golden = tmp_path / "golden.jsonl"
99
- golden.write_text('{"query": "a", "relevant": ["x"], "kind": "skill"}\n')
99
+ golden.write_text('{"query": "a", "relevant": ["x"], "kind": "skill"}\n',
100
+ encoding="utf-8")
100
101
  ev.save_baseline(10, [_result()], golden=golden)
101
- golden.write_text('{"query": "b", "relevant": ["y"], "kind": "skill"}\n')
102
+ golden.write_text('{"query": "b", "relevant": ["y"], "kind": "skill"}\n',
103
+ encoding="utf-8")
102
104
  assert ev.check_regressions([_result(**{"recall@k": 0.1})],
103
105
  eps=0.02, golden=golden) == []
104
106
 
@@ -111,7 +113,7 @@ class TestBackCompat:
111
113
  "k": 10,
112
114
  "engines": {"BM25 full-content": {
113
115
  "recall@k": 1.0, "hit@1": 0.78, "MRR": 0.86, "nDCG@k": 0.89}},
114
- }))
116
+ }), encoding="utf-8")
115
117
  problems = ev.check_regressions([_result(**{"hit@1": 0.10})],
116
118
  eps=0.02, golden=KEYWORD)
117
119
  assert problems, "a pre-existing baseline stopped catching regressions"
@@ -121,7 +123,7 @@ class TestBackCompat:
121
123
  "k": 10,
122
124
  "engines": {"BM25 full-content": {
123
125
  "recall@k": 1.0, "hit@1": 0.78, "MRR": 0.86, "nDCG@k": 0.89}},
124
- }))
126
+ }), encoding="utf-8")
125
127
  assert ev.check_regressions([_result(**{"hit@1": 0.10})],
126
128
  eps=0.02, golden=NATURAL) == []
127
129
 
@@ -663,7 +663,7 @@ class TestTheCorpusSizeBlock:
663
663
  # wrong — which is how the cross-population ratio survived: the number
664
664
  # in taps.txt looked settled because nobody recomputed it.
665
665
  m = _load()
666
- text = _TAPS.read_text()
666
+ text = _TAPS.read_text(encoding="utf-8")
667
667
  assert m.with_size(text) == text
668
668
 
669
669
  def test_the_content_line_never_says_entries(self):
@@ -1219,8 +1219,9 @@ def _bundle_source() -> str:
1219
1219
  if not entry.is_file():
1220
1220
  continue
1221
1221
  for chunk in sorted(set(re.findall(
1222
- r"chunk-[A-Z0-9]+\.js", entry.read_text(errors="replace")))):
1223
- src = (root / chunk).read_text(errors="replace")
1222
+ r"chunk-[A-Z0-9]+\.js", entry.read_text(errors="replace",
1223
+ encoding="utf-8")))):
1224
+ src = (root / chunk).read_text(encoding="utf-8", errors="replace")
1224
1225
  if BUNDLE_MARKER in src:
1225
1226
  return src
1226
1227
  return pytest.skip("Gemini CLI bundle not installed")