boost-skill-cli 1.2.180__tar.gz → 1.2.182__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1138) hide show
  1. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/intelligence.py +11 -2
  4. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/pkg.py +34 -1
  5. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/team.py +16 -1
  6. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/complete.py +23 -2
  7. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/scopes.py +130 -25
  8. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/util.py +28 -2
  9. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  10. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  11. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/project-scope-in-an-unmarked-tree-does-not-walk-up.md +24 -5
  12. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shard-weights-do-not-predict-the-job-timeout.md +40 -9
  13. boost_skill_cli-1.2.182/docs/roadmap/items/the-shard-model-has-no-per-job-fixed-cost.md +81 -0
  14. boost_skill_cli-1.2.182/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +133 -0
  15. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap.html +106 -120
  16. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/mutation_shards.py +106 -1
  17. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/mutation_weights.json +1027 -1027
  18. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/conftest.py +19 -5
  19. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_workspace_scope.py +79 -0
  20. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_shard_count.py +147 -2
  21. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_output.py +2 -1
  22. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_scopes.py +312 -1
  23. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_text_io_names_its_encoding.py +380 -6
  24. boost_skill_cli-1.2.180/docs/roadmap/items/writers-whose-bytes-are-compared-do-not-pin-their-newline.md +0 -49
  25. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.gitattributes +0 -0
  26. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.gitignore +0 -0
  27. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.gitleaks.toml +0 -0
  28. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.htmlvalidate.json +0 -0
  29. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.lighthouserc.json +0 -0
  30. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.lycheeignore +0 -0
  31. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.markdownlint-cli2.jsonc +0 -0
  32. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.pre-commit-config.yaml +0 -0
  33. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.stylelintrc.json +0 -0
  34. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.vale/styles/boost/AIWriting.yml +0 -0
  35. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.vale/styles/boost/Terminology.yml +0 -0
  36. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  37. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/.vale.ini +0 -0
  38. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/CLAUDE.md +0 -0
  39. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/CODE_OF_CONDUCT.md +0 -0
  40. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/CONTRIBUTING.md +0 -0
  41. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/DCO +0 -0
  42. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/GOVERNANCE.md +0 -0
  43. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/LICENSE +0 -0
  44. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/MAINTAINERS.md +0 -0
  45. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/MANIFEST.in +0 -0
  46. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/Makefile +0 -0
  47. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/README.md +0 -0
  48. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/SECURITY.md +0 -0
  49. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/SUPPORT.md +0 -0
  50. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost +0 -0
  51. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/__init__.py +0 -0
  52. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/__main__.py +0 -0
  53. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/cli.py +0 -0
  54. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/cliparse.py +0 -0
  55. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/__init__.py +0 -0
  56. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/_common.py +0 -0
  57. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/bmad.py +0 -0
  58. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/configuration.py +0 -0
  59. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/discovery.py +0 -0
  60. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/hooks.py +0 -0
  61. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/info.py +0 -0
  62. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/quality.py +0 -0
  63. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/quickstart.py +0 -0
  64. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/run.py +0 -0
  65. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/safety.py +0 -0
  66. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/commands/taps.py +0 -0
  67. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/__init__.py +0 -0
  68. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/adapters.py +0 -0
  69. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/agents.py +0 -0
  70. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/ai.py +0 -0
  71. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/aihost.py +0 -0
  72. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/archive.py +0 -0
  73. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/bmad.py +0 -0
  74. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/bootstrap.py +0 -0
  75. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/browse.py +0 -0
  76. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/builtin.py +0 -0
  77. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/capabilities.py +0 -0
  78. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/catalog.py +0 -0
  79. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/catalogbundle.py +0 -0
  80. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/chat.py +0 -0
  81. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/claude_settings.py +0 -0
  82. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/cohort.py +0 -0
  83. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/compact.py +0 -0
  84. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/config.py +0 -0
  85. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/dense.py +0 -0
  86. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/deps.py +0 -0
  87. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/discovery.py +0 -0
  88. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/ed25519.py +0 -0
  89. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/embed.py +0 -0
  90. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/faithfulness.py +0 -0
  91. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/frontmatter.py +0 -0
  92. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/gitutil.py +0 -0
  93. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/hookhost.py +0 -0
  94. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/imperative.py +0 -0
  95. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/injectscan.py +0 -0
  96. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/installscan.py +0 -0
  97. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/integrity.py +0 -0
  98. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/journal.py +0 -0
  99. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/jsonstate.py +0 -0
  100. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/localembed.py +0 -0
  101. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/lockfile.py +0 -0
  102. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/logs.py +0 -0
  103. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/mcp.py +0 -0
  104. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/mcpdecl.py +0 -0
  105. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/mcphost.py +0 -0
  106. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/minisign.py +0 -0
  107. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/nethttp.py +0 -0
  108. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/output.py +0 -0
  109. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/paths.py +0 -0
  110. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/policy.py +0 -0
  111. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/prereq.py +0 -0
  112. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/projectlock.py +0 -0
  113. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/provenance.py +0 -0
  114. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/rag.py +0 -0
  115. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/registry.py +0 -0
  116. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/report.py +0 -0
  117. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/resolve.py +0 -0
  118. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/rules.py +0 -0
  119. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/secretscan.py +0 -0
  120. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/selfupdate.py +0 -0
  121. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/serve.py +0 -0
  122. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/shards.py +0 -0
  123. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/stackprobe.py +0 -0
  124. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/staleness.py +0 -0
  125. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/store.py +0 -0
  126. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/trustaudit.py +0 -0
  127. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/typedvalue.py +0 -0
  128. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/typosquat.py +0 -0
  129. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/updatediff.py +0 -0
  130. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/core/workflows.py +0 -0
  131. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/data/registries.json +0 -0
  132. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/data/rules/boost-first.mdc +0 -0
  133. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/errors.py +0 -0
  134. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_cli/spin.py +0 -0
  135. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/__init__.py +0 -0
  136. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/_compat.py +0 -0
  137. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/graph.py +0 -0
  138. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/loader.py +0 -0
  139. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/py.typed +0 -0
  140. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_langchain/retriever.py +0 -0
  141. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  142. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  143. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/requires.txt +0 -0
  144. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/boost_skill_cli.egg-info/top_level.txt +0 -0
  145. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/codecov.yml +0 -0
  146. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/DEBUGGING.md +0 -0
  147. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/adapters.html +0 -0
  148. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/architecture/README.md +0 -0
  149. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/architecture/c4-components-core.md +0 -0
  150. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/architecture/c4-containers.md +0 -0
  151. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/architecture/c4-context.md +0 -0
  152. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/architecture/c4-dynamic-install.md +0 -0
  153. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/bmad.md +0 -0
  154. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/distill.gif +0 -0
  155. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/doctor.gif +0 -0
  156. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/explain.gif +0 -0
  157. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/hooks.gif +0 -0
  158. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/install.gif +0 -0
  159. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/pulse.gif +0 -0
  160. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/search.gif +0 -0
  161. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/gifs/tap.gif +0 -0
  162. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/distill.tape +0 -0
  163. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/doctor.tape +0 -0
  164. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/explain.tape +0 -0
  165. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/hooks.tape +0 -0
  166. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/install.tape +0 -0
  167. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/pulse.tape +0 -0
  168. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/search.tape +0 -0
  169. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel/tapes/tap.tape +0 -0
  170. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/carousel.html +0 -0
  171. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/chat.html +0 -0
  172. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/code-review.md +0 -0
  173. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/commands.html +0 -0
  174. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/commit-audit.md +0 -0
  175. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/demo-index.json +0 -0
  176. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/demo.gif +0 -0
  177. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/demo.html +0 -0
  178. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/demo.tape +0 -0
  179. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/dependencies.md +0 -0
  180. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/design-roadmap.html +0 -0
  181. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/eval-latest.json +0 -0
  182. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/eval.html +0 -0
  183. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/index.html +0 -0
  184. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/langchain.html +0 -0
  185. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/mcp-hub.html +0 -0
  186. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/openssf-badge.md +0 -0
  187. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/openssf-playbook.md +0 -0
  188. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/rag-architecture.md +0 -0
  189. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D01.md +0 -0
  190. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D02.md +0 -0
  191. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D03.md +0 -0
  192. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D04.md +0 -0
  193. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D05.md +0 -0
  194. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D06.md +0 -0
  195. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D07.md +0 -0
  196. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D08.md +0 -0
  197. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D09.md +0 -0
  198. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D10.md +0 -0
  199. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D11.md +0 -0
  200. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D12.md +0 -0
  201. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D13.md +0 -0
  202. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D14.md +0 -0
  203. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D15.md +0 -0
  204. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D16.md +0 -0
  205. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D17.md +0 -0
  206. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D18.md +0 -0
  207. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D19.md +0 -0
  208. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D20.md +0 -0
  209. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D21.md +0 -0
  210. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D22.md +0 -0
  211. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D23.md +0 -0
  212. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D24.md +0 -0
  213. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D25.md +0 -0
  214. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D26.md +0 -0
  215. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/BOOST-D27.md +0 -0
  216. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  217. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  218. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  219. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  220. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  221. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  222. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  223. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  224. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  225. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  226. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  227. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  228. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/an-item-materialized-nowhere-reads-ok-in-verify-health-drift.md +0 -0
  229. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  230. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  231. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  232. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  233. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  234. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  235. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  236. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-attest-findings.md +0 -0
  237. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-audit-findings.md +0 -0
  238. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  239. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-browse-findings.md +0 -0
  240. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  241. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  242. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  243. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  244. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-chat-findings.md +0 -0
  245. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  246. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  247. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  248. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-completions-findings.md +0 -0
  249. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-config-findings.md +0 -0
  250. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  251. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-context-findings.md +0 -0
  252. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  253. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  254. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-create-findings.md +0 -0
  255. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  256. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-deps-findings.md +0 -0
  257. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-discover-findings.md +0 -0
  258. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  259. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  260. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-drift-findings.md +0 -0
  261. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  262. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-edit-findings.md +0 -0
  263. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  264. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-explain-findings.md +0 -0
  265. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-export-findings.md +0 -0
  266. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  267. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  268. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  269. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  270. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  271. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-health-findings.md +0 -0
  272. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  273. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  274. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-import-findings.md +0 -0
  275. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-index-findings.md +0 -0
  276. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  277. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  278. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-install-findings.md +0 -0
  279. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  280. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  281. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-lint-findings.md +0 -0
  282. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-log-findings.md +0 -0
  283. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  284. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  285. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  286. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  287. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  288. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  289. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  290. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  291. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  292. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  293. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  294. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-policy-findings.md +0 -0
  295. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-preview-findings.md +0 -0
  296. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-profile-findings.md +0 -0
  297. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  298. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  299. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  300. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  301. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  302. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  303. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  304. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  305. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  306. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-replay-findings.md +0 -0
  307. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-root-findings.md +0 -0
  308. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  309. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-run-findings.md +0 -0
  310. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  311. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-search-findings.md +0 -0
  312. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  313. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  314. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  315. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  316. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  317. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  318. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  319. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  320. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-sync-findings.md +0 -0
  321. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-tag-findings.md +0 -0
  322. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  323. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-tap-findings.md +0 -0
  324. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-taps-findings.md +0 -0
  325. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  326. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-test-findings.md +0 -0
  327. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-trust-findings.md +0 -0
  328. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  329. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  330. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-untap-findings.md +0 -0
  331. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-update-findings.md +0 -0
  332. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  333. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-verify-findings.md +0 -0
  334. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/audit-who-findings.md +0 -0
  335. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  336. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  337. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  338. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  339. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  340. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  341. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  342. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  343. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  344. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  345. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  346. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  347. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  348. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  349. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  350. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  351. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/boost-first-rule.md +0 -0
  352. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  353. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  354. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/branch-current-gate.md +0 -0
  355. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  356. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  357. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  358. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  359. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  360. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  361. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  362. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/canary-deps-check-skips-in-the-required-job.md +0 -0
  363. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cancelled-ci-on-main-is-silent-and-skips-the-release.md +0 -0
  364. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  365. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  366. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  367. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  368. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  369. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  370. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  371. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  372. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  373. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  374. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  375. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  376. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  377. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cli-command-audit.md +0 -0
  378. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  379. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  380. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  381. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  382. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  383. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  384. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/command-carousel-page.md +0 -0
  385. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  386. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  387. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  388. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  389. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  390. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/concurrency-probe-measured-a-race-not-the-pool.md +0 -0
  391. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  392. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  393. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  394. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  395. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  396. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  397. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  398. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  399. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  400. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  401. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  402. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  403. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  404. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  405. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  406. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  407. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
  408. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  409. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  410. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  411. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  412. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  413. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  414. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  415. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  416. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  417. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  418. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  419. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  420. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  421. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  422. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  423. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  424. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  425. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  426. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  427. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  428. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  429. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  430. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  431. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  432. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  433. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  434. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  435. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  436. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  437. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  438. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  439. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  440. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  441. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  442. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  443. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  444. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  445. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  446. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  447. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  448. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  449. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/floors-job-never-installed-setuptools.md +0 -0
  450. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  451. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  452. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  453. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  454. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  455. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  456. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  457. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  458. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  459. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  460. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  461. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  462. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  463. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/github-community-health-files.md +0 -0
  464. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  465. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  466. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  467. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  468. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  469. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  470. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  471. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  472. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  473. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  474. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  475. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  476. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  477. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  478. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  479. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  480. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  481. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  482. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  483. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/install-writes-through-a-redirected-dotdir-uninstall-will-not.md +0 -0
  484. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  485. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  486. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  487. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  488. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/is-dir-follows-a-symlink-at-eleven-rmtree-call-sites.md +0 -0
  489. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  490. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  491. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  492. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  493. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  494. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  495. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  496. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  497. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  498. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  499. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  500. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  501. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  502. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  503. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  504. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  505. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  506. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  507. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  508. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  509. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  510. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  511. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  512. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  513. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  514. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  515. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  516. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  517. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  518. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  519. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  520. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  521. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  522. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  523. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  524. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  525. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  526. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  527. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  528. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  529. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  530. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  531. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  532. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  533. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  534. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  535. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  536. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  537. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/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.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  539. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  540. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  541. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  542. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  543. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  544. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  545. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  546. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  547. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  548. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  549. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  550. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  551. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-shard-balance-hints-are-a-release-behind.md +0 -0
  552. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  553. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  554. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  555. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  556. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  557. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  558. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  559. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  560. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-class-makes-registry-py-unsplittable.md +0 -0
  561. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  562. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  563. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  564. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  565. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  566. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  567. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  568. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/openssf-playbook.md +0 -0
  569. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/openssf-silver.md +0 -0
  570. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  571. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  572. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  573. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  574. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  575. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  576. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  577. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  578. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  579. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  580. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  581. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  582. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  583. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  584. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  585. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/project-uninstall-deletes-any-in-repo-directory-the-lock-names.md +0 -0
  586. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  587. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  588. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  589. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  590. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  591. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  592. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  593. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  594. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  595. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  596. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  597. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  598. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  599. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  600. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  601. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  602. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  603. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  604. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  605. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  606. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  607. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  608. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  609. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  610. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  611. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  612. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  613. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  614. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  615. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  616. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  617. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  618. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/relicence-apache-2.md +0 -0
  619. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  620. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  621. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  622. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  623. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  624. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  625. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  626. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  627. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  628. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  629. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  630. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  631. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  632. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/rule-and-workflow-rows-carry-a-scope-nothing-but-list-local-reads.md +0 -0
  633. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  634. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  635. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  636. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  637. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  638. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  639. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  640. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  641. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  642. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  643. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  644. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  645. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  646. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  647. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  648. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  649. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  650. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  651. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  652. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  653. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  654. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  655. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  656. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  657. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  658. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  659. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  660. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  661. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  662. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  663. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  664. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  665. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  666. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  667. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  668. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  669. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  670. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  671. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  672. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  673. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  674. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  675. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  676. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  677. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  678. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  679. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  680. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  681. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  682. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  683. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  684. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  685. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  686. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  687. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  688. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  689. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  690. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  691. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  692. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/text-io-leaves-its-encoding-to-the-locale.md +0 -0
  693. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  694. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  695. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  696. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  697. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  698. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  699. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  700. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  701. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  702. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  703. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  704. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  705. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  706. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  707. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  708. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  709. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  710. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/uninstall-local-cannot-remove-a-rule-or-workflow-list-local-shows.md +0 -0
  711. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  712. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  713. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  714. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  715. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  716. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  717. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  718. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  719. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  720. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  721. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/util-rmtree-chmods-a-symlink-target-outside-the-tree.md +0 -0
  722. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  723. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  724. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  725. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  726. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  727. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  728. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  729. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  730. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  731. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/workspace-scope-install.md +0 -0
  732. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/wrap-width-judged-by-stdout.md +0 -0
  733. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/zip-strict-audit.md +0 -0
  734. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  735. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  736. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/security-design.md +0 -0
  737. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/semantic-search.md +0 -0
  738. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  739. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/verifying-releases.md +0 -0
  740. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/meta.md +0 -0
  741. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/openvex.json +0 -0
  742. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  743. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  744. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  745. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  746. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/eslint.config.mjs +0 -0
  747. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/README.md +0 -0
  748. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/__init__.py +0 -0
  749. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/baseline.json +0 -0
  750. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/faithfulness.py +0 -0
  751. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/golden_set.json +0 -0
  752. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/make_corpus.py +0 -0
  753. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/make_golden.py +0 -0
  754. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/metrics.py +0 -0
  755. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/publish_golden_dataset.py +0 -0
  756. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/evals/run_evals.py +0 -0
  757. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/examples/README.md +0 -0
  758. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/examples/adapt-demo.sh +0 -0
  759. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/examples/boost-run-prototype.sh +0 -0
  760. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/index.html +0 -0
  761. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/noxfile.py +0 -0
  762. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/pyproject.toml +0 -0
  763. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/coverage-tools.in +0 -0
  764. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/coverage-tools.txt +0 -0
  765. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/lint-tools.in +0 -0
  766. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/lint-tools.txt +0 -0
  767. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/mutation-tools.in +0 -0
  768. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/mutation-tools.txt +0 -0
  769. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/platform-pins.lock +0 -0
  770. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/release-tools.in +0 -0
  771. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/release-tools.txt +0 -0
  772. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/test-tools.in +0 -0
  773. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/requirements/test-tools.txt +0 -0
  774. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/a11y_check.py +0 -0
  775. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/add_spdx_headers.py +0 -0
  776. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/bench_cli.sh +0 -0
  777. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_command_reference.py +0 -0
  778. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_demo_index.py +0 -0
  779. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_registries.py +0 -0
  780. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_roadmap.py +0 -0
  781. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_scale_corpus.py +0 -0
  782. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/build_vex.py +0 -0
  783. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_anchors.py +0 -0
  784. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_branch_current.py +0 -0
  785. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_dco.py +0 -0
  786. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_licenses.py +0 -0
  787. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_reproducible.py +0 -0
  788. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/check_required_checks.py +0 -0
  789. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/ensure_eval_corpus.sh +0 -0
  790. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_corpus.py +0 -0
  791. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_explain.py +0 -0
  792. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_gate.py +0 -0
  793. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_recommend.py +0 -0
  794. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_retrieval.py +0 -0
  795. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_stats_summary.py +0 -0
  796. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/eval_tools.py +0 -0
  797. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/import_budget.py +0 -0
  798. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/lock_toolchain.py +0 -0
  799. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/measure_near_duplicate_bound.py +0 -0
  800. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/measure_registry.py +0 -0
  801. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/mutation_gate.py +0 -0
  802. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/normalize_sdist.py +0 -0
  803. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/page_budget.py +0 -0
  804. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/perf_gate.py +0 -0
  805. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/post_deploy_smoke.py +0 -0
  806. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/publish_eval_json.py +0 -0
  807. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/publish_shards.py +0 -0
  808. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/release_guard.py +0 -0
  809. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/release_preflight.py +0 -0
  810. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/serve_docs.py +0 -0
  811. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/scripts/shard_plan.py +0 -0
  812. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/setup.cfg +0 -0
  813. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/sonar-project.properties +0 -0
  814. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/style/README.md +0 -0
  815. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/style/boost.css +0 -0
  816. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/style/boost.js +0 -0
  817. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/style/demo.html +0 -0
  818. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/adapt.feature +0 -0
  819. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/browse.feature +0 -0
  820. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/count.feature +0 -0
  821. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/discover.feature +0 -0
  822. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/doctor.feature +0 -0
  823. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/environment.py +0 -0
  824. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/explain.feature +0 -0
  825. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/index.feature +0 -0
  826. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/install.feature +0 -0
  827. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/list.feature +0 -0
  828. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/mcp.feature +0 -0
  829. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/search.feature +0 -0
  830. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/steps/cli_steps.py +0 -0
  831. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/steps/discovery_steps.py +0 -0
  832. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/steps/mcp_steps.py +0 -0
  833. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/bdd/features/steps/quality_steps.py +0 -0
  834. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/baseline.json +0 -0
  835. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/explain.jsonl +0 -0
  836. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  837. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/golden-natural.jsonl +0 -0
  838. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/golden.jsonl +0 -0
  839. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/recommend.jsonl +0 -0
  840. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/taps-scale.txt +0 -0
  841. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/taps.txt +0 -0
  842. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/eval/tool_calls.jsonl +0 -0
  843. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  844. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_bmad_all_hosts.py +0 -0
  845. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_bmad_personas_scope.py +0 -0
  846. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_capabilities_policy.py +0 -0
  847. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_adapt.py +0 -0
  848. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_bmad.py +0 -0
  849. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_catalog.py +0 -0
  850. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_chat.py +0 -0
  851. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_configuration.py +0 -0
  852. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_discovery.py +0 -0
  853. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_hooks.py +0 -0
  854. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_hooks_codex.py +0 -0
  855. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_hooks_gemini.py +0 -0
  856. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_identifier_columns.py +0 -0
  857. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_info.py +0 -0
  858. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_intelligence.py +0 -0
  859. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_json_reports.py +0 -0
  860. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_pane_width.py +0 -0
  861. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_pkg.py +0 -0
  862. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_quality.py +0 -0
  863. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_quickstart.py +0 -0
  864. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_tap_pins.py +0 -0
  865. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_taps.py +0 -0
  866. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_cli_team.py +0 -0
  867. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  868. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  869. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_everyday_loop.py +0 -0
  870. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_integrity_enforce.py +0 -0
  871. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_keyed_no_store_hint.py +0 -0
  872. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_kind_conformance.py +0 -0
  873. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_property_parsers.py +0 -0
  874. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_recommend_because_is_true.py +0 -0
  875. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  876. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_reports_match_reality.py +0 -0
  877. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_run.py +0 -0
  878. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/functional/test_tap_signing.py +0 -0
  879. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/README.md +0 -0
  880. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  881. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  882. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  883. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  884. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  885. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  886. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  887. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  888. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  889. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  890. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  891. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  892. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  893. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  894. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  895. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  896. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  897. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  898. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  899. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  900. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  901. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  902. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  903. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/fuzz_frontmatter.py +0 -0
  904. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/fuzz/fuzz_registry.py +0 -0
  905. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/langchain/conftest.py +0 -0
  906. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/langchain/test_graph.py +0 -0
  907. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/langchain/test_loader.py +0 -0
  908. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/langchain/test_retriever.py +0 -0
  909. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/make_fixture.py +0 -0
  910. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/perf/test_benchmarks.py +0 -0
  911. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/smoke.sh +0 -0
  912. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  913. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_a11y_check.py +0 -0
  914. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_action_pin_lockstep.py +0 -0
  915. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_adapters.py +0 -0
  916. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_adapters_multi.py +0 -0
  917. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_adapters_runner.py +0 -0
  918. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_agents.py +0 -0
  919. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_ai.py +0 -0
  920. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_aihost.py +0 -0
  921. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_archive.py +0 -0
  922. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_bmad_core.py +0 -0
  923. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_boost_first_offer.py +0 -0
  924. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_bootstrap.py +0 -0
  925. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_bot_pr_dco.py +0 -0
  926. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_branch_current.py +0 -0
  927. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_browse.py +0 -0
  928. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_builtin.py +0 -0
  929. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_canary_deps.py +0 -0
  930. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_capabilities.py +0 -0
  931. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_catalog.py +0 -0
  932. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_catalog_distinct.py +0 -0
  933. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_catalog_keyword_words.py +0 -0
  934. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_catalogbundle.py +0 -0
  935. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_chat.py +0 -0
  936. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_check_anchors.py +0 -0
  937. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_check_dco.py +0 -0
  938. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_check_licenses.py +0 -0
  939. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_check_reproducible.py +0 -0
  940. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_claude_settings.py +0 -0
  941. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_claude_settings_codex.py +0 -0
  942. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_clean_internal_cache.py +0 -0
  943. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_cli_update_shards.py +0 -0
  944. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_cliparse.py +0 -0
  945. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_codeql_analysis_key.py +0 -0
  946. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_cohort.py +0 -0
  947. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_command_reference_fresh.py +0 -0
  948. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_community_health_files.py +0 -0
  949. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_compact.py +0 -0
  950. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_complete.py +0 -0
  951. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_complete_rc_block.py +0 -0
  952. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_config.py +0 -0
  953. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_content_dedupe.py +0 -0
  954. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_content_identity.py +0 -0
  955. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_corpus_prose.py +0 -0
  956. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  957. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_coverage_gate_prose.py +0 -0
  958. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_crash_redaction.py +0 -0
  959. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dedup_trust.py +0 -0
  960. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_demo_index.py +0 -0
  961. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense.py +0 -0
  962. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  963. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_embed_dedupe.py +0 -0
  964. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_entry_reuse.py +0 -0
  965. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_entry_vectors.py +0 -0
  966. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_fallback.py +0 -0
  967. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_fix_hint.py +0 -0
  968. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_model_unavailable.py +0 -0
  969. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_progress.py +0 -0
  970. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_quantized.py +0 -0
  971. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_ready_order.py +0 -0
  972. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_shard_real_schema.py +0 -0
  973. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  974. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_shards.py +0 -0
  975. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_status.py +0 -0
  976. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_status_cheap.py +0 -0
  977. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dense_vector_dedupe.py +0 -0
  978. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dependabot_config.py +0 -0
  979. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_deps.py +0 -0
  980. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_discovery.py +0 -0
  981. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_distill_merge.py +0 -0
  982. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_docs_pages_linked.py +0 -0
  983. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_docsite_chrome.py +0 -0
  984. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_doctor_output_polish.py +0 -0
  985. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_drift_hint.py +0 -0
  986. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_dry_run_parity.py +0 -0
  987. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_ed25519.py +0 -0
  988. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_embed.py +0 -0
  989. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_embed_local.py +0 -0
  990. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_embed_outranking.py +0 -0
  991. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_embed_truncated_response.py +0 -0
  992. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_entry_key.py +0 -0
  993. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_errors_and_cli_table.py +0 -0
  994. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_baseline.py +0 -0
  995. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_corpus.py +0 -0
  996. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_corpus_bodies.py +0 -0
  997. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_faithfulness.py +0 -0
  998. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_gate.py +0 -0
  999. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_grading.py +0 -0
  1000. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_metrics.py +0 -0
  1001. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_query_sets.py +0 -0
  1002. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_stats_summary.py +0 -0
  1003. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_tools.py +0 -0
  1004. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_eval_tools_probe.py +0 -0
  1005. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  1006. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_faithfulness.py +0 -0
  1007. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_first_run_pointer.py +0 -0
  1008. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_frontmatter.py +0 -0
  1009. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_fuzz_targets.py +0 -0
  1010. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  1011. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gitleaks_config.py +0 -0
  1012. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gitutil.py +0 -0
  1013. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gitutil_lfs.py +0 -0
  1014. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gitutil_sparse.py +0 -0
  1015. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_gstack_coexistence.py +0 -0
  1016. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_help_contracts.py +0 -0
  1017. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_hook_settings_hosts.py +0 -0
  1018. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_hookhost.py +0 -0
  1019. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_hookhost_codex.py +0 -0
  1020. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_imperative.py +0 -0
  1021. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_import_budget.py +0 -0
  1022. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_injectscan.py +0 -0
  1023. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_install_permission_error.py +0 -0
  1024. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_installscan.py +0 -0
  1025. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_integrity.py +0 -0
  1026. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_journal.py +0 -0
  1027. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_jsonstate.py +0 -0
  1028. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_langchain_packaging.py +0 -0
  1029. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_launcher_python_floor.py +0 -0
  1030. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_lighthouse_budgets.py +0 -0
  1031. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_link_ownership.py +0 -0
  1032. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_localembed.py +0 -0
  1033. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_localembed_e2e.py +0 -0
  1034. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_lockfile.py +0 -0
  1035. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_logs.py +0 -0
  1036. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_marketing_counts.py +0 -0
  1037. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcp.py +0 -0
  1038. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1039. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcp_install_scan.py +0 -0
  1040. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcp_read.py +0 -0
  1041. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcpdecl.py +0 -0
  1042. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mcphost.py +0 -0
  1043. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_measure_registry.py +0 -0
  1044. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_minisign.py +0 -0
  1045. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_hardening.py +0 -0
  1046. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_shards.py +0 -0
  1047. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_split_measured.py +0 -0
  1048. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_subfile_shards.py +0 -0
  1049. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutation_weights_drift.py +0 -0
  1050. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_mutmut_source_paths.py +0 -0
  1051. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1052. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_nethttp.py +0 -0
  1053. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_normalize_sdist.py +0 -0
  1054. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_output_table_drop.py +0 -0
  1055. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_output_table_whole.py +0 -0
  1056. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_page_budget.py +0 -0
  1057. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_paths.py +0 -0
  1058. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_perf_gate.py +0 -0
  1059. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_pkg_confusions.py +0 -0
  1060. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_pkg_injection.py +0 -0
  1061. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_pkg_secrets.py +0 -0
  1062. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_platform_pins.py +0 -0
  1063. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_policy.py +0 -0
  1064. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_post_deploy_smoke.py +0 -0
  1065. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_prereq.py +0 -0
  1066. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1067. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_projectlock.py +0 -0
  1068. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_provenance.py +0 -0
  1069. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_publish_golden_dataset.py +0 -0
  1070. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_quickstart_readiness.py +0 -0
  1071. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rag.py +0 -0
  1072. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rag_completeness.py +0 -0
  1073. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rag_extra_hint.py +0 -0
  1074. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rag_fastpath.py +0 -0
  1075. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rag_fusion.py +0 -0
  1076. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_read_text_arg.py +0 -0
  1077. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_registries_fresh.py +0 -0
  1078. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_registry.py +0 -0
  1079. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_registry_categories.py +0 -0
  1080. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_registry_control_chars.py +0 -0
  1081. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_registry_parallel.py +0 -0
  1082. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_release_guard.py +0 -0
  1083. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_release_preflight.py +0 -0
  1084. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_repo_root_guard.py +0 -0
  1085. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_report.py +0 -0
  1086. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_required_checks.py +0 -0
  1087. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rerank_cache.py +0 -0
  1088. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_resolve.py +0 -0
  1089. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1090. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_roadmap_fresh.py +0 -0
  1091. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_rules.py +0 -0
  1092. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1093. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_scale_corpus.py +0 -0
  1094. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_schedule_plist.py +0 -0
  1095. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_sdist_contents.py +0 -0
  1096. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_secretscan.py +0 -0
  1097. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_selfupdate.py +0 -0
  1098. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_serve.py +0 -0
  1099. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_serve_docs.py +0 -0
  1100. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shard_plan.py +0 -0
  1101. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shards.py +0 -0
  1102. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shards_carry_forward.py +0 -0
  1103. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shards_incremental.py +0 -0
  1104. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shards_ingest.py +0 -0
  1105. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_shards_matrix.py +0 -0
  1106. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1107. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_spdx_headers.py +0 -0
  1108. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_spin.py +0 -0
  1109. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_stackprobe.py +0 -0
  1110. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_staleness.py +0 -0
  1111. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_store.py +0 -0
  1112. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_store_materialize.py +0 -0
  1113. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_sync_blocked_links.py +0 -0
  1114. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_sync_lost_lock.py +0 -0
  1115. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1116. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_tap_pins.py +0 -0
  1117. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_token_parity.py +0 -0
  1118. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_toolchain_lock.py +0 -0
  1119. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_trustaudit.py +0 -0
  1120. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_typedvalue.py +0 -0
  1121. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_typosquat.py +0 -0
  1122. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_updatediff.py +0 -0
  1123. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_upstream_path.py +0 -0
  1124. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_util.py +0 -0
  1125. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_version.py +0 -0
  1126. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_version_tags.py +0 -0
  1127. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_vex.py +0 -0
  1128. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_visual_harness_capture.py +0 -0
  1129. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_visual_harness_flags.py +0 -0
  1130. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_workflow_concurrency.py +0 -0
  1131. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1132. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1133. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_workflow_timeouts.py +0 -0
  1134. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_workflows.py +0 -0
  1135. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1136. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/visual/a11y_check.mjs +0 -0
  1137. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/tests/visual/console_check.mjs +0 -0
  1138. {boost_skill_cli-1.2.180 → boost_skill_cli-1.2.182}/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.180
3
+ Version: 1.2.182
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.180'
22
- __version_tuple__ = version_tuple = (1, 2, 180)
21
+ __version__ = version = '1.2.182'
22
+ __version_tuple__ = version_tuple = (1, 2, 182)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -155,7 +155,12 @@ def _install_generated(name: str, text: str, yes: bool = False) -> None:
155
155
  with tempfile.TemporaryDirectory(prefix="boost-gen-") as td:
156
156
  src = Path(td) / name
157
157
  src.mkdir()
158
- (src / "SKILL.md").write_text(text, encoding="utf-8")
158
+ # newline="\n": install_from_path copies this into the canonical
159
+ # store and records util.sha256_dir over it, which hashes read_bytes.
160
+ # Every comparison against that hash is local today, so this is
161
+ # latent rather than live — but the digest it stamps into the lock
162
+ # would otherwise depend on which OS generated the skill.
163
+ (src / "SKILL.md").write_text(text, encoding="utf-8", newline="\n")
159
164
  try:
160
165
  res = store.install_from_path(src, name=name, tap_label="local")
161
166
  except BoostError as err:
@@ -799,7 +804,11 @@ def cmd_evolve(argv: list[str]) -> int:
799
804
  if not args.apply:
800
805
  out.info(out.role("re-run with --apply to write these changes", "muted"))
801
806
  return 0
802
- skill_md.write_text(new, encoding="utf-8")
807
+ # newline="\n": the next line hashes this file's bytes, and the store is
808
+ # what gets symlinked into every agent's skills dir. Same latent class as
809
+ # the generated-skill write above — nothing compares across machines
810
+ # today, and the recorded digest should not depend on one either way.
811
+ skill_md.write_text(new, encoding="utf-8", newline="\n")
803
812
  entry["sha256"] = util.sha256_dir(store.skill_store_dir(args.name))
804
813
  entry["updated_at"] = util.now_iso()
805
814
  entry["version"] = new_ver
@@ -506,7 +506,40 @@ def cmd_install(argv: list[str]) -> int:
506
506
  # one of them used to bind it: the preview returns early, so a `pbase`
507
507
  # assigned inside `if args.dry_run:` is unbound by the time the run path
508
508
  # reports prerequisites. `None` for every scope but `--local`.
509
- pbase = scopes.resolve_base(args.scope)
509
+ pbase, pbase_kind = (scopes.project_base()
510
+ if args.scope == scopes.SCOPE_PROJECT
511
+ else (None, None))
512
+ # Said once, before anything is written, and naming the directory. An
513
+ # unmarked tree has no project root to walk up to, so this call is what
514
+ # decides where the project *is* — and `proj/src` stays a different project
515
+ # from `proj` for every command afterwards. The warning is the difference
516
+ # between that being a decision and being a surprise. It warns and does
517
+ # not redirect, so it fires in both shapes: with an older project above it
518
+ # names that one, and with nothing above it says a new one starts here.
519
+ # The single silent case is a lock at this very directory, where `above`
520
+ # comes back equal to `pbase` — the project being used is the one already
521
+ # here, and there is nothing to tell anybody.
522
+ if pbase is not None and pbase_kind == scopes.BASE_UNMARKED:
523
+ # `project_lock_root` is advisory and decides nothing: it only lets
524
+ # the warning NAME the project the user probably meant. Resolution
525
+ # stays on version control markers alone, because moving the base up
526
+ # to an ancestor lock orphans the rules and workflows recorded below
527
+ # it — see that function for what verification reproduced.
528
+ above = scopes.project_lock_root(pbase)
529
+ if above is not None and above != pbase.resolve():
530
+ out.warn("there is already a boost project at `%s`, and --local "
531
+ "here starts a second one — cd there if you meant that "
532
+ "one" % above, wrap=True)
533
+ elif above is None:
534
+ # "between here and your home directory", not "at or above here":
535
+ # the walk stops at `$HOME` without testing it, so a dotfiles repo
536
+ # at `~/.git` — a setup `project_root`'s own docstring calls out —
537
+ # is a marker above this directory that it may not use. Claiming
538
+ # otherwise sent the reader to `~`, where the same command refuses.
539
+ out.warn("nothing between `%s` and your home directory marks a "
540
+ "project — no git/hg/svn checkout, no "
541
+ ".boost/skill-lock.json — so --local starts a new one "
542
+ "here" % pbase, wrap=True)
510
543
  only = _check_agents(args.agent)
511
544
  multi = len(args.names) > 1
512
545
  entries, failed = [], 0
@@ -594,9 +594,24 @@ def cmd_protocol(argv) -> int:
594
594
  paths.ensure_dirs()
595
595
  shim = paths.launcher()
596
596
  script = _handler_script()
597
+ # newline="\n" because this artifact is a bash script and bash is a
598
+ # non-Python parser reading it byte for byte. The write sits *above*
599
+ # the platform branch below, so unlike the Linux .desktop file it
600
+ # does run on Windows, where the stub at the end of this command
601
+ # tells the user to invoke the script themselves.
602
+ #
603
+ # Which CR failure bites is shell-specific and is deliberately not
604
+ # claimed here: "bad interpreter: bash\r" is kernel binfmt_script
605
+ # behaviour, and Windows has no kernel shebang support, so under
606
+ # Git Bash the shebang is likely tolerated while under WSL the
607
+ # launcher path is unexecutable for unrelated reasons. The URL route
608
+ # is ruled out — `_parse_boost_url` goes through `urlparse`, which
609
+ # strips CR. What is left is simply that the file is wrong, which is
610
+ # reason enough for a one-keyword pin.
597
611
  script.write_text("#!/usr/bin/env bash\n"
598
612
  "# boost:// URL handler — invoked with the URL as $1\n"
599
- 'exec "%s" protocol open "$1"\n' % shim, encoding="utf-8")
613
+ 'exec "%s" protocol open "$1"\n' % shim,
614
+ encoding="utf-8", newline="\n")
600
615
  script.chmod(script.stat().st_mode | stat.S_IEXEC)
601
616
  out.ok("wrote handler script %s" % _tilde(script))
602
617
  if system == "Darwin":
@@ -614,9 +614,30 @@ def plan_uninstall(shell: str) -> RcPlan:
614
614
 
615
615
  def apply(plan: RcPlan) -> Path:
616
616
  """Write ``plan``'s result. A no-op when it changes nothing, so an rc file
617
- keeps its mtime (and its place in the user's backups) on a repeat run."""
617
+ keeps its mtime (and its place in the user's backups) on a repeat run.
618
+
619
+ ``newline="\\n"`` because the reader here is **bash**, which does not
620
+ fold. The damage is worse than a stray character: measured on bash 3.2
621
+ and zsh, a CRLF rc file does not merely mangle tokens, it stops parsing
622
+ — ``fi\\r`` gives ``syntax error: unexpected end of file``, so nothing
623
+ after the user's first ``if`` or ``for`` runs at all.
624
+
625
+ This rewrites the user's **whole** ``~/.bashrc`` or ``~/.zshrc``, not
626
+ only the lines boost added, so an unpinned write on Windows re-endings a
627
+ file boost does not own — ``tests (windows-latest, 3.14)`` measured
628
+ ``b'export A=1\\r\\neval "$(boost _complete)"\\r\\n'`` from a one-line
629
+ rc. Pinning cuts the same way: it normalizes the whole file to LF,
630
+ including lines boost never wrote, which is what bash wants and is still
631
+ a change beyond boost's own three. The one shell that might forgive CRLF
632
+ is MSYS2/Cygwin bash with ``shopt igncr``, which is off by default.
633
+
634
+ Idempotence is unaffected either way: :func:`_read_rc` reads through
635
+ universal newlines, so the next run compares LF to LF and reports no
636
+ change — which is also why boost would never repair a file it had
637
+ mangled, and would keep saying "already wired" over it.
638
+ """
618
639
  if plan.changes:
619
- plan.path.write_text(plan.after, encoding="utf-8")
640
+ plan.path.write_text(plan.after, encoding="utf-8", newline="\n")
620
641
  return plan.path
621
642
 
622
643
 
@@ -22,10 +22,10 @@ from __future__ import annotations
22
22
  import os
23
23
  import re
24
24
  from contextlib import suppress
25
- from pathlib import Path
25
+ from pathlib import Path, PurePosixPath, PureWindowsPath
26
26
 
27
27
  from ..errors import BoostError
28
- from . import paths
28
+ from . import paths, projectlock
29
29
 
30
30
  SCOPE_USER = "user"
31
31
  SCOPE_PROJECT = "project"
@@ -48,6 +48,12 @@ PROJECT_MARKERS = (".git", ".hg", ".svn")
48
48
  # before it is ever joined — the same rule the canonical store applies.
49
49
  _SAFE_NAME = re.compile(r"[A-Za-z0-9._-]+")
50
50
 
51
+ # How :func:`project_base` decided, so a caller can tell the two apart without
52
+ # walking the tree a second time and risking a different answer than the walk
53
+ # that actually chose the directory.
54
+ BASE_VCS = "vcs" # a PROJECT_MARKERS entry at or above the start
55
+ BASE_UNMARKED = "unmarked" # none — the start directory becomes a project
56
+
51
57
 
52
58
  def project_root(start=None) -> Path | None:
53
59
  """Nearest enclosing project root at or above ``start`` (default: cwd).
@@ -58,8 +64,8 @@ def project_root(start=None) -> Path | None:
58
64
  repo's ``.claude/skills``, not create a stray one three levels down.
59
65
 
60
66
  **This is the marker walk, not the answer to "where is the project".** That
61
- is :func:`resolve_base`, which adds the unmarked-directory fallback, and it
62
- is what every caller should use — a command that asks this one directly
67
+ is :func:`resolve_base`, which adds the unmarked-directory fallback on top
68
+ of it, and it is what every caller should use — a command that asks this one directly
63
69
  disagrees with ``install --local`` about whether an unmarked directory is a
64
70
  project, which is how ``verify``/``list``/``doctor``/``uninstall`` came to
65
71
  deny skills that ``install`` had just written and ``sync`` could still see.
@@ -87,27 +93,74 @@ def project_root(start=None) -> Path | None:
87
93
  return None
88
94
 
89
95
 
90
- def resolve_base(scope: str, base=None, start=None) -> Path | None:
91
- """Directory a scope materializes under — ``None`` for user scope.
96
+ def project_lock_root(start=None) -> Path | None:
97
+ """Nearest ancestor at or above ``start`` that already holds a project lock.
98
+
99
+ **This does not decide where anything is written.** It is an advisory
100
+ answer to "is there already a boost project up there?", used by
101
+ ``install --local`` to name it in the warning it prints when it is about
102
+ to start a new one. :func:`project_base` is what decides the directory,
103
+ and it consults version control markers and nothing else.
104
+
105
+ It is deliberately not in the resolution path, and the reason is worth
106
+ recording because the roadmap card that produced this function proposed
107
+ putting it there. Moving the resolved base *up* to an ancestor lock
108
+ orphans every rule and workflow already recorded *below* it: those are
109
+ kept in the **user** lock tagged with an absolute ``base``
110
+ (``store._install_rule``), and ``--local`` eligibility is
111
+ :func:`owns` against the base resolved right now. So one
112
+ ``install <skill> --local`` at ``proj`` would make a rule installed at
113
+ ``proj/src`` invisible to ``list --local`` and unremovable by
114
+ ``uninstall --local`` — from ``proj/src`` as much as from ``proj`` — with
115
+ ``uninstall`` saying "installed in proj/src, not in this project" to
116
+ somebody standing in ``proj/src``. Verification reproduced that end to
117
+ end. The walk also only ever engages for skills: ``_install_rule`` and
118
+ ``_install_workflow`` write no project lock at all, so it would fix one
119
+ kind of three.
120
+
121
+ **The marker is the lock file, not the ``.boost`` directory**, and that is
122
+ the whole reason this can exist beside the note on :data:`PROJECT_MARKERS`
123
+ refusing ``.boost``. boost's own state dir is ``~/.boost`` and it holds a
124
+ ``config.json``, a ``cache/`` and a ``state/`` — never a
125
+ ``skill-lock.json``, which only :mod:`.projectlock` writes and only into a
126
+ project. So the one directory a ``.boost`` marker would have wrongly
127
+ claimed is the one this never matches, and ``$HOME`` is refused outright
128
+ below regardless.
129
+ """
130
+ try:
131
+ here = Path(start).resolve() if start is not None else Path.cwd().resolve()
132
+ except OSError:
133
+ return None
134
+ try:
135
+ home = Path(paths.home()).resolve()
136
+ except OSError:
137
+ home = None
138
+ for d in (here, *here.parents):
139
+ if home is not None and d == home:
140
+ return None
141
+ if projectlock.exists(d):
142
+ return d
143
+ return None
92
144
 
93
- An explicit ``base`` always wins, so a re-materialization driven by a lock
94
- record (``update``, ``sync``) lands where the original install did rather
95
- than in whatever directory the command happens to be run from.
96
145
 
97
- Project scope with no explicit base resolves the nearest project root, and
98
- falls back to ``start``/cwd when there is none — an unmarked directory is
99
- still a perfectly good place to put a project's skills, and refusing would
100
- only be pedantry. The one directory that is never an acceptable fallback is
101
- ``$HOME``: writing "project" files there means writing into the very dirs
102
- user scope owns, so callers get ``None`` and can say so.
146
+ def project_base(start=None) -> tuple[Path | None, str | None]:
147
+ """Where project scope materializes, **and how that was decided**.
148
+
149
+ One walk, one answer. ``install --local`` has to warn when it is the call
150
+ that creates the project, and re-deriving *that* in the command layer
151
+ would mean a second walk that can disagree with the one that chose the
152
+ directory — the exact shape of the reader/writer split ``fix(scope)``
153
+ closed. So the decision is made once, here, and the reason travels with
154
+ it. (The command layer does call :func:`project_lock_root` afterwards, to
155
+ name an existing project in the warning text. That one decides no
156
+ destination, so it cannot disagree with anything.)
157
+
158
+ Returns ``(None, None)`` when there is nowhere to put a project — standing
159
+ in ``$HOME``, or with no working directory at all.
103
160
  """
104
- if base:
105
- return Path(base)
106
- if scope != SCOPE_PROJECT:
107
- return None
108
161
  found = project_root(start)
109
162
  if found is not None:
110
- return found
163
+ return found, BASE_VCS
111
164
  if start is not None:
112
165
  here = Path(start)
113
166
  else:
@@ -118,11 +171,37 @@ def resolve_base(scope: str, base=None, start=None) -> Path | None:
118
171
  # under the process. `project_root` has always answered None here;
119
172
  # this must too, or the readers that now come through this function
120
173
  # crash where they used to print a user-scope answer and exit 0.
121
- return None
174
+ return None, None
122
175
  with suppress(OSError):
123
176
  if here.resolve() == Path(paths.home()).resolve():
124
- return None
125
- return here
177
+ return None, None
178
+ return here, BASE_UNMARKED
179
+
180
+
181
+ def resolve_base(scope: str, base=None, start=None) -> Path | None:
182
+ """Directory a scope materializes under — ``None`` for user scope.
183
+
184
+ An explicit ``base`` always wins, so a re-materialization driven by a lock
185
+ record (``update``, ``sync``) lands where the original install did rather
186
+ than in whatever directory the command happens to be run from.
187
+
188
+ Project scope with no explicit base defers to :func:`project_base`: the
189
+ nearest version control root, else ``start``/cwd — an unmarked directory
190
+ is still a perfectly good place to put a project's skills, and refusing would only be
191
+ pedantry. The one directory that is never an acceptable fallback is
192
+ ``$HOME``: writing "project" files there means writing into the very dirs
193
+ user scope owns, so callers get ``None`` and can say so.
194
+
195
+ This keeps the path and drops the kind. A caller that needs to know
196
+ *which* of the three answered — ``install --local`` warns when it is the
197
+ call that creates the project — takes the pair from :func:`project_base`
198
+ rather than walking again.
199
+ """
200
+ if base:
201
+ return Path(base)
202
+ if scope != SCOPE_PROJECT:
203
+ return None
204
+ return project_base(start)[0]
126
205
 
127
206
 
128
207
  def owned_by(entries: dict, base) -> dict:
@@ -330,14 +409,40 @@ def parent_matches_spelling(base, rel: str) -> bool:
330
409
  The leaf itself is deliberately left unresolved. A materialization that
331
410
  *is* a symlink is boost's own, and ``util.remove_path`` unlinks it without
332
411
  following it — judging it by what it points at is the bug one layer down.
412
+
413
+ **Absolute is asked of both platforms, not of the one running.** A plain
414
+ ``Path(rel)`` is a ``WindowsPath`` on Windows, where ``/etc/passwd``
415
+ carries no drive and ``is_absolute()`` is therefore ``False``. The join
416
+ then yields ``C:\\etc\\passwd`` — outside the base — and *both sides of
417
+ comparison leave it the same way*, so the walk agrees with itself and this
418
+ answers True for a path that is not in the repo at all. All three
419
+ ``tests (windows-latest, 3.1x)`` jobs said so the first time these clauses
420
+ were tested directly. The mirror case is a drive letter or a UNC path,
421
+ which ``PurePosixPath`` does not call absolute either. A lock is a
422
+ committed file and the machine that wrote a row need not be the one
423
+ reading it, so the spelling to refuse is whatever is absolute *anywhere*.
424
+ A posix directory genuinely named ``C:`` is refused as collateral, which
425
+ is the safe direction for a guard whose other answer hands ``rmtree`` a
426
+ target.
427
+
428
+ **The NUL is refused by name, on both arguments.** Relying on ``realpath``
429
+ to raise is relying on the half of the behaviour that differs: posix
430
+ raises ``ValueError`` and the ``except`` catches it, Windows does not
431
+ raise and the guard returned True. ``base`` is checked as well as ``rel``
432
+ because it has the same provenance — ``store`` derives it from the lock's
433
+ own recorded ``base`` — and none of the ``rel`` clauses can see it.
333
434
  """
334
- if not rel or not isinstance(rel, str) or Path(rel).is_absolute():
435
+ if not rel or not isinstance(rel, str):
436
+ return False
437
+ if PurePosixPath(rel).is_absolute() or PureWindowsPath(rel).is_absolute():
335
438
  return False
336
439
  try:
440
+ if "\x00" in rel or "\x00" in os.fspath(base):
441
+ return False
337
442
  anchor = Path(os.path.realpath(base))
338
443
  return Path(os.path.realpath((Path(base) / rel).parent)) == (
339
444
  anchor / rel).parent
340
- except (OSError, ValueError):
445
+ except (OSError, TypeError, ValueError):
341
446
  return False
342
447
 
343
448
 
@@ -187,7 +187,8 @@ def try_lock(path, stale_after: float = 300.0):
187
187
  yield False
188
188
  return
189
189
  try:
190
- with contextlib.suppress(OSError), os.fdopen(fd, "w") as f:
190
+ with contextlib.suppress(OSError), os.fdopen(
191
+ fd, "w", encoding="utf-8") as f:
191
192
  fd = None # fdopen owns it now
192
193
  f.write(str(os.getpid()))
193
194
  yield True
@@ -209,13 +210,38 @@ def atomic_write_text(path: Path, text: str, encoding: str = "utf-8") -> None:
209
210
  complete new one atomically replaces it. This is the corruption-safe
210
211
  substitute for a bare ``Path.write_text`` on any file boost must not lose —
211
212
  the lock file, the config, the pulse journal.
213
+
214
+ ``newline="\\n"`` is load-bearing, and it is the one line here that a
215
+ Linux run cannot check. Text mode translates ``"\\n"`` to the platform
216
+ separator on write, so on Windows this wrote CRLF into seventeen of the
217
+ nineteen — measured, not predicted: ``tests (windows-latest, 3.14)`` on
218
+ this branch's parent commit reported ``assert b'\\r' not in
219
+ b'a\\r\\nb\\r\\n'`` against the test below. The other two
220
+ (``rag.py``'s BM25 index and rerank cache) pass bare ``json.dumps`` and
221
+ emit no literal newline at all, so the pin is inert for them.
222
+
223
+ **The reader that makes it matter is git, and only one call site hands
224
+ it anything.** ``projectlock.write`` stamps
225
+ ``<repo>/.boost/skill-lock.json``, which that module's own docstring
226
+ says "is meant to be **committed** … git is its history". Everything
227
+ else here is read back through ``json`` or ``read_text``, both of which
228
+ fold. It is explicitly **not** ``sha256_dir``: all eighteen of those
229
+ call sites hash a ``copytree``-populated skill dir or a tap clone, never
230
+ a file this function wrote — an earlier draft of this paragraph claimed
231
+ otherwise and was wrong.
232
+
233
+ ``tests/unit/test_text_io_names_its_encoding.py``'s
234
+ ``TestAPinnedWriterReallyEmitsLF`` asserts on bytes rather than on the
235
+ presence of this keyword, because an AST check proves only that it is
236
+ spelled. That test arrived with this change, so it corroborates the pin
237
+ rather than independently motivating it.
212
238
  """
213
239
  path = Path(path)
214
240
  path.parent.mkdir(parents=True, exist_ok=True)
215
241
  fd, tmp = tempfile.mkstemp(dir=str(path.parent),
216
242
  prefix="." + path.name + ".", suffix=".tmp")
217
243
  try:
218
- with os.fdopen(fd, "w", encoding=encoding) as f:
244
+ with os.fdopen(fd, "w", encoding=encoding, newline="\n") as f:
219
245
  f.write(text)
220
246
  f.flush()
221
247
  os.fsync(f.fileno())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.180
3
+ Version: 1.2.182
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -693,6 +693,7 @@ docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md
693
693
  docs/roadmap/items/the-model-back-off-mixes-two-clocks.md
694
694
  docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md
695
695
  docs/roadmap/items/the-shard-job-that-could-not-finish.md
696
+ docs/roadmap/items/the-shard-model-has-no-per-job-fixed-cost.md
696
697
  docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md
697
698
  docs/roadmap/items/theme-asset-linting-stylelint-eslint.md
698
699
  docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md
@@ -2,15 +2,15 @@
2
2
  id: project-scope-in-an-unmarked-tree-does-not-walk-up
3
3
  board: code
4
4
  section: dx
5
- status: planned
5
+ status: inflight
6
6
  category: CLI · Bug
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 2
10
- note: install --local from a subdirectory of an unmarked project creates a second lock there
10
+ note: (c) shipped; (a) built, reproduced as a regression and withdrawn — it orphans the rules and workflows recorded below the lock it walks up to, and engages for one item kind of three
11
11
  order: 236
12
- owner:
13
- pr:
12
+ owner: loop/project-scope-walks-up
13
+ pr: 1034
14
14
  title: "Project scope in an unmarked tree does not walk up, so <code>src/</code> becomes its own project"
15
15
  ---
16
16
  <code>scopes.resolve_base</code> walks up for a VCS marker and, finding none, falls back to the
@@ -35,7 +35,26 @@ the nearest ancestor that is not <code>$HOME</code> &middot; too greedy, it woul
35
35
  sibling directories. Option (c): keep today's behaviour and say so &middot; have
36
36
  <code>install --local</code> warn once when it is about to create a project in a directory with no VCS
37
37
  marker, naming the directory, so the second lock is a decision rather than a surprise. (c) is the
38
- cheapest and the most honest; (a) is worth pairing with it for every command after the first.
38
+ cheapest and the most honest; (a) looked worth pairing with it for every command after the first.
39
+
40
+ <b>(c) shipped alone &middot; (a) was built, reproduced as a regression, and withdrawn.</b> The lock
41
+ walk exists (<code>scopes.project_lock_root</code>) but is <em>advisory</em>: it lets the warning name
42
+ the project above you, and decides no destination. Putting it in the resolution path broke two things
43
+ the sketch above did not anticipate. First, <b>it orphans the records below it</b> &middot; a rule or
44
+ workflow installed with <code>--local</code> lives in the <em>user</em> lock against an absolute
45
+ <code>base</code>, and <code>--local</code> eligibility is <code>scopes.owns</code> against the base
46
+ resolved <em>now</em> &mdash; so one <code>install &lt;skill&gt; --local</code> at <code>proj</code>
47
+ made a rule at <code>proj/src</code> invisible to <code>list --local</code> and unremovable by
48
+ <code>uninstall --local</code>, from <code>proj/src</code> as much as from <code>proj</code>, with the
49
+ refusal naming the directory the user was standing in and the two error messages giving mutually
50
+ unsatisfiable instructions. Second, <b>it engages for one kind of three</b> &middot;
51
+ <code>_install_rule</code> and <code>_install_workflow</code> write no
52
+ <code>.boost/skill-lock.json</code> at all, so a tree holding only those never gains the marker, which
53
+ is also why the warning (c) adds can never be silenced there. The first is pinned by
54
+ <code>test_a_rule_below_an_ancestor_lock_is_still_removable_locally</code>, which fails the moment the
55
+ walk is put back; the second is a property of the installers rather than of this change, so nothing
56
+ here asserts it. Making the walk safe means giving rules and workflows a project boundary of their
57
+ own, and that is a different card.
39
58
 
40
59
  Found by the adversarial verification of PR #998, which reproduced it end to end. <code>$HOME</code>
41
60
  is still never a project and deletion is still gated by <code>resolve_in_base</code>, so this is a
@@ -2,7 +2,7 @@
2
2
  id: shard-weights-do-not-predict-the-job-timeout
3
3
  board: code
4
4
  section: trust
5
- status: inflight
5
+ status: shipped
6
6
  category: CI · Bug
7
7
  complexity: M
8
8
  impact: High
@@ -78,17 +78,48 @@ hide which had happened.
78
78
  <b>It reproduces the failure it was derived to predict.</b> Six shards at these weights:
79
79
  37.8 median minutes &times; 1.91 = a <b>72.3-minute tail</b> against a real worst job of
80
80
  <b>72.5</b> &mdash; 96% of the cap. <code>plan --explain --timeout-minutes 75</code> now prints
81
- that and exits 1. The matrix moved to <b>eight</b>, where the same arithmetic gives 28.4 &times;
82
- 1.91 = <b>54.2 min, 72% of the cap</b>; the largest unit (4,063,161 ms) still fits inside an even
83
- share (5,543,280 ms), so the speedup cap is a full 8.00x and more shards cost nothing but runner
84
- slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
81
+ that and exits 1. The matrix moved to <b>eight</b> and then, once the weights were
82
+ re-anchored, to <b>twelve</b>, where the same arithmetic gives 28.5 &times; 1.91 = <b>54.4 min,
83
+ 72% of the cap</b>; the largest unit still fits inside an even share, so the speedup cap is the
84
+ full width and more shards cost nothing but runner slots. <code>tests/unit/test_mutation_shard_count.py</code> pins the shard count across
85
85
  <code>ci.yml</code> and <code>mutation-weights-refresh.yml</code> (<code>timeout-minutes</code>
86
86
  cannot be read through <code>${{ }}</code>, so agreement is asserted rather than derived), and
87
87
  re-runs the headroom check on the committed pack every build &mdash; a pack that would be
88
88
  cancelled now fails in the <code>test</code> job in milliseconds.
89
89
 
90
- <b>Not fixed here, and now its own card:</b> a <code>cancelled</code> <code>ci</code> on main is
91
- still silent. <code>ci-failure-alert</code> gates on
92
- <code>conclusion == 'failure'</code>, so the run that skipped the release notified nobody either
93
- &mdash; see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code>.
90
+ <b>Twelve has now run, and it cost more than the plan said &mdash; which is the finding this
91
+ card closes on.</b> Over the 24 jobs of the two twelve-shard runs (<code>d7027cf8</code> and
92
+ main's <code>58ace415</code>) the observed p50 is <b>34.6 min</b> against the 28.5 predicted, and
93
+ the worst job <b>55.8</b> against the 54.4-minute tail those runs' own gate printed: 74% of the
94
+ cap. That exceedance is not new, and the tempting reading &mdash; that twelve is where the tail
95
+ estimate first broke &mdash; is wrong in the flattering direction. Replay every run's gate as it
96
+ actually stood &mdash; that commit's
97
+ own script against its own weights &mdash; and the predicted tail has been beaten at <b>four of
98
+ the six runs on record</b>: +1.1, +0.4 and <b>+8.9</b> at eight shards (<code>dd416340</code>,
99
+ 54.2 predicted against a 63.1 worst) and +1.4 at twelve. The largest miss on record belongs to
100
+ eight.
101
+
102
+ <b>The width stands on that measured 74%. What does not stand is the margin the planner
103
+ prints.</b> On the weights committed since (#1032, a re-timing of the same mutants)
104
+ <code>plan --shards 12</code> says a 25.2-minute median and a 48.0-minute tail, 64% of the cap
105
+ &mdash; so today's pack, asked about the run its own weights were timed from, under-predicts that
106
+ job by <b>7.8 minutes</b>. That is the prospective basis, which is the one that matters before
107
+ the next run and is <em>not</em> comparable to the replay figures above. Scored on the observed
108
+ median at the committed <code>TAIL_MULTIPLIER</code> the pack is 34.6 &times; 1.91 = 66.0 min,
109
+ <b>88% of the cap</b>.
110
+
111
+ <b>So the cap question is answered by a model that is the wrong shape, not merely mis-fitted.</b>
112
+ Graded against weights measured at its own width, eight implies a <code>RUNNER_EFFICIENCY</code>
113
+ of 0.832 and twelve implies 0.593 &mdash; 40% apart, and no single multiplicative constant is
114
+ both. The median falling only to 0.83 of itself where division through the origin predicts 0.667
115
+ says the same thing without reference to any weights at all.
116
+
117
+ <b>Not fixed here, and now its own card:</b> the model has no per-job <em>fixed</em> cost, so it
118
+ flatters every width above the one it was fitted at &mdash; see
119
+ <code>the-shard-model-has-no-per-job-fixed-cost</code>. Still tracked separately, and no longer
120
+ by the mechanism this card first described: a <code>cancelled</code> <code>ci</code> on main used
121
+ to notify nobody, because <code>ci-failure-alert</code> gated on <code>conclusion ==
122
+ 'failure'</code>. #1025 inverted that to the negation of the green set, so a cancellation does
123
+ alert now &mdash; see <code>cancelled-ci-on-main-is-silent-and-skips-the-release</code> for what
124
+ is left of it.
94
125
 
@@ -0,0 +1,81 @@
1
+ ---
2
+ id: the-shard-model-has-no-per-job-fixed-cost
3
+ board: code
4
+ section: trust
5
+ status: planned
6
+ category: CI · Model
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note: the plan divides by every shard added, so it flatters every width above the one it was fitted at
11
+ order: 367
12
+ owner:
13
+ pr:
14
+ title: "The shard model runs through the origin, so <code>plan</code> gets more optimistic with every shard added"
15
+ ---
16
+ <b>The cleanest statement of it needs no weights at all.</b> Going from eight shards to twelve,
17
+ a model that divides work by the shard count predicts the median job falls to <b>0.667</b> of
18
+ itself. It fell to <b>0.83</b> &mdash; 41.8 min over the 24 jobs of the three eight-shard runs to
19
+ 34.6 over the 24 jobs of the two twelve-shard runs. Correcting for the one thing the weights
20
+ do say &mdash; #1032 re-timed the same mutants 0.884&times; cheaper &mdash; moves the prediction
21
+ to <b>0.589</b> and widens the gap, so the uncorrected figure is the conservative one. No value
22
+ of <code>RUNNER_EFFICIENCY</code> produces either, because the error is in the shape and not in the
23
+ constant: <code>runner_minutes</code> is <code>weight / (RUNNER_WORKERS &times;
24
+ RUNNER_EFFICIENCY)</code>, linear through the origin, and what is missing is a per-job
25
+ <em>fixed</em> cost.
26
+
27
+ <b>Graded like for like, the two widths disagree by 40%.</b> Each width has to be scored against
28
+ weights measured at that width: #1029's 66,708,651 ms total was measured on an eight-shard run,
29
+ and #1032's 58,969,820 was re-timed from CI run 37200431822 &mdash; which is
30
+ <code>58ace415</code>, one of the two twelve-shard runs being graded. On that footing eight
31
+ implies an efficiency of <b>0.832</b> and twelve implies <b>0.593</b>. Reading both against one
32
+ frozen total hides this, and understates the gap as 24%.
33
+
34
+ <b>C is large and five routes do not agree on how large.</b> They differ in whether they use
35
+ medians or machine-minute sums, and in whether #1032's 0.884x re-timing is read as the work
36
+ really getting cheaper between the two widths: <b>20.2</b> and <b>24.2</b> min a job from the two
37
+ p50s, <b>14.4</b> and <b>19.8</b> from the matrix totals (347.6 machine-minutes at eight over
38
+ four runs, 404.9 at twelve over two), and <b>26.9</b> from the six-to-eight step of 2026-10-02
39
+ &mdash; 287.2 &rarr; 341.0 machine-minutes two hours apart with the width the only change. So
40
+ <b>C is 14 to 27 min a job</b>. A two-point solve is exactly determined and therefore not
41
+ falsifiable; fitting C needs a third width, not more runs at twelve.
42
+
43
+ <b>And C cannot be bolted on beside the efficiency, which is the part that makes this a card
44
+ rather than a one-line patch.</b> Subtract any C in that range from the matrix total and the
45
+ parallel work left over implies a speedup above four on a four-vCPU runner: C = 14.4 leaves 232.4
46
+ min against 1,111.8 weight-minutes, which is <b>4.78</b> effective workers, and C = 24.2 leaves
47
+ 154.0, which is <b>7.22</b>. An efficiency over 1.0 is a contradiction, not a tight fit, so the
48
+ weights overstate real serial work by roughly the same factor and
49
+ <code>PLANNED_TOTAL_MS</code> cannot serve as the fixed reference a re-fit is measured against.
50
+ A hypothesis, named as one because it has not been measured: mutmut times each mutant while four
51
+ of them run at once, so a per-mutant duration may already carry the contention
52
+ <code>RUNNER_EFFICIENCY</code> exists to apply.
53
+
54
+ <b>The naive remedy is worse than the status quo, so it is worth writing down as refuted.</b>
55
+ Adding C to the existing conversion with the committed efficiency &mdash; <code>C +
56
+ runner_minutes(w)</code> at C = 20, each width on its own weights as this card requires &mdash;
57
+ predicts <b>62.7 min at eight</b> against an observed 41.8 and <b>45.2 at twelve</b> against an
58
+ observed 34.6: over-predicting by <b>50%</b> and <b>31%</b>. The bias is not even, which is the
59
+ point &mdash; a fixed term added to an unchanged efficiency does not just shift the answer, it
60
+ gets the width dependence wrong in the other direction. The tail it produces at twelve is
61
+ <b>86.2 min, 115% of the cap</b>: the planner would refuse the width CI
62
+ runs green today. C and <code>RUNNER_EFFICIENCY</code> have to move together, and whatever they
63
+ do to the predicted median then has to be reconciled with
64
+ <code>TAIL_MULTIPLIER</code>, whose over-estimate is currently covering for the median being low.
65
+
66
+ <b>It is not CI setup, and that is the cheap half to check.</b> Stepping all 24 twelve-shard jobs
67
+ through the Actions job API, everything that is not the <code>mutate shard</code> step is a
68
+ median <b>0.5 min</b> &mdash; the 1.7% the constant's docstring already measured at six, still
69
+ true. So the fixed cost is inside mutmut: a baseline test run (the <code>tests</code> job on
70
+ those two runs took 7.8 and 8.6 min) and per-job mutant collection are the candidates, and
71
+ neither has been measured. Measuring them would turn the 14-27 range into a mechanism.
72
+
73
+ <b>Why it matters even though nothing is red.</b> Twelve sits at 74% of the cap empirically and
74
+ the gate passes. But <code>plan</code> reports 64% on the committed pack against that same
75
+ measured 74%, and goes on reporting 48% at sixteen, where the real floor is <code>C &times;
76
+ TAIL_MULTIPLIER</code> however many shards are added. So the one question the planner exists to
77
+ answer &mdash; "is this width safe?" &mdash; is answered optimistically for every width above the
78
+ fitted one, and the answer gets more optimistic the further you go. Until C is fitted,
79
+ <code>test_the_committed_width_has_actually_run</code> refuses a <code>SHARDS</code> nothing has
80
+ been observed at, and <code>test_todays_pack_under_predicts_the_worst_twelve_shard_job</code>
81
+ pins the 7.8-minute shortfall so it cannot drift unnoticed.