boost-skill-cli 1.2.152__tar.gz → 1.2.153__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 (1114) hide show
  1. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/CLAUDE.md +18 -3
  2. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/Makefile +8 -3
  3. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/PKG-INFO +1 -1
  4. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/_version.py +2 -2
  5. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  6. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +11 -5
  7. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +1 -1
  8. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap.html +14 -53
  9. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_corpus_prose.py +215 -0
  10. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitattributes +0 -0
  11. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitignore +0 -0
  12. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.gitleaks.toml +0 -0
  13. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.htmlvalidate.json +0 -0
  14. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.lighthouserc.json +0 -0
  15. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.lycheeignore +0 -0
  16. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.markdownlint-cli2.jsonc +0 -0
  17. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.pre-commit-config.yaml +0 -0
  18. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.stylelintrc.json +0 -0
  19. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/boost/AIWriting.yml +0 -0
  20. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/boost/Terminology.yml +0 -0
  21. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  22. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/.vale.ini +0 -0
  23. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/CODE_OF_CONDUCT.md +0 -0
  24. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/CONTRIBUTING.md +0 -0
  25. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/DCO +0 -0
  26. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/GOVERNANCE.md +0 -0
  27. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/LICENSE +0 -0
  28. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/MAINTAINERS.md +0 -0
  29. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/MANIFEST.in +0 -0
  30. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/README.md +0 -0
  31. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/SECURITY.md +0 -0
  32. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/SUPPORT.md +0 -0
  33. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost +0 -0
  34. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/__init__.py +0 -0
  35. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/__main__.py +0 -0
  36. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/cli.py +0 -0
  37. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/cliparse.py +0 -0
  38. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/__init__.py +0 -0
  39. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/_common.py +0 -0
  40. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/bmad.py +0 -0
  41. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/configuration.py +0 -0
  42. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/discovery.py +0 -0
  43. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/hooks.py +0 -0
  44. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/info.py +0 -0
  45. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/intelligence.py +0 -0
  46. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/pkg.py +0 -0
  47. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/quality.py +0 -0
  48. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/quickstart.py +0 -0
  49. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/run.py +0 -0
  50. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/safety.py +0 -0
  51. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/taps.py +0 -0
  52. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/commands/team.py +0 -0
  53. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/__init__.py +0 -0
  54. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/adapters.py +0 -0
  55. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/agents.py +0 -0
  56. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/ai.py +0 -0
  57. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/aihost.py +0 -0
  58. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/archive.py +0 -0
  59. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/bmad.py +0 -0
  60. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/bootstrap.py +0 -0
  61. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/browse.py +0 -0
  62. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/builtin.py +0 -0
  63. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/capabilities.py +0 -0
  64. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/catalog.py +0 -0
  65. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/catalogbundle.py +0 -0
  66. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/chat.py +0 -0
  67. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/claude_settings.py +0 -0
  68. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/cohort.py +0 -0
  69. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/compact.py +0 -0
  70. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/complete.py +0 -0
  71. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/config.py +0 -0
  72. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/dense.py +0 -0
  73. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/deps.py +0 -0
  74. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/discovery.py +0 -0
  75. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/ed25519.py +0 -0
  76. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/embed.py +0 -0
  77. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/faithfulness.py +0 -0
  78. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/frontmatter.py +0 -0
  79. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/gitutil.py +0 -0
  80. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/hookhost.py +0 -0
  81. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/imperative.py +0 -0
  82. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/injectscan.py +0 -0
  83. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/installscan.py +0 -0
  84. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/integrity.py +0 -0
  85. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/journal.py +0 -0
  86. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/jsonstate.py +0 -0
  87. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/localembed.py +0 -0
  88. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/lockfile.py +0 -0
  89. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/logs.py +0 -0
  90. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcp.py +0 -0
  91. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcpdecl.py +0 -0
  92. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/mcphost.py +0 -0
  93. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/minisign.py +0 -0
  94. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/nethttp.py +0 -0
  95. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/output.py +0 -0
  96. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/paths.py +0 -0
  97. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/policy.py +0 -0
  98. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/prereq.py +0 -0
  99. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/projectlock.py +0 -0
  100. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/provenance.py +0 -0
  101. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/rag.py +0 -0
  102. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/registry.py +0 -0
  103. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/report.py +0 -0
  104. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/resolve.py +0 -0
  105. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/rules.py +0 -0
  106. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/scopes.py +0 -0
  107. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/secretscan.py +0 -0
  108. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/selfupdate.py +0 -0
  109. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/serve.py +0 -0
  110. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/shards.py +0 -0
  111. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/stackprobe.py +0 -0
  112. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/staleness.py +0 -0
  113. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/store.py +0 -0
  114. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/trustaudit.py +0 -0
  115. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/typedvalue.py +0 -0
  116. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/typosquat.py +0 -0
  117. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/updatediff.py +0 -0
  118. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/util.py +0 -0
  119. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/core/workflows.py +0 -0
  120. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/data/registries.json +0 -0
  121. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/data/rules/boost-first.mdc +0 -0
  122. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/errors.py +0 -0
  123. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_cli/spin.py +0 -0
  124. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/__init__.py +0 -0
  125. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/_compat.py +0 -0
  126. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/graph.py +0 -0
  127. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/loader.py +0 -0
  128. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/py.typed +0 -0
  129. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_langchain/retriever.py +0 -0
  130. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  131. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  132. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  133. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/requires.txt +0 -0
  134. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/boost_skill_cli.egg-info/top_level.txt +0 -0
  135. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/codecov.yml +0 -0
  136. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/DEBUGGING.md +0 -0
  137. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/adapters.html +0 -0
  138. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/README.md +0 -0
  139. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-components-core.md +0 -0
  140. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-containers.md +0 -0
  141. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-context.md +0 -0
  142. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/architecture/c4-dynamic-install.md +0 -0
  143. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/bmad.md +0 -0
  144. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/distill.gif +0 -0
  145. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/doctor.gif +0 -0
  146. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/explain.gif +0 -0
  147. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/hooks.gif +0 -0
  148. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/install.gif +0 -0
  149. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/pulse.gif +0 -0
  150. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/search.gif +0 -0
  151. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/gifs/tap.gif +0 -0
  152. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/distill.tape +0 -0
  153. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/doctor.tape +0 -0
  154. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/explain.tape +0 -0
  155. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/hooks.tape +0 -0
  156. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/install.tape +0 -0
  157. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/pulse.tape +0 -0
  158. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/search.tape +0 -0
  159. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel/tapes/tap.tape +0 -0
  160. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/carousel.html +0 -0
  161. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/chat.html +0 -0
  162. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/code-review.md +0 -0
  163. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/commands.html +0 -0
  164. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/commit-audit.md +0 -0
  165. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo-index.json +0 -0
  166. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.gif +0 -0
  167. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.html +0 -0
  168. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/demo.tape +0 -0
  169. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/dependencies.md +0 -0
  170. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/design-roadmap.html +0 -0
  171. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/eval-latest.json +0 -0
  172. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/eval.html +0 -0
  173. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/index.html +0 -0
  174. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/langchain.html +0 -0
  175. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/mcp-hub.html +0 -0
  176. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/openssf-badge.md +0 -0
  177. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/openssf-playbook.md +0 -0
  178. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/rag-architecture.md +0 -0
  179. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D01.md +0 -0
  180. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D02.md +0 -0
  181. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D03.md +0 -0
  182. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D04.md +0 -0
  183. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D05.md +0 -0
  184. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D06.md +0 -0
  185. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D07.md +0 -0
  186. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D08.md +0 -0
  187. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D09.md +0 -0
  188. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D10.md +0 -0
  189. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D11.md +0 -0
  190. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D12.md +0 -0
  191. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D13.md +0 -0
  192. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D14.md +0 -0
  193. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D15.md +0 -0
  194. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D16.md +0 -0
  195. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D17.md +0 -0
  196. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D18.md +0 -0
  197. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D19.md +0 -0
  198. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D20.md +0 -0
  199. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D21.md +0 -0
  200. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D22.md +0 -0
  201. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D23.md +0 -0
  202. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D24.md +0 -0
  203. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D25.md +0 -0
  204. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D26.md +0 -0
  205. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/BOOST-D27.md +0 -0
  206. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  207. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  208. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  209. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  210. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  211. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  212. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  213. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  214. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  215. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  216. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  217. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  218. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  219. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  220. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  221. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  222. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  223. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  224. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  225. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-attest-findings.md +0 -0
  226. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-audit-findings.md +0 -0
  227. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  228. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-browse-findings.md +0 -0
  229. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  230. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  231. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  232. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  233. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-chat-findings.md +0 -0
  234. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  235. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  236. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  237. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-completions-findings.md +0 -0
  238. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-config-findings.md +0 -0
  239. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  240. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-context-findings.md +0 -0
  241. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  242. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  243. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-create-findings.md +0 -0
  244. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  245. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-deps-findings.md +0 -0
  246. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-discover-findings.md +0 -0
  247. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  248. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  249. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-drift-findings.md +0 -0
  250. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  251. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-edit-findings.md +0 -0
  252. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  253. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-explain-findings.md +0 -0
  254. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-export-findings.md +0 -0
  255. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  256. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  257. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  258. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  259. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  260. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-health-findings.md +0 -0
  261. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  262. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  263. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-import-findings.md +0 -0
  264. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-index-findings.md +0 -0
  265. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  266. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  267. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-findings.md +0 -0
  268. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  269. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  270. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-lint-findings.md +0 -0
  271. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-log-findings.md +0 -0
  272. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  273. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  274. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  275. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  276. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  277. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  278. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  279. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  280. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  281. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  282. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  283. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-policy-findings.md +0 -0
  284. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-preview-findings.md +0 -0
  285. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-profile-findings.md +0 -0
  286. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  287. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  288. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  289. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  290. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  291. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  292. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  293. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  294. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  295. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-replay-findings.md +0 -0
  296. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-root-findings.md +0 -0
  297. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  298. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-run-findings.md +0 -0
  299. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  300. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-search-findings.md +0 -0
  301. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  302. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  303. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  304. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  305. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  306. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  307. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  308. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  309. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-sync-findings.md +0 -0
  310. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tag-findings.md +0 -0
  311. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  312. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-tap-findings.md +0 -0
  313. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-taps-findings.md +0 -0
  314. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  315. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-test-findings.md +0 -0
  316. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-trust-findings.md +0 -0
  317. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  318. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  319. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-untap-findings.md +0 -0
  320. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-update-findings.md +0 -0
  321. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  322. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-verify-findings.md +0 -0
  323. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/audit-who-findings.md +0 -0
  324. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  325. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  326. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  327. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  328. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  329. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  330. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  331. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  332. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  333. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  334. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  335. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  336. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  337. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  338. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  339. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  340. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-first-rule.md +0 -0
  341. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  342. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  343. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/branch-current-gate.md +0 -0
  344. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  345. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  346. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  347. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  348. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  349. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  350. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  351. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  352. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  353. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  354. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  355. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  356. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  357. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  358. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  359. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  360. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  361. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  362. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  363. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  364. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-command-audit.md +0 -0
  365. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  366. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  367. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  368. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -0
  369. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/codex-is-not-an-mcp-host.md +0 -0
  370. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  371. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/command-carousel-page.md +0 -0
  372. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  373. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  374. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  375. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  376. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  377. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  378. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  379. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  380. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  381. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  382. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  383. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  384. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  385. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  386. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  387. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  388. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  389. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  390. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  391. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  392. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  393. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-local-built-store-displaced-by-a-key.md +0 -0
  394. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  395. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  396. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  397. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  398. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  399. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  400. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  401. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  402. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  403. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  404. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  405. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  406. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  407. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  408. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  409. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  410. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  411. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  412. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  413. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  414. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  415. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  416. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  417. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  418. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  419. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  420. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  421. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  422. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  423. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  424. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  425. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  426. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  427. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  428. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  429. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  430. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  431. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  432. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  433. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  434. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  435. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  436. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  437. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  438. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  439. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  440. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  441. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  442. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  443. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  444. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  445. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  446. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/github-community-health-files.md +0 -0
  447. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  448. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  449. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  450. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  451. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  452. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  453. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  454. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  455. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  456. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  457. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  458. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  459. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  460. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  461. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  462. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  463. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  464. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  465. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  466. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  467. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  468. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  469. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  470. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  471. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  472. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  473. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  474. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  475. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  476. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  477. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  478. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  479. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  480. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  481. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  482. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  483. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  484. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  485. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  486. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  487. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  488. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  489. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  490. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  491. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  492. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  493. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  494. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  495. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  496. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  497. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  498. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  499. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  500. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  501. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  502. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  503. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  504. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  505. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  506. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  507. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  508. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  509. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  510. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  511. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  512. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  513. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  514. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  515. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  516. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  517. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  518. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  519. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  520. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  521. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  522. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  523. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  524. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  525. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  526. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  527. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  528. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  529. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  530. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  531. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  532. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  533. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  534. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  535. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  536. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  537. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  538. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  539. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  540. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  541. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  542. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  543. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  544. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  545. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  546. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  547. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-playbook.md +0 -0
  548. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/openssf-silver.md +0 -0
  549. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  550. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  551. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  552. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  553. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  554. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  555. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  556. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  557. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  558. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  559. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  560. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  561. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  562. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  563. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  564. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  565. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  566. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  567. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  568. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  569. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  570. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  571. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  572. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  573. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  574. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  575. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  576. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  577. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  578. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  579. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  580. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  581. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  582. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  583. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  584. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  585. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  586. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  587. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  588. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  589. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  590. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  591. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  592. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  593. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  594. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  595. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  596. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/relicence-apache-2.md +0 -0
  597. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  598. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  599. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  600. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  601. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  602. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  603. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  604. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  605. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  606. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  607. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  608. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  609. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  610. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  611. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  612. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  613. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  614. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  615. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  616. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  617. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  618. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  619. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  620. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  621. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  622. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  623. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  624. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  625. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  626. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  627. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  628. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  629. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  630. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  631. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  632. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  633. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  634. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  635. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  636. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  637. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  638. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  639. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  640. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  641. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  642. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  643. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  644. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  645. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  646. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  647. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  648. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  649. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  650. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  651. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  652. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  653. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  654. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  655. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  656. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  657. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  658. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  659. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  660. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  661. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  662. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  663. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  664. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  665. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  666. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  667. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  668. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  669. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  670. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  671. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-links-concurrency-cap-did-not-hold.md +0 -0
  672. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  673. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  674. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  675. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/the-windows-test-cap-is-five-minutes-from-the-measurement.md +0 -0
  676. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  677. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  678. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  679. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  680. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  681. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  682. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  683. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  684. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  685. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  686. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  687. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  688. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  689. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  690. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  691. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  692. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  693. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  694. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  695. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  696. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  697. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  698. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  699. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  700. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  701. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  702. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  703. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  704. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  705. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/workspace-scope-install.md +0 -0
  706. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zip-strict-audit.md +0 -0
  707. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  708. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  709. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/security-design.md +0 -0
  710. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/semantic-search.md +0 -0
  711. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  712. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/verifying-releases.md +0 -0
  713. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/meta.md +0 -0
  714. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/openvex.json +0 -0
  715. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  716. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  717. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  718. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  719. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/eslint.config.mjs +0 -0
  720. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/README.md +0 -0
  721. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/__init__.py +0 -0
  722. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/baseline.json +0 -0
  723. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/faithfulness.py +0 -0
  724. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/golden_set.json +0 -0
  725. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/make_corpus.py +0 -0
  726. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/make_golden.py +0 -0
  727. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/metrics.py +0 -0
  728. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/publish_golden_dataset.py +0 -0
  729. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/evals/run_evals.py +0 -0
  730. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/README.md +0 -0
  731. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/adapt-demo.sh +0 -0
  732. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/examples/boost-run-prototype.sh +0 -0
  733. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/index.html +0 -0
  734. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/noxfile.py +0 -0
  735. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/pyproject.toml +0 -0
  736. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/coverage-tools.in +0 -0
  737. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/coverage-tools.txt +0 -0
  738. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/lint-tools.in +0 -0
  739. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/lint-tools.txt +0 -0
  740. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/mutation-tools.in +0 -0
  741. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/mutation-tools.txt +0 -0
  742. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/platform-pins.lock +0 -0
  743. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/release-tools.in +0 -0
  744. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/release-tools.txt +0 -0
  745. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/test-tools.in +0 -0
  746. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/requirements/test-tools.txt +0 -0
  747. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/a11y_check.py +0 -0
  748. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/add_spdx_headers.py +0 -0
  749. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/bench_cli.sh +0 -0
  750. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_command_reference.py +0 -0
  751. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_demo_index.py +0 -0
  752. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_registries.py +0 -0
  753. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_roadmap.py +0 -0
  754. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_scale_corpus.py +0 -0
  755. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/build_vex.py +0 -0
  756. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_anchors.py +0 -0
  757. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_branch_current.py +0 -0
  758. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_dco.py +0 -0
  759. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_licenses.py +0 -0
  760. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_reproducible.py +0 -0
  761. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/check_required_checks.py +0 -0
  762. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/ensure_eval_corpus.sh +0 -0
  763. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_corpus.py +0 -0
  764. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_explain.py +0 -0
  765. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_gate.py +0 -0
  766. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_recommend.py +0 -0
  767. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_retrieval.py +0 -0
  768. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_stats_summary.py +0 -0
  769. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/eval_tools.py +0 -0
  770. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/import_budget.py +0 -0
  771. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/lock_toolchain.py +0 -0
  772. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/measure_near_duplicate_bound.py +0 -0
  773. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/measure_registry.py +0 -0
  774. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_gate.py +0 -0
  775. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_shards.py +0 -0
  776. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/mutation_weights.json +0 -0
  777. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/normalize_sdist.py +0 -0
  778. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/page_budget.py +0 -0
  779. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/perf_gate.py +0 -0
  780. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/post_deploy_smoke.py +0 -0
  781. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/publish_eval_json.py +0 -0
  782. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/publish_shards.py +0 -0
  783. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/release_guard.py +0 -0
  784. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/release_preflight.py +0 -0
  785. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/serve_docs.py +0 -0
  786. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/scripts/shard_plan.py +0 -0
  787. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/setup.cfg +0 -0
  788. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/sonar-project.properties +0 -0
  789. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/README.md +0 -0
  790. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/boost.css +0 -0
  791. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/boost.js +0 -0
  792. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/style/demo.html +0 -0
  793. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/adapt.feature +0 -0
  794. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/browse.feature +0 -0
  795. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/count.feature +0 -0
  796. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/discover.feature +0 -0
  797. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/doctor.feature +0 -0
  798. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/environment.py +0 -0
  799. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/explain.feature +0 -0
  800. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/index.feature +0 -0
  801. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/install.feature +0 -0
  802. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/list.feature +0 -0
  803. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/mcp.feature +0 -0
  804. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/search.feature +0 -0
  805. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/cli_steps.py +0 -0
  806. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/discovery_steps.py +0 -0
  807. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/mcp_steps.py +0 -0
  808. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/bdd/features/steps/quality_steps.py +0 -0
  809. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/conftest.py +0 -0
  810. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/baseline.json +0 -0
  811. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/explain.jsonl +0 -0
  812. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  813. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/golden-natural.jsonl +0 -0
  814. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/golden.jsonl +0 -0
  815. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/recommend.jsonl +0 -0
  816. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/taps-scale.txt +0 -0
  817. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/taps.txt +0 -0
  818. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/eval/tool_calls.jsonl +0 -0
  819. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  820. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bmad_all_hosts.py +0 -0
  821. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_bmad_personas_scope.py +0 -0
  822. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_capabilities_policy.py +0 -0
  823. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_adapt.py +0 -0
  824. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_bmad.py +0 -0
  825. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_catalog.py +0 -0
  826. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_chat.py +0 -0
  827. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_configuration.py +0 -0
  828. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_discovery.py +0 -0
  829. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks.py +0 -0
  830. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks_codex.py +0 -0
  831. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_hooks_gemini.py +0 -0
  832. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_identifier_columns.py +0 -0
  833. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_info.py +0 -0
  834. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_intelligence.py +0 -0
  835. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_json_reports.py +0 -0
  836. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_pane_width.py +0 -0
  837. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_pkg.py +0 -0
  838. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_quality.py +0 -0
  839. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_quickstart.py +0 -0
  840. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_tap_pins.py +0 -0
  841. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_taps.py +0 -0
  842. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_cli_team.py +0 -0
  843. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  844. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  845. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_everyday_loop.py +0 -0
  846. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_integrity_enforce.py +0 -0
  847. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_keyed_no_store_hint.py +0 -0
  848. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_kind_conformance.py +0 -0
  849. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_property_parsers.py +0 -0
  850. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_recommend_because_is_true.py +0 -0
  851. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_repo_root_guard_covers_real_installs.py +0 -0
  852. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_reports_match_reality.py +0 -0
  853. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_run.py +0 -0
  854. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_tap_signing.py +0 -0
  855. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/functional/test_workspace_scope.py +0 -0
  856. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/README.md +0 -0
  857. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  858. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  859. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  860. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  861. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  862. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  863. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  864. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  865. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  866. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  867. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  868. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  869. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  870. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  871. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  872. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  873. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  874. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  875. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  876. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  877. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  878. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  879. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  880. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/fuzz_frontmatter.py +0 -0
  881. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/fuzz/fuzz_registry.py +0 -0
  882. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/conftest.py +0 -0
  883. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_graph.py +0 -0
  884. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_loader.py +0 -0
  885. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/langchain/test_retriever.py +0 -0
  886. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/make_fixture.py +0 -0
  887. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/perf/test_benchmarks.py +0 -0
  888. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/smoke.sh +0 -0
  889. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  890. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_a11y_check.py +0 -0
  891. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_action_pin_lockstep.py +0 -0
  892. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters.py +0 -0
  893. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters_multi.py +0 -0
  894. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_adapters_runner.py +0 -0
  895. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_agents.py +0 -0
  896. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_ai.py +0 -0
  897. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_aihost.py +0 -0
  898. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_archive.py +0 -0
  899. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bmad_core.py +0 -0
  900. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_boost_first_offer.py +0 -0
  901. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bootstrap.py +0 -0
  902. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_bot_pr_dco.py +0 -0
  903. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_branch_current.py +0 -0
  904. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_browse.py +0 -0
  905. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_builtin.py +0 -0
  906. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_canary_deps.py +0 -0
  907. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_capabilities.py +0 -0
  908. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog.py +0 -0
  909. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog_distinct.py +0 -0
  910. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalog_keyword_words.py +0 -0
  911. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_catalogbundle.py +0 -0
  912. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_chat.py +0 -0
  913. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_anchors.py +0 -0
  914. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_dco.py +0 -0
  915. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_licenses.py +0 -0
  916. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_check_reproducible.py +0 -0
  917. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_claude_settings.py +0 -0
  918. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_claude_settings_codex.py +0 -0
  919. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_clean_internal_cache.py +0 -0
  920. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cli_update_shards.py +0 -0
  921. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cliparse.py +0 -0
  922. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_codeql_analysis_key.py +0 -0
  923. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_cohort.py +0 -0
  924. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_command_reference_fresh.py +0 -0
  925. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_community_health_files.py +0 -0
  926. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_compact.py +0 -0
  927. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_complete.py +0 -0
  928. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_complete_rc_block.py +0 -0
  929. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_config.py +0 -0
  930. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_content_dedupe.py +0 -0
  931. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_content_identity.py +0 -0
  932. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  933. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_coverage_gate_prose.py +0 -0
  934. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_crash_redaction.py +0 -0
  935. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dedup_trust.py +0 -0
  936. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_demo_index.py +0 -0
  937. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense.py +0 -0
  938. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  939. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_embed_dedupe.py +0 -0
  940. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_entry_reuse.py +0 -0
  941. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_entry_vectors.py +0 -0
  942. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_fallback.py +0 -0
  943. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_fix_hint.py +0 -0
  944. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_model_unavailable.py +0 -0
  945. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_progress.py +0 -0
  946. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_quantized.py +0 -0
  947. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_ready_order.py +0 -0
  948. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shard_real_schema.py +0 -0
  949. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  950. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_shards.py +0 -0
  951. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_status.py +0 -0
  952. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_status_cheap.py +0 -0
  953. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dense_vector_dedupe.py +0 -0
  954. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dependabot_config.py +0 -0
  955. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_deps.py +0 -0
  956. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_discovery.py +0 -0
  957. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_distill_merge.py +0 -0
  958. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_docs_pages_linked.py +0 -0
  959. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_docsite_chrome.py +0 -0
  960. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_doctor_output_polish.py +0 -0
  961. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_drift_hint.py +0 -0
  962. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_dry_run_parity.py +0 -0
  963. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_ed25519.py +0 -0
  964. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed.py +0 -0
  965. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_local.py +0 -0
  966. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_outranking.py +0 -0
  967. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_embed_truncated_response.py +0 -0
  968. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_entry_key.py +0 -0
  969. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_errors_and_cli_table.py +0 -0
  970. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_baseline.py +0 -0
  971. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_corpus.py +0 -0
  972. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_corpus_bodies.py +0 -0
  973. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_faithfulness.py +0 -0
  974. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_gate.py +0 -0
  975. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_grading.py +0 -0
  976. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_metrics.py +0 -0
  977. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_query_sets.py +0 -0
  978. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_stats_summary.py +0 -0
  979. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_tools.py +0 -0
  980. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_eval_tools_probe.py +0 -0
  981. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  982. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_faithfulness.py +0 -0
  983. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_first_run_pointer.py +0 -0
  984. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_frontmatter.py +0 -0
  985. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_fuzz_targets.py +0 -0
  986. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  987. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitleaks_config.py +0 -0
  988. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil.py +0 -0
  989. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil_lfs.py +0 -0
  990. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gitutil_sparse.py +0 -0
  991. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_gstack_coexistence.py +0 -0
  992. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_help_contracts.py +0 -0
  993. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hook_settings_hosts.py +0 -0
  994. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hookhost.py +0 -0
  995. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_hookhost_codex.py +0 -0
  996. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_imperative.py +0 -0
  997. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_import_budget.py +0 -0
  998. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_injectscan.py +0 -0
  999. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_install_permission_error.py +0 -0
  1000. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_installscan.py +0 -0
  1001. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_integrity.py +0 -0
  1002. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_journal.py +0 -0
  1003. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_jsonstate.py +0 -0
  1004. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_langchain_packaging.py +0 -0
  1005. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_launcher_python_floor.py +0 -0
  1006. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_lighthouse_budgets.py +0 -0
  1007. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_link_ownership.py +0 -0
  1008. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_localembed.py +0 -0
  1009. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_localembed_e2e.py +0 -0
  1010. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_lockfile.py +0 -0
  1011. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_logs.py +0 -0
  1012. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_marketing_counts.py +0 -0
  1013. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp.py +0 -0
  1014. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_install_sandbox_home.py +0 -0
  1015. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_install_scan.py +0 -0
  1016. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcp_read.py +0 -0
  1017. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcpdecl.py +0 -0
  1018. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mcphost.py +0 -0
  1019. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_measure_registry.py +0 -0
  1020. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_minisign.py +0 -0
  1021. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_hardening.py +0 -0
  1022. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_shards.py +0 -0
  1023. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutation_subfile_shards.py +0 -0
  1024. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_mutmut_source_paths.py +0 -0
  1025. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1026. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_nethttp.py +0 -0
  1027. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_normalize_sdist.py +0 -0
  1028. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output.py +0 -0
  1029. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output_table_drop.py +0 -0
  1030. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_output_table_whole.py +0 -0
  1031. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_page_budget.py +0 -0
  1032. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_paths.py +0 -0
  1033. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_perf_gate.py +0 -0
  1034. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_confusions.py +0 -0
  1035. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_injection.py +0 -0
  1036. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_pkg_secrets.py +0 -0
  1037. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_platform_pins.py +0 -0
  1038. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_policy.py +0 -0
  1039. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_post_deploy_smoke.py +0 -0
  1040. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_prereq.py +0 -0
  1041. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1042. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_projectlock.py +0 -0
  1043. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_provenance.py +0 -0
  1044. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_publish_golden_dataset.py +0 -0
  1045. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_quickstart_readiness.py +0 -0
  1046. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag.py +0 -0
  1047. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_completeness.py +0 -0
  1048. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_extra_hint.py +0 -0
  1049. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_fastpath.py +0 -0
  1050. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rag_fusion.py +0 -0
  1051. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_read_text_arg.py +0 -0
  1052. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registries_fresh.py +0 -0
  1053. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry.py +0 -0
  1054. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_categories.py +0 -0
  1055. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_control_chars.py +0 -0
  1056. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_registry_parallel.py +0 -0
  1057. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_release_guard.py +0 -0
  1058. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_release_preflight.py +0 -0
  1059. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_repo_root_guard.py +0 -0
  1060. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_report.py +0 -0
  1061. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_required_checks.py +0 -0
  1062. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rerank_cache.py +0 -0
  1063. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_resolve.py +0 -0
  1064. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1065. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_roadmap_fresh.py +0 -0
  1066. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_rules.py +0 -0
  1067. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sandbox_fixture_cwd.py +0 -0
  1068. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_scale_corpus.py +0 -0
  1069. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_schedule_plist.py +0 -0
  1070. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_scopes.py +0 -0
  1071. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sdist_contents.py +0 -0
  1072. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_secretscan.py +0 -0
  1073. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_selfupdate.py +0 -0
  1074. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_serve.py +0 -0
  1075. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_serve_docs.py +0 -0
  1076. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shard_plan.py +0 -0
  1077. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards.py +0 -0
  1078. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_carry_forward.py +0 -0
  1079. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_incremental.py +0 -0
  1080. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_ingest.py +0 -0
  1081. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_shards_matrix.py +0 -0
  1082. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1083. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_spdx_headers.py +0 -0
  1084. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_spin.py +0 -0
  1085. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_stackprobe.py +0 -0
  1086. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_staleness.py +0 -0
  1087. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_store.py +0 -0
  1088. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_store_materialize.py +0 -0
  1089. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_blocked_links.py +0 -0
  1090. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_lost_lock.py +0 -0
  1091. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1092. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_tap_pins.py +0 -0
  1093. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_token_parity.py +0 -0
  1094. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_toolchain_lock.py +0 -0
  1095. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_trustaudit.py +0 -0
  1096. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_typedvalue.py +0 -0
  1097. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_typosquat.py +0 -0
  1098. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_updatediff.py +0 -0
  1099. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_upstream_path.py +0 -0
  1100. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_util.py +0 -0
  1101. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_version.py +0 -0
  1102. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_version_tags.py +0 -0
  1103. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_vex.py +0 -0
  1104. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_visual_harness_capture.py +0 -0
  1105. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_visual_harness_flags.py +0 -0
  1106. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_concurrency.py +0 -0
  1107. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1108. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1109. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflow_timeouts.py +0 -0
  1110. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_workflows.py +0 -0
  1111. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1112. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/a11y_check.mjs +0 -0
  1113. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/console_check.mjs +0 -0
  1114. {boost_skill_cli-1.2.152 → boost_skill_cli-1.2.153}/tests/visual/visual_check.mjs +0 -0
@@ -122,9 +122,24 @@ collapse and homonyms do not. Relevance is still decided by name (or by content
122
122
  class when a golden row pins an `exemplar`), so the sets can migrate a row at a
123
123
  time.
124
124
 
125
- Each floor sits ~10% under its measured value — loose enough that upstream drift
126
- can't flake the build, tight enough to catch a collapse. Regression-vs-baseline
127
- stays relaxed (`--regression-eps 1`), so the absolute floors are the real gate.
125
+ The floors are fixed absolute values, and the uniform "~10%" margin this file
126
+ claimed from 170d52c0 (2026-07-31) onward was never one of them. They sit under
127
+ their measured values (7.2% / 17.3% / 14.3% / 11.5%), recall@k the tightest —
128
+ loose enough that upstream drift can't flake the build, tight enough to catch a
129
+ collapse, but a 2.39x spread rather than one number, and the tightest of them
130
+ is worth 5.5 queries of 91. The spread is the design working, not drifting: the
131
+ monthly refresh re-measures the row and deliberately leaves the floors where
132
+ they are, so every refresh that improves a metric widens that metric's margin.
133
+ Floors are re-stated after a refresh, never re-derived — a floor that follows
134
+ its own measurement ratchets down with the corpus and ends up measuring the
135
+ corpus. `test_corpus_prose.py` holds every margin above to `baseline.json`, to
136
+ `golden.jsonl` and to the argv of the `Makefile`'s own `eval` recipe — read
137
+ through `eval_retrieval.build_parser()` rather than matched, because the
138
+ tightest floor is `--fail-under` and not a `--floor`, and because a tab-indented
139
+ comment is argv to a regex and a no-op to make. So a refresh that moves the row
140
+ fails the build until someone writes the new margin down and looks at it.
141
+ Regression-vs-baseline stays relaxed (`--regression-eps 1`), so the absolute
142
+ floors are the real gate.
128
143
 
129
144
  **Every row of `taps.txt` pins a commit SHA**, and `scripts/eval_corpus.py`
130
145
  checks each clone out at it — most of the corpus is one third-party repo, so an
@@ -127,9 +127,14 @@ dist-check:
127
127
  # which is what tests/eval/baseline.json records at the current pins. The
128
128
  # second set is what a real user sees, so flooring against the first was
129
129
  # measuring the corpus rather than the retrieval — three of the four old floors
130
- # fail outright once the corpus is realistic. Each floor now sits ~10% below
131
- # its measured value: loose enough that a query or two cannot flake the build,
132
- # tight enough that a collapse fails it. Regression-vs-baseline stays relaxed
130
+ # fail outright once the corpus is realistic. The four floors sit a margin
131
+ # under their measured values (7.2% / 17.3% / 14.3% / 11.5%), recall@k the
132
+ # tightest at 5.5 queries of 91: loose enough that a query or two cannot flake
133
+ # the build, tight enough that a collapse fails it. That margin is not uniform
134
+ # and never was -- it is a 2.39x spread, because the row moves with every
135
+ # monthly refresh and the floors deliberately do not. So it is quoted rather
136
+ # than asserted, and tests/unit/test_corpus_prose.py fails until the new
137
+ # spread is written here. Regression-vs-baseline stays relaxed
133
138
  # (--regression-eps 1); the absolute floors are the real gate. (It was relaxed
134
139
  # while the corpus tracked upstream HEAD. tests/eval/taps.txt pins a commit per
135
140
  # row now, so that is no longer the reason.)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.152
3
+ Version: 1.2.153
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.152'
22
- __version_tuple__ = version_tuple = (1, 2, 152)
21
+ __version__ = version = '1.2.153'
22
+ __version_tuple__ = version_tuple = (1, 2, 153)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.152
3
+ Version: 1.2.153
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  id: eval-floor-calibration-stale-after-pin-refresh
3
3
  board: code
4
- section: planned
5
- status: planned
4
+ section: shipped
5
+ status: shipped
6
6
  category: Quality · Retrieval eval
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 3
10
10
  note: CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…
11
11
  order: 210
12
- owner:
13
- pr:
12
+ owner: loop/eval-floor-calibration
13
+ pr: "993"
14
14
  title: The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%
15
15
  ---
16
16
  <b>Measured.</b> The required gate's recall floor has 5.52 queries of headroom out of 91 ((0.8407 - 0.78) x 91), against the 6.55 that CLAUDE.md's published 0.852 implies — one golden query of margin the documentation says exists and does not, because commit cbc0a58b re-baselined the corpus to 10,731 entries and left CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852.
@@ -32,7 +32,7 @@ title: The 2026-09-01 pin refresh moved the corpus and re-baselined it, but noth
32
32
 
33
33
  <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
34
34
 
35
- 1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.4% / 14.3% / 12.4%, a 1.60x spread. The refresh WIDENED a spread (1.60x -&gt; 1.82x -&gt; 2.39x); it did not create one. Correct statement: "the floors were never uniformly ~10% under, and the refresh widened the spread from 1.82x to 2.39x."
35
+ 1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.3% / 14.4% / 12.4%, a 1.60x spread. (This line first read 9.6% / 15.4% / 14.3% / 12.4%; recomputing from 170d52c0's own <code>baseline.json</code> and <code>Makefile</code> gives 9.5796 / 15.3488 / 14.3831 / 12.4408, so two digits were transposed.) The spread widened twice and by two different mechanisms, only one of which is a refresh: 1.60x at 170d52c0, 1.82x at d8da2e71 — <em>de-duplicate the ranked list by body, not by name</em>, a ranker correctness fix (#411) — and 2.39x at the 2026-09-01 refresh cbc0a58b. Correct statement: "the floors were never uniformly ~10% under, and nothing since has narrowed the spread."
36
36
 
37
37
  2. "not the 6.60 the documented number implies" — 6.60 matches nothing. CLAUDE.md's published 0.852 gives (0.852-0.78) x 91 = 6.55 queries; the unrounded pre-refresh baseline 0.8406... gives 6.52. Use 6.55. (The optimism is therefore ~1.03 queries, not 1.1.)
38
38
 
@@ -53,3 +53,9 @@ SCOPE LIMIT #2: the shared $TMPDIR/eval-home is materialised at the PRE-refresh
53
53
  <b>Why it is worth doing.</b> The "~10% under" statement is the entire published justification for where the four floors sit — CLAUDE.md calls it "loose enough that upstream drift can't flake the build, tight enough to catch a collapse." That is a claim about a margin, and the margin now differs 2.4x across the four metrics with recall the tightest at 5.52 queries out of 91. Because the monthly refresh re-baselines but never re-derives or re-states the floors, and prompts a human only when the refreshed corpus FAILS, every future passing refresh decays the calibration further with no signal at all.
54
54
 
55
55
  <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em>
56
+
57
+ <b>What the fix turned out to be, and what the card got wrong about scope.</b> Half of this card was already fixed when it was picked up. The figure half — "CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852" — is stale: <code>tests/unit/test_corpus_prose.py</code> now holds every one of those figures to <code>taps.txt</code>'s own rows and to <code>baseline.json</code>, so CLAUDE.md reads 10,731 and 0.841 / 0.484 / 0.607 / 0.655 and cannot drift again. The card's line references (CLAUDE.md:67,84) no longer point at anything. What survived is the card's own stated core, and it is the harder half: the <em>characterisation</em> "~10% under" was prose, was false the day it was written, and no mechanism touched it.
58
+
59
+ <b>The remedy is the card's own, not the one the finding's wording invites.</b> No floor moves and no headroom gate is added — a floor that follows its own measurement ends up measuring the corpus, which is exactly what 170d52c0 warned about. Instead the true margin is written down at measured precision (7.2% / 17.3% / 14.3% / 11.5%, a 2.39x spread, recall@k binding at 5.5 queries of 91) and held by the <code>QUOTED</code> mechanism that already holds the figures beside it. A refresh that moves the row now fails the build until a human restates the margin and looks at it — which is the signal the card says is missing, without touching the gate it says not to touch.
60
+
61
+ <b>Why the required set drifted and the advisory set did not.</b> The contrast is the tell. <code>make eval-natural</code>'s floors really are ~10% under (11.1 / 12.5 / 11.4 / 11.2, a 1.12x spread) because <code>tests/unit/test_eval_corpus.py</code> moves them with the row in both directions. The required set, where the claim actually matters, had no such mechanism — so the one place the margin was load-bearing is the one place nothing checked it.
@@ -52,6 +52,6 @@ WHY Med, NOT High — two facts I verified that cap the blast radius: 1. CI cann
52
52
 
53
53
  SCOPE LIMITS OF MY REPRO — a card author must not blur these: - I measured the FULLY-missing case. The "half-materialised tap tree" phrasing in <code>why_it_matters</code> was NOT measured by me; degradation is presumably proportional but is unverified.
54
54
 
55
- <b>Why it is worth doing.</b> The gate whose whole job is to say "retrieval still works over a real corpus" returns a confident, better-than-baseline PASS over a corpus that is name+description only — 95% of its text absent. A developer who reclaims the 265 MB <code>repos/</code> tree, or whose tap tree is half-materialised, gets four green floors that attest to nothing, and the greener number makes the loss look like an improvement rather than a defect. Every downstream floor calibration ("each floor sits ~10% under its measured value") is stated against 0.473/0.605/0.657, which the body-less run clears by 48%/33%/25% instead.
55
+ <b>Why it is worth doing.</b> The gate whose whole job is to say "retrieval still works over a real corpus" returns a confident, better-than-baseline PASS over a corpus that is name+description only — 95% of its text absent. A developer who reclaims the 265 MB <code>repos/</code> tree, or whose tap tree is half-materialised, gets four green floors that attest to nothing, and the greener number makes the loss look like an improvement rather than a defect. Every downstream floor calibration is stated against 0.473/0.605/0.657, which the body-less run clears by 48%/33%/25% instead. (This line quoted CLAUDE.md's "each floor sits ~10% under its measured value" as the live convention. That sentence was retired in PR #993: the margins were never uniform — 7.2% / 17.3% / 14.3% / 11.5% at the current pins — and CLAUDE.md now quotes all four and holds them.)
56
56
 
57
57
  <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em>
@@ -140,9 +140,9 @@
140
140
  <section class="block reveal">
141
141
  <div class="stats">
142
142
  <!-- ROADMAP:stats -->
143
- <div class="stat"><b>24</b><span>Shipped</span></div>
143
+ <div class="stat"><b>25</b><span>Shipped</span></div>
144
144
  <div class="stat"><b>1</b><span>Next up</span></div>
145
- <div class="stat"><b>77</b><span>Planned</span></div>
145
+ <div class="stat"><b>76</b><span>Planned</span></div>
146
146
  <div class="stat"><b>505</b><span>Loop finds</span></div>
147
147
  <!-- /ROADMAP:stats -->
148
148
  </div>
@@ -420,6 +420,18 @@
420
420
  </div>
421
421
  </article>
422
422
 
423
+ <article class="cap rcard" id="eval-floor-calibration-stale-after-pin-refresh">
424
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
425
+ <h3>The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%</h3>
426
+ <p class="cardbody"><a class="writeup" href="https://github.com/jonnyeclectic/boost/blob/main/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md">Write-up &middot; eval-floor-calibration-stale-after-pin-refresh.md</a></p>
427
+ <div class="meta">
428
+ <span class="m">Complexity <b>M</b></span>
429
+ <span class="m">Impact <b>Med</b></span>
430
+ <span class="m">Wow <b class="wow">★★★</b></span>
431
+ <span class="m">CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…</span>
432
+ </div>
433
+ </article>
434
+
423
435
  <article class="cap rcard" id="install-cannot-tell-a-skill-needs-another-one">
424
436
  <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Install · Research</span></div>
425
437
  <h3>Research: how <code>boost install</code> could tell that a skill needs something else installed first</h3>
@@ -1208,57 +1220,6 @@ NOT ALREADY CARDED, but read the existing card first.
1208
1220
  </div>
1209
1221
  </article>
1210
1222
 
1211
- <article class="cap rcard" id="eval-floor-calibration-stale-after-pin-refresh">
1212
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
1213
- <h3>The 2026-09-01 pin refresh moved the corpus and re-baselined it, but nothing re-derives the floors — CLAUDE.md's "~10% under measured" is now 7.2%–17.3%</h3>
1214
- <p><b>Measured.</b> The required gate's recall floor has 5.52 queries of headroom out of 91 ((0.8407 - 0.78) x 91), against the 6.55 that CLAUDE.md's published 0.852 implies — one golden query of margin the documentation says exists and does not, because commit cbc0a58b re-baselined the corpus to 10,731 entries and left CLAUDE.md, taps.txt and eval_corpus.py all stating 10,152 / 0.852.
1215
-
1216
- <b>Reproduce it.</b>
1217
-
1218
- <code>cd &lt;repo&gt;</code><br>
1219
- <code># 1. the refresh commit moved pins + baseline and nothing else</code><br>
1220
- <code>git show cbc0a58b --stat --format='%h %ad %s' --date=short</code><br>
1221
- <code>git show cbc0a58b -- tests/eval/baseline.json | grep -E '^[-+].*(recall|hit@1|MRR|nDCG)'</code><br>
1222
- <code># 2. what taps.txt records NOW vs what the docs claim</code><br>
1223
- <code>awk '!/^#/ &amp;&amp; NF&gt;=3 {s+=$3; n++} END {print "rows:", n, " recorded total entries:", s}' tests/eval/taps.txt</code><br>
1224
- <code>grep -n '10,152\|0\.852' CLAUDE.md tests/eval/taps.txt scripts/eval_corpus.py</code><br>
1225
- <code># 3. recompute the floor gaps against the committed post-refresh baseline</code><br>
1226
- <code>python3 -c "</code><br>
1227
- <code>import json</code><br>
1228
- <code>b=json.load(open('tests/eval/baseline.json'))['sets']['golden.jsonl@a0617183f8c9']['engines']['BM25 full-content']</code><br>
1229
- …
1230
-
1231
- <b>What adversarial verification corrected.</b> This card's numbers are the re-measured ones, not the ones first reported.
1232
-
1233
- 1. CAUSAL FRAMING IS WRONG (the headline correction). The title and claim say the 2026-09-01 pin refresh is what made "~10% under" untrue. It was untrue the day it was written. <code>git log -S'~10% under'</code> traces the sentence to 170d52c0 (2026-07-31), whose own commit message says the floors were "re-derived against the 20-tap numbers at the same ~10% relative headroom" against measured 0.863 / 0.473 / 0.607 / 0.662 — at which point the gaps were 9.6% / 15.4% / 14.3% / 12.4%, a 1.60x spread. The refresh WIDENED a spread (1.60x -&gt; 1.82x -&gt; 2.39x); it did not create one. Correct statement: "the floors were never uniformly ~10% under, and the refresh widened the spread from 1.82x to 2.39x."
1234
-
1235
- 2. "not the 6.60 the documented number implies" — 6.60 matches nothing. CLAUDE.md's published 0.852 gives (0.852-0.78) x 91 = 6.55 queries; the unrounded pre-refresh baseline 0.8406... gives 6.52. Use 6.55. (The optimism is therefore ~1.03 queries, not 1.1.)
1236
-
1237
- 3. "2.4x spread" -&gt; 2.39x (rounding, harmless, but state it as 2.39x on a card).
1238
-
1239
- 4. DIRECTION OF DRIFT IS NOT UNIFORM. "every future passing refresh decays the calibration further" is true only of the SPREAD. This refresh moved two floors tighter (recall 8.4%-&gt;7.2%, nDCG 11.8%-&gt;11.5%) and two LOOSER (hit@1 15.3%-&gt;17.3%, MRR 14.0%-&gt;14.3%). A card must not say "the floors tightened."
1240
-
1241
- 5.
1242
-
1243
- <b>What is NOT established.</b> Recorded because a card that overstates its own evidence is worse than no card.
1244
-
1245
- SCOPE THE REMEDY CAREFULLY — the finding's phrase "nothing re-derives the floors" invites exactly the fix 170d52c0 warns against: auto-moving floors on every refresh ("Lowering a threshold deserves suspicion... a floor calibrated on an unrepresentative corpus measures the corpus"). The repo's design is deliberately fixed absolute floors with a relaxed regression-vs-baseline. The CONFIRMED defect is narrower and should be carded as such: the measured values and the "~10%" characterisation are stated in seven places across four files (CLAUDE.md:67,84; tests/eval/taps.txt:25,43; scripts/eval_corpus.py:30,108 and the runtime-printed operator message at :331-334), nothing re-states or guards them after a PASSING refresh, and no test asserts any of them.
1246
-
1247
- SCOPE LIMIT OF MY REPRO #1: I did not re-measure 0.8407 / 0.4835 / 0.6065 / 0.6552. Those are the committed baseline written by cbc0a58b — which is also the finder's only source. Verifying them empirically needs a re-tap at the new pins, which is forbidden here (shared read-only corpus) and needs network. Every derived percentage in this verification inherits that.
1248
-
1249
- SCOPE LIMIT #2: the shared $TMPDIR/eval-home is materialised at the PRE-refresh pins — live total 10,152 vs taps.txt's recorded 10,731, with the same 10 taps PIN-DIFFERS. <code>make eval</code> against it would trip eval_corpus.py's CORPUS DRIFT check, not run the gate.
1250
-
1251
- <b>Why it is worth doing.</b> The "~10% under" statement is the entire published justification for where the four floors sit — CLAUDE.md calls it "loose enough that upstream drift can't flake the build, tight enough to catch a collapse." That is a claim about a margin, and the margin now differs 2.4x across the four metrics with recall the tightest at 5.52 queries out of 91. Because the monthly refresh re-baselines but never re-derives or re-states the floors, and prompts a human only when the refreshed corpus FAILS, every future passing refresh decays the calibration further with no signal at all.
1252
-
1253
- <em>Found by an automated audit of retrieval/eval quality, the search &amp; browse surfaces, and first-run onboarding; every finding was then re-measured from scratch by an independent adversarial verifier whose instruction was to refute it. Verdict: <b>CORRECTED</b>. No fix is prescribed here — the measurement is the contribution.</em></p>
1254
- <div class="meta">
1255
- <span class="m">Complexity <b>M</b></span>
1256
- <span class="m">Impact <b>Med</b></span>
1257
- <span class="m">Wow <b class="wow">★★★</b></span>
1258
- <span class="m">CLAUDE.md states the gate's four floors sit "~10% under" measured values of 0.852 / 0…</span>
1259
- </div>
1260
- </article>
1261
-
1262
1223
  <article class="cap rcard" id="eval-gate-scores-a-body-less-corpus">
1263
1224
  <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
1264
1225
  <h3><code>make eval</code> scores a corpus with every SKILL.md body missing, reports all four floors PASS, and scores HIGHER than the real corpus</h3>
@@ -31,6 +31,7 @@ import pytest
31
31
  _ROOT = Path(__file__).resolve().parents[2]
32
32
  _TAPS = _ROOT / "tests" / "eval" / "taps.txt"
33
33
  _BASELINE = _ROOT / "tests" / "eval" / "baseline.json"
34
+ _GOLDEN = _ROOT / "tests" / "eval" / "golden.jsonl"
34
35
 
35
36
  pytestmark = pytest.mark.skipif(
36
37
  not (_TAPS.exists() and _BASELINE.exists()),
@@ -48,6 +49,12 @@ QUOTED = (
48
49
  ("CLAUDE.md", "over the six alone ({targets} entries"),
49
50
  ("CLAUDE.md", "**{bm25}**"),
50
51
  ("CLAUDE.md", "recorded BM25 row ({natural_bm25})"),
52
+ ("CLAUDE.md", "under their measured values ({headroom}), {binding} the tightest"),
53
+ ("CLAUDE.md", "a {spread} spread rather than one number"),
54
+ ("CLAUDE.md", "the tightest of them is worth {slack}"),
55
+ ("Makefile", "under their measured values ({headroom}), {binding} the"),
56
+ ("Makefile", "tightest at {slack}:"),
57
+ ("Makefile", "it is a {spread} spread"),
51
58
  ("Makefile", "Over the six ({targets} entries)"),
52
59
  ("Makefile", "over twenty it scores {bm25}"),
53
60
  ("Makefile", "records ({natural_bm25} at the current pins"),
@@ -122,6 +129,9 @@ def _figures() -> dict[str, str]:
122
129
  # The rows above the scale divider are the ones holding golden targets.
123
130
  head = text.split("\n# --- scale", 1)[0]
124
131
  bm25 = _bm25()
132
+ floors = _floors()
133
+ gaps = _headroom(bm25, floors)
134
+ tightest = _METRICS[gaps.index(min(gaps))]
125
135
  return {
126
136
  "total": f"{sum(_counts(text)):,}",
127
137
  "targets": f"{sum(_counts(head)):,}",
@@ -130,6 +140,32 @@ def _figures() -> dict[str, str]:
130
140
  # `make eval-natural`'s floors are calibrated on the figures quoted.
131
141
  "natural_bm25": _four(_bm25("golden-natural.jsonl")),
132
142
  "recall": "%.3f" % bm25["recall@k"],
143
+ # The margin each floor actually has, rather than the single "~10%"
144
+ # the prose asserted from 170d52c0 (2026-07-31) onward. It was never
145
+ # uniform: at that twenty-tap calibration the gaps were 9.6 / 15.3 /
146
+ # 14.4 / 12.4 (recomputed from 170d52c0's own baseline and Makefile —
147
+ # the roadmap card transposes two of those digits),
148
+ # and the monthly refresh widens the spread because it re-baselines the
149
+ # row and leaves the floors where they are, by design. Quoting the four
150
+ # separately is what makes that visible; holding them here is what
151
+ # makes a refresh restate them.
152
+ "headroom": " / ".join("%.1f%%" % g for g in gaps),
153
+ # Which floor is closest to the row, and so the one a corpus move
154
+ # actually trips. A judgement stated beside held figures has to be held
155
+ # too, or it is the next sentence to go quietly stale.
156
+ "binding": tightest,
157
+ # How wide the spread is. The claim being replaced was that there was
158
+ # no spread, so the number that refutes it has to be held like the
159
+ # rest -- an unheld "2.4x" beside a held "7.2% / 17.3%" is the same
160
+ # defect one sentence along. Two decimals, not one: the verification
161
+ # behind this card rejected "2.4x" for "2.39x", and a figure quoted
162
+ # to the precision it was measured at cannot be argued with.
163
+ "spread": "%.2fx" % (max(gaps) / min(gaps)),
164
+ # The binding floor's margin in queries rather than percent. A
165
+ # percentage does not say whether a margin is one flaky query or ten;
166
+ # over this set, 1 query is 1.1 points of recall@k.
167
+ "slack": "%.1f queries of %d" % (
168
+ (bm25[tightest] - floors[tightest]) * _queries(), _queries()),
133
169
  }
134
170
 
135
171
 
@@ -148,6 +184,99 @@ def _max_share() -> float:
148
184
  return float(mod.MAX_ROW_SHARE)
149
185
 
150
186
 
187
+ #: The Makefile recipe whose `--floor` arguments the required gate runs under.
188
+ #: Only this one is parsed: `tests/unit/test_eval_corpus.py` already holds the
189
+ #: Makefile, ci.yml and eval-corpus-refresh.yml to one argv, so a floor read
190
+ #: here is the floor all three use.
191
+ _EVAL_RECIPE = "eval"
192
+ #: The four metrics, in the order the prose quotes them.
193
+ _METRICS = ("recall@k", "hit@1", "MRR", "nDCG@k")
194
+
195
+
196
+ def _argv_reader():
197
+ """`tests/unit/test_eval_corpus.py`, loaded for its argv reader.
198
+
199
+ The floors have to be read the way the gate reads them, and the reader
200
+ already exists one file over: `_recipe` slices the Makefile to one
201
+ target, `_invocation` joins line continuations, drops comment lines and
202
+ shlex-splits, and `_meaning` hands the words to
203
+ `eval_retrieval.build_parser()` itself.
204
+
205
+ Re-implementing that here with a regex put a hole in this very check
206
+ twice. First an unindented comment block, which sits *above* the next
207
+ target, so slicing to `eval-natural:` swallowed all of its prose. Then —
208
+ after that was fixed by taking tab-indented lines only — a **tab-indented
209
+ comment inside the recipe**, which make ignores and a regex does not:
210
+
211
+ eval:
212
+ $(PY) scripts/eval_retrieval.py ... --floor hit@1=0.30 \\
213
+ # relaxed from --floor hit@1=0.40
214
+
215
+ make runs the 0.30 gate; a last-match-wins regex reports 0.40, so the
216
+ published margin is held to a floor nothing enforces and nothing is red.
217
+ A third spelling was waiting behind both: argparse accepts
218
+ `--fail-under=0.60`, and a regex keyed on whitespace never sees it.
219
+ Delegating cures all three at once, and any fourth, because the thing
220
+ doing the parsing is the parser.
221
+
222
+ Loaded by path rather than imported by name, so this does not depend on
223
+ `tests/unit` being on `sys.path`, and under a private module name so it
224
+ cannot collide with pytest's own import of the same file.
225
+ """
226
+ spec = importlib.util.spec_from_file_location(
227
+ "_corpus_prose_argv", _ROOT / "tests" / "unit" / "test_eval_corpus.py")
228
+ assert spec and spec.loader
229
+ mod = importlib.util.module_from_spec(spec)
230
+ spec.loader.exec_module(mod)
231
+ return mod
232
+
233
+
234
+ def _floors_in(body: str) -> dict[str, float]:
235
+ """The floors one recipe body passes, as the gate's own parser sees them.
236
+
237
+ recall@k is `--fail-under` rather than `--floor recall@k=`, which is why
238
+ it is lifted out separately here and why the prose below says "argv"
239
+ rather than naming one flag.
240
+ """
241
+ reader = _argv_reader()
242
+ meaning = reader._meaning(reader._invocation(body))
243
+ floors = {"recall@k": float(meaning["fail_under"])}
244
+ floors.update({k: float(v) for k, v in meaning["floor"].items()})
245
+ return floors
246
+
247
+
248
+ def _floors() -> dict[str, float]:
249
+ """The required gate's four floors, read from the Makefile's own argv."""
250
+ reader = _argv_reader()
251
+ marker = "\n%s:" % _EVAL_RECIPE
252
+ count = (_ROOT / "Makefile").read_text(encoding="utf-8").count(marker)
253
+ assert count == 1, (
254
+ "`%s` is defined %d times; make runs the LAST recipe for a duplicated "
255
+ "target and this reads the first, so the margin below would be held "
256
+ "to floors the gate does not run" % (_EVAL_RECIPE, count))
257
+ return _floors_in(reader._recipe(_EVAL_RECIPE))
258
+
259
+
260
+ def _headroom(row: dict[str, float], floors: dict[str, float]) -> list[float]:
261
+ """How far under the measured row each floor sits, as a percentage."""
262
+ return [(row[m] - floors[m]) / row[m] * 100 for m in _METRICS]
263
+
264
+
265
+ def _queries() -> int:
266
+ """How many cases the gate actually scores.
267
+
268
+ `golden.jsonl` is 102 lines and eleven of them are not queries — ten
269
+ comment lines and one blank — so a line count is not the query count.
270
+ `eval_retrieval.load_golden` skips blanks and `#` after stripping, and
271
+ this must skip exactly what it skips. The blank is the case a naive
272
+ `startswith('#')` would miss. The prose quotes
273
+ this figure to turn a percentage into queries, which is the only form in
274
+ which "is that margin big enough" is answerable.
275
+ """
276
+ return sum(1 for line in _GOLDEN.read_text(encoding="utf-8").splitlines()
277
+ if line.strip() and not line.strip().startswith("#"))
278
+
279
+
151
280
  def _folded(text: str) -> str:
152
281
  return re.sub(r"[ \t]*\n[ \t]*(?:#[ \t]*)?", " ", text)
153
282
 
@@ -258,6 +387,92 @@ class TestTheCheckItself:
258
387
  assert _folded("# measures\n# 10,731 entries") == \
259
388
  "# measures 10,731 entries"
260
389
 
390
+ def test_the_required_recipe_is_read_and_not_the_advisory_one(self):
391
+ # Two recipes carry `--fail-under` and `--floor hit@1=`: `eval`, which
392
+ # is the required gate, and `eval-natural`, which is advisory and
393
+ # whose floors DO follow the row. A bare search over the file returns
394
+ # whichever comes first, which is the right answer today by ordering
395
+ # alone. Slicing to the named recipe is what makes it the right answer
396
+ # tomorrow, so the slicing is what is pinned -- against the real
397
+ # Makefile, because that is the file the margin is held to.
398
+ reader = _argv_reader()
399
+ assert _floors() == _floors_in(reader._recipe("eval"))
400
+ assert _floors() != _floors_in(reader._recipe("eval-natural"))
401
+
402
+ def test_a_target_is_defined_once(self):
403
+ # make runs the LAST recipe for a duplicated target (it warns, then
404
+ # overrides), and every reader here takes the first. `_floors`
405
+ # refuses rather than reading a recipe make would not run; this pins
406
+ # that the real Makefile satisfies it, so the refusal stays a
407
+ # tripwire rather than a permanent failure.
408
+ text = (_ROOT / "Makefile").read_text(encoding="utf-8")
409
+ assert text.count("\n%s:" % _EVAL_RECIPE) == 1
410
+
411
+ def test_a_tab_indented_comment_is_not_argv(self):
412
+ # The second hole, found after the first was fixed. A comment line
413
+ # that starts with a TAB is inside the recipe and make ignores it --
414
+ # so a regex over the recipe text reads floors the gate does not run.
415
+ # Last-match-wins made it worse than a miss: the stale number won.
416
+ # Nothing looks broken either way, which is the whole problem.
417
+ body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 "
418
+ "--floor hit@1=0.40\n"
419
+ "\t# relaxed from --fail-under 0.90 --floor hit@1=0.99\n")
420
+ assert _floors_in(body) == {"recall@k": 0.78, "hit@1": 0.40}
421
+
422
+ def test_an_equals_form_flag_is_read(self):
423
+ # The third spelling, and the one a regex keyed on whitespace cannot
424
+ # see at all: argparse accepts `--flag=value`. A regex reported the
425
+ # OLD floor here -- a silent fail-open in the opposite direction from
426
+ # the comment, and the reason this reads argv through the gate's own
427
+ # parser instead of matching text.
428
+ body = ("\t$(PY) scripts/eval_retrieval.py --fail-under=0.60 "
429
+ "--floor=hit@1=0.20\n")
430
+ assert _floors_in(body) == {"recall@k": 0.60, "hit@1": 0.20}
431
+
432
+ def test_a_line_continuation_is_joined(self):
433
+ # The real recipe wraps the call over three lines, so a reader that
434
+ # did not join continuations would see one flag and miss the rest --
435
+ # and `_floors` would return fewer than four metrics, which
436
+ # `test_a_floor_that_is_not_read_fails_the_check` catches. Pinned
437
+ # here so the failure names the cause.
438
+ body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 \\\n"
439
+ "\t --floor hit@1=0.40 \\\n"
440
+ "\t --floor MRR=0.52\n")
441
+ assert _floors_in(body) == {
442
+ "recall@k": 0.78, "hit@1": 0.40, "MRR": 0.52}
443
+
444
+ def test_a_repeated_flag_is_read_the_way_argparse_reads_it(self):
445
+ # argparse takes the LAST occurrence of a repeated flag. Reading
446
+ # `--fail-under` with re.search took the first, so a duplicate would
447
+ # have held the prose to a number the gate does not use.
448
+ body = ("\t$(PY) scripts/eval_retrieval.py --fail-under 0.78 "
449
+ "--fail-under 0.90 --floor MRR=0.52 --floor MRR=0.61\n")
450
+ assert _floors_in(body) == {"recall@k": 0.90, "MRR": 0.61}
451
+
452
+ def test_a_flag_the_gate_does_not_accept_fails_here(self):
453
+ # Reading argv through `eval_retrieval.build_parser()` means a flag
454
+ # the script would reject fails in this test rather than in CI. A
455
+ # regex would have shrugged and returned the floors it did match.
456
+ with pytest.raises(SystemExit):
457
+ _floors_in("\t$(PY) scripts/eval_retrieval.py --no-such-flag 1\n")
458
+
459
+ def test_a_floor_that_is_not_read_fails_the_check(self):
460
+ # `_floors` divides by figures it parsed out of argv, so a regex that
461
+ # silently stops matching would not raise -- it would drop a metric
462
+ # and quietly narrow what the prose is held to. Four floors are what
463
+ # the required gate passes; fewer means the parse broke.
464
+ floors = _floors()
465
+ assert sorted(floors) == sorted(_METRICS)
466
+ assert all(0 < v < 1 for v in floors.values())
467
+
468
+ def test_the_query_count_skips_the_header_comment(self):
469
+ # golden.jsonl carries ten comment lines and a blank, so a line
470
+ # count is eleven queries too many. `_queries` must skip exactly what
471
+ # `eval_retrieval.load_golden` skips, blank included.
472
+ lines = _GOLDEN.read_text(encoding="utf-8").splitlines()
473
+ assert _queries() == sum(1 for ln in lines if ln.startswith("{"))
474
+ assert _queries() < len(lines)
475
+
261
476
 
262
477
  class TestTheShippedProse:
263
478
  @pytest.mark.parametrize("path,template", QUOTED,
File without changes