boost-skill-cli 1.2.34__tar.gz → 1.2.36__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 (794) hide show
  1. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/CONTRIBUTING.md +11 -0
  2. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/Makefile +2 -0
  3. {boost_skill_cli-1.2.34/boost_skill_cli.egg-info → boost_skill_cli-1.2.36}/PKG-INFO +1 -1
  4. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/_version.py +2 -2
  5. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  6. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_skill_cli.egg-info/SOURCES.txt +12 -0
  7. boost_skill_cli-1.2.36/docs/roadmap/items/branch-current-gate.md +39 -0
  8. boost_skill_cli-1.2.36/docs/roadmap/items/vex-openvex-feed.md +39 -0
  9. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap.html +72 -1
  10. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/security-design.md +37 -0
  11. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/verifying-releases.md +9 -0
  12. boost_skill_cli-1.2.36/docs/vex/meta.md +12 -0
  13. boost_skill_cli-1.2.36/docs/vex/openvex.json +61 -0
  14. boost_skill_cli-1.2.36/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +15 -0
  15. boost_skill_cli-1.2.36/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +22 -0
  16. boost_skill_cli-1.2.36/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +17 -0
  17. boost_skill_cli-1.2.36/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +20 -0
  18. boost_skill_cli-1.2.36/scripts/build_vex.py +175 -0
  19. boost_skill_cli-1.2.36/scripts/check_branch_current.py +94 -0
  20. boost_skill_cli-1.2.36/tests/unit/test_branch_current.py +56 -0
  21. boost_skill_cli-1.2.36/tests/unit/test_vex.py +266 -0
  22. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.gitattributes +0 -0
  23. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.gitignore +0 -0
  24. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.gitleaks.toml +0 -0
  25. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.htmlvalidate.json +0 -0
  26. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.lighthouserc.json +0 -0
  27. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.lycheeignore +0 -0
  28. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.markdownlint-cli2.jsonc +0 -0
  29. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.pre-commit-config.yaml +0 -0
  30. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.stylelintrc.json +0 -0
  31. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.vale/styles/boost/AIWriting.yml +0 -0
  32. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.vale/styles/boost/Terminology.yml +0 -0
  33. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  34. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/.vale.ini +0 -0
  35. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/CLAUDE.md +0 -0
  36. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/CODE_OF_CONDUCT.md +0 -0
  37. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/DCO +0 -0
  38. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/GOVERNANCE.md +0 -0
  39. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/LICENSE +0 -0
  40. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/MAINTAINERS.md +0 -0
  41. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/MANIFEST.in +0 -0
  42. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/README.md +0 -0
  43. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/SECURITY.md +0 -0
  44. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/SUPPORT.md +0 -0
  45. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost +0 -0
  46. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/__init__.py +0 -0
  47. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/__main__.py +0 -0
  48. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/cli.py +0 -0
  49. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/cliparse.py +0 -0
  50. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/__init__.py +0 -0
  51. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/_common.py +0 -0
  52. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/bmad.py +0 -0
  53. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/configuration.py +0 -0
  54. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/discovery.py +0 -0
  55. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/hooks.py +0 -0
  56. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/info.py +0 -0
  57. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/intelligence.py +0 -0
  58. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/pkg.py +0 -0
  59. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/quality.py +0 -0
  60. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/run.py +0 -0
  61. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/safety.py +0 -0
  62. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/taps.py +0 -0
  63. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/commands/team.py +0 -0
  64. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/__init__.py +0 -0
  65. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/adapters.py +0 -0
  66. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/agents.py +0 -0
  67. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/ai.py +0 -0
  68. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/bmad.py +0 -0
  69. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/bootstrap.py +0 -0
  70. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/browse.py +0 -0
  71. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/builtin.py +0 -0
  72. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/capabilities.py +0 -0
  73. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/catalog.py +0 -0
  74. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/catalogbundle.py +0 -0
  75. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/chat.py +0 -0
  76. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/claude_settings.py +0 -0
  77. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/complete.py +0 -0
  78. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/config.py +0 -0
  79. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/dense.py +0 -0
  80. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/ed25519.py +0 -0
  81. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/embed.py +0 -0
  82. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/faithfulness.py +0 -0
  83. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/frontmatter.py +0 -0
  84. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/gitutil.py +0 -0
  85. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/hookhost.py +0 -0
  86. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/imperative.py +0 -0
  87. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/injectscan.py +0 -0
  88. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/installscan.py +0 -0
  89. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/integrity.py +0 -0
  90. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/journal.py +0 -0
  91. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/localembed.py +0 -0
  92. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/lockfile.py +0 -0
  93. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/logs.py +0 -0
  94. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/mcp.py +0 -0
  95. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/mcpdecl.py +0 -0
  96. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/mcphost.py +0 -0
  97. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/minisign.py +0 -0
  98. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/nethttp.py +0 -0
  99. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/output.py +0 -0
  100. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/paths.py +0 -0
  101. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/policy.py +0 -0
  102. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/projectlock.py +0 -0
  103. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/provenance.py +0 -0
  104. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/rag.py +0 -0
  105. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/registry.py +0 -0
  106. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/resolve.py +0 -0
  107. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/rules.py +0 -0
  108. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/scopes.py +0 -0
  109. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/secretscan.py +0 -0
  110. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/selfupdate.py +0 -0
  111. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/serve.py +0 -0
  112. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/stackprobe.py +0 -0
  113. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/staleness.py +0 -0
  114. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/store.py +0 -0
  115. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/trustaudit.py +0 -0
  116. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/typosquat.py +0 -0
  117. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/updatediff.py +0 -0
  118. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/util.py +0 -0
  119. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/core/workflows.py +0 -0
  120. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/data/registries.json +0 -0
  121. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/data/rules/boost-first.mdc +0 -0
  122. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/errors.py +0 -0
  123. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_cli/spin.py +0 -0
  124. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/__init__.py +0 -0
  125. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/_compat.py +0 -0
  126. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/graph.py +0 -0
  127. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/loader.py +0 -0
  128. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/py.typed +0 -0
  129. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_langchain/retriever.py +0 -0
  130. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  131. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  132. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_skill_cli.egg-info/requires.txt +0 -0
  133. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/boost_skill_cli.egg-info/top_level.txt +0 -0
  134. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/codecov.yml +0 -0
  135. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/.claude/settings.local.json +0 -0
  136. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/DEBUGGING.md +0 -0
  137. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/adapters.html +0 -0
  138. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/architecture/README.md +0 -0
  139. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/architecture/c4-components-core.md +0 -0
  140. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/architecture/c4-containers.md +0 -0
  141. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/architecture/c4-context.md +0 -0
  142. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/architecture/c4-dynamic-install.md +0 -0
  143. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/bmad.md +0 -0
  144. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/distill.gif +0 -0
  145. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/doctor.gif +0 -0
  146. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/explain.gif +0 -0
  147. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/hooks.gif +0 -0
  148. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/install.gif +0 -0
  149. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/pulse.gif +0 -0
  150. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/search.gif +0 -0
  151. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/gifs/tap.gif +0 -0
  152. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/distill.tape +0 -0
  153. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/doctor.tape +0 -0
  154. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/explain.tape +0 -0
  155. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/hooks.tape +0 -0
  156. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/install.tape +0 -0
  157. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/pulse.tape +0 -0
  158. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/search.tape +0 -0
  159. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel/tapes/tap.tape +0 -0
  160. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/carousel.html +0 -0
  161. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/chat.html +0 -0
  162. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/code-review.md +0 -0
  163. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/commands.html +0 -0
  164. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/commit-audit.md +0 -0
  165. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/demo-index.json +0 -0
  166. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/demo.gif +0 -0
  167. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/demo.html +0 -0
  168. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/demo.tape +0 -0
  169. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/dependencies.md +0 -0
  170. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/design-roadmap.html +0 -0
  171. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/eval-latest.json +0 -0
  172. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/eval.html +0 -0
  173. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/index.html +0 -0
  174. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/langchain.html +0 -0
  175. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/mcp-hub.html +0 -0
  176. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/openssf-badge.md +0 -0
  177. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/openssf-playbook.md +0 -0
  178. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/rag-architecture.md +0 -0
  179. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D01.md +0 -0
  180. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D02.md +0 -0
  181. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D03.md +0 -0
  182. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D04.md +0 -0
  183. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D05.md +0 -0
  184. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D06.md +0 -0
  185. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D07.md +0 -0
  186. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D08.md +0 -0
  187. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D09.md +0 -0
  188. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D10.md +0 -0
  189. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D11.md +0 -0
  190. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D12.md +0 -0
  191. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D13.md +0 -0
  192. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D14.md +0 -0
  193. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D15.md +0 -0
  194. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D16.md +0 -0
  195. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D17.md +0 -0
  196. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D18.md +0 -0
  197. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D19.md +0 -0
  198. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D20.md +0 -0
  199. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D21.md +0 -0
  200. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D22.md +0 -0
  201. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D23.md +0 -0
  202. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D24.md +0 -0
  203. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D25.md +0 -0
  204. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/BOOST-D26.md +0 -0
  205. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  206. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  207. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  208. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  209. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  210. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  211. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  212. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  213. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  214. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  215. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  216. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  217. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  218. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  219. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/boost-first-rule.md +0 -0
  220. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  221. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  222. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  223. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  224. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  225. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  226. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  227. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  228. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  229. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  230. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  231. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  232. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  233. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  234. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  235. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  236. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/cli-command-audit.md +0 -0
  237. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  238. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  239. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  240. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  241. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/command-carousel-page.md +0 -0
  242. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  243. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  244. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  245. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  246. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  247. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  248. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  249. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  250. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  251. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  252. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  253. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  254. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  255. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  256. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  257. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  258. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  259. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  260. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  261. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  262. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  263. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  264. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  265. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  266. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  267. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  268. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  269. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  270. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  271. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  272. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  273. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  274. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  275. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  276. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  277. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  278. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  279. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  280. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  281. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  282. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  283. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  284. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  285. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  286. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  287. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  288. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  289. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  290. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  291. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  292. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/github-community-health-files.md +0 -0
  293. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  294. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  295. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  296. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  297. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  298. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  299. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  300. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  301. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  302. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  303. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  304. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  305. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  306. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  307. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  308. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  309. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  310. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  311. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  312. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  313. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  314. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  315. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  316. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  317. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  318. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  319. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  320. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  321. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  322. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  323. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  324. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  325. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  326. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  327. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  328. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  329. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  330. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  331. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  332. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  333. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  334. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  335. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  336. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  337. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  338. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  339. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  340. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  341. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  342. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  343. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  344. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  345. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  346. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  347. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  348. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  349. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  350. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  351. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  352. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  353. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  354. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  355. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  356. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  357. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  358. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  359. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  360. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  361. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  362. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  363. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  364. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  365. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  366. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  367. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  368. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/openssf-playbook.md +0 -0
  369. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/openssf-silver.md +0 -0
  370. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  371. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  372. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  373. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  374. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  375. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  376. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  377. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  378. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  379. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  380. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  381. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  382. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  383. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  384. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  385. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  386. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  387. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  388. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  389. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  390. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  391. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  392. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  393. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  394. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  395. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  396. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  397. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  398. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  399. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  400. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  401. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  402. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  403. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  404. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  405. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  406. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  407. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  408. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  409. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  410. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  411. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  412. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  413. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  414. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  415. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  416. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  417. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  418. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  419. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  420. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  421. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  422. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  423. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  424. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  425. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  426. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  427. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  428. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  429. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  430. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  431. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  432. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  433. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  434. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  435. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  436. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  437. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  438. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  439. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  440. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  441. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  442. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  443. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  444. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  445. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  446. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  447. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  448. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  449. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  450. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  451. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  452. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  453. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  454. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  455. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  456. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  457. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  458. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  459. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  460. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  461. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  462. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  463. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  464. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  465. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  466. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  467. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  468. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  469. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  470. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  471. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  472. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  473. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  474. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  475. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  476. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  477. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  478. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  479. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/workspace-scope-install.md +0 -0
  480. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/zip-strict-audit.md +0 -0
  481. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  482. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  483. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/semantic-search.md +0 -0
  484. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  485. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/eslint.config.mjs +0 -0
  486. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/README.md +0 -0
  487. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/__init__.py +0 -0
  488. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/baseline.json +0 -0
  489. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/faithfulness.py +0 -0
  490. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/golden_set.json +0 -0
  491. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/make_corpus.py +0 -0
  492. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/make_golden.py +0 -0
  493. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/metrics.py +0 -0
  494. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/publish_golden_dataset.py +0 -0
  495. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/evals/run_evals.py +0 -0
  496. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/examples/README.md +0 -0
  497. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/examples/adapt-demo.sh +0 -0
  498. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/examples/boost-run-prototype.sh +0 -0
  499. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/index.html +0 -0
  500. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/noxfile.py +0 -0
  501. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/pyproject.toml +0 -0
  502. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/coverage-tools.in +0 -0
  503. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/coverage-tools.txt +0 -0
  504. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/lint-tools.in +0 -0
  505. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/lint-tools.txt +0 -0
  506. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/mutation-tools.in +0 -0
  507. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/mutation-tools.txt +0 -0
  508. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/platform-pins.lock +0 -0
  509. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/release-tools.in +0 -0
  510. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/release-tools.txt +0 -0
  511. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/test-tools.in +0 -0
  512. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/requirements/test-tools.txt +0 -0
  513. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/a11y_check.py +0 -0
  514. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/add_spdx_headers.py +0 -0
  515. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/bench_cli.sh +0 -0
  516. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/build_command_reference.py +0 -0
  517. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/build_demo_index.py +0 -0
  518. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/build_registries.py +0 -0
  519. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/build_roadmap.py +0 -0
  520. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/build_scale_corpus.py +0 -0
  521. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/check_anchors.py +0 -0
  522. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/check_dco.py +0 -0
  523. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/check_licenses.py +0 -0
  524. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/check_reproducible.py +0 -0
  525. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/check_required_checks.py +0 -0
  526. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/ensure_eval_corpus.sh +0 -0
  527. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_corpus.py +0 -0
  528. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_explain.py +0 -0
  529. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_gate.py +0 -0
  530. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_recommend.py +0 -0
  531. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_retrieval.py +0 -0
  532. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/eval_stats_summary.py +0 -0
  533. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/import_budget.py +0 -0
  534. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/lock_toolchain.py +0 -0
  535. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/measure_registry.py +0 -0
  536. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/mutation_gate.py +0 -0
  537. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/mutation_shards.py +0 -0
  538. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/mutation_weights.json +0 -0
  539. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/normalize_sdist.py +0 -0
  540. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/page_budget.py +0 -0
  541. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/perf_gate.py +0 -0
  542. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/post_deploy_smoke.py +0 -0
  543. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/publish_eval_json.py +0 -0
  544. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/release_guard.py +0 -0
  545. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/release_preflight.py +0 -0
  546. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/scripts/serve_docs.py +0 -0
  547. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/setup.cfg +0 -0
  548. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/sonar-project.properties +0 -0
  549. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/style/README.md +0 -0
  550. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/style/boost.css +0 -0
  551. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/style/boost.js +0 -0
  552. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/style/demo.html +0 -0
  553. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/adapt.feature +0 -0
  554. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/browse.feature +0 -0
  555. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/count.feature +0 -0
  556. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/discover.feature +0 -0
  557. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/doctor.feature +0 -0
  558. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/environment.py +0 -0
  559. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/explain.feature +0 -0
  560. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/index.feature +0 -0
  561. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/install.feature +0 -0
  562. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/list.feature +0 -0
  563. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/mcp.feature +0 -0
  564. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/search.feature +0 -0
  565. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/steps/cli_steps.py +0 -0
  566. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/steps/discovery_steps.py +0 -0
  567. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/steps/mcp_steps.py +0 -0
  568. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/bdd/features/steps/quality_steps.py +0 -0
  569. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/conftest.py +0 -0
  570. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/baseline.json +0 -0
  571. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/explain.jsonl +0 -0
  572. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/golden-natural.jsonl +0 -0
  573. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/golden.jsonl +0 -0
  574. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/recommend.jsonl +0 -0
  575. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/taps-scale.txt +0 -0
  576. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/eval/taps.txt +0 -0
  577. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_capabilities_policy.py +0 -0
  578. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_adapt.py +0 -0
  579. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_bmad.py +0 -0
  580. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_catalog.py +0 -0
  581. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_chat.py +0 -0
  582. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_configuration.py +0 -0
  583. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_discovery.py +0 -0
  584. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_hooks.py +0 -0
  585. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_hooks_gemini.py +0 -0
  586. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_info.py +0 -0
  587. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_intelligence.py +0 -0
  588. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_pane_width.py +0 -0
  589. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_pkg.py +0 -0
  590. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_quality.py +0 -0
  591. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_taps.py +0 -0
  592. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_cli_team.py +0 -0
  593. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_everyday_loop.py +0 -0
  594. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_integrity_enforce.py +0 -0
  595. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_kind_conformance.py +0 -0
  596. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_property_parsers.py +0 -0
  597. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_run.py +0 -0
  598. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_tap_signing.py +0 -0
  599. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/functional/test_workspace_scope.py +0 -0
  600. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/README.md +0 -0
  601. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  602. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  603. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  604. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  605. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  606. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  607. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  608. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  609. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  610. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  611. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  612. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  613. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  614. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  615. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  616. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  617. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  618. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  619. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  620. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  621. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  622. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  623. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  624. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/fuzz_frontmatter.py +0 -0
  625. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/fuzz/fuzz_registry.py +0 -0
  626. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/langchain/conftest.py +0 -0
  627. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/langchain/test_graph.py +0 -0
  628. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/langchain/test_loader.py +0 -0
  629. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/langchain/test_retriever.py +0 -0
  630. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/make_fixture.py +0 -0
  631. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/perf/test_benchmarks.py +0 -0
  632. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/smoke.sh +0 -0
  633. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_a11y_check.py +0 -0
  634. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_action_pin_lockstep.py +0 -0
  635. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_adapters.py +0 -0
  636. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_adapters_multi.py +0 -0
  637. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_adapters_runner.py +0 -0
  638. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_agents.py +0 -0
  639. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_ai.py +0 -0
  640. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_bmad_core.py +0 -0
  641. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_boost_first_offer.py +0 -0
  642. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_bootstrap.py +0 -0
  643. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_browse.py +0 -0
  644. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_builtin.py +0 -0
  645. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_capabilities.py +0 -0
  646. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_catalog.py +0 -0
  647. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_catalogbundle.py +0 -0
  648. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_chat.py +0 -0
  649. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_check_anchors.py +0 -0
  650. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_check_dco.py +0 -0
  651. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_check_licenses.py +0 -0
  652. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_check_reproducible.py +0 -0
  653. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_claude_settings.py +0 -0
  654. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_clean_internal_cache.py +0 -0
  655. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_cliparse.py +0 -0
  656. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_codeql_analysis_key.py +0 -0
  657. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_command_reference_fresh.py +0 -0
  658. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_community_health_files.py +0 -0
  659. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_compact.py +0 -0
  660. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_complete.py +0 -0
  661. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_complete_rc_block.py +0 -0
  662. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_config.py +0 -0
  663. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_content_dedupe.py +0 -0
  664. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_content_identity.py +0 -0
  665. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_crash_redaction.py +0 -0
  666. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dedup_trust.py +0 -0
  667. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_demo_index.py +0 -0
  668. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense.py +0 -0
  669. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_embed_dedupe.py +0 -0
  670. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_fallback.py +0 -0
  671. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_fix_hint.py +0 -0
  672. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_quantized.py +0 -0
  673. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_ready_order.py +0 -0
  674. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_shard_real_schema.py +0 -0
  675. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  676. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_shards.py +0 -0
  677. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_status.py +0 -0
  678. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dense_status_cheap.py +0 -0
  679. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_dependabot_config.py +0 -0
  680. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_docs_pages_linked.py +0 -0
  681. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_docsite_chrome.py +0 -0
  682. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_ed25519.py +0 -0
  683. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_embed.py +0 -0
  684. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_embed_local.py +0 -0
  685. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_embed_truncated_response.py +0 -0
  686. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_entry_key.py +0 -0
  687. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_errors_and_cli_table.py +0 -0
  688. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_baseline.py +0 -0
  689. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_corpus.py +0 -0
  690. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_faithfulness.py +0 -0
  691. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_gate.py +0 -0
  692. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_grading.py +0 -0
  693. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_metrics.py +0 -0
  694. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_eval_stats_summary.py +0 -0
  695. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  696. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_faithfulness.py +0 -0
  697. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_frontmatter.py +0 -0
  698. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_fuzz_targets.py +0 -0
  699. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  700. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_gitleaks_config.py +0 -0
  701. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_gitutil.py +0 -0
  702. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_gitutil_lfs.py +0 -0
  703. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_gitutil_sparse.py +0 -0
  704. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_hook_settings_hosts.py +0 -0
  705. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_hookhost.py +0 -0
  706. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_imperative.py +0 -0
  707. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_import_budget.py +0 -0
  708. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_injectscan.py +0 -0
  709. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_install_permission_error.py +0 -0
  710. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_installscan.py +0 -0
  711. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_integrity.py +0 -0
  712. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_journal.py +0 -0
  713. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_langchain_packaging.py +0 -0
  714. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_link_ownership.py +0 -0
  715. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_localembed.py +0 -0
  716. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_localembed_e2e.py +0 -0
  717. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_lockfile.py +0 -0
  718. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_logs.py +0 -0
  719. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_marketing_counts.py +0 -0
  720. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mcp.py +0 -0
  721. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mcp_install_scan.py +0 -0
  722. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mcpdecl.py +0 -0
  723. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mcphost.py +0 -0
  724. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_measure_registry.py +0 -0
  725. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_minisign.py +0 -0
  726. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mutation_hardening.py +0 -0
  727. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mutation_shards.py +0 -0
  728. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mutation_subfile_shards.py +0 -0
  729. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_mutmut_source_paths.py +0 -0
  730. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_nethttp.py +0 -0
  731. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_normalize_sdist.py +0 -0
  732. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_output.py +0 -0
  733. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_page_budget.py +0 -0
  734. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_paths.py +0 -0
  735. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_perf_gate.py +0 -0
  736. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_pkg_confusions.py +0 -0
  737. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_pkg_injection.py +0 -0
  738. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_pkg_secrets.py +0 -0
  739. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_platform_pins.py +0 -0
  740. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_policy.py +0 -0
  741. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_post_deploy_smoke.py +0 -0
  742. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_project_mcp_sidecar.py +0 -0
  743. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_projectlock.py +0 -0
  744. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_provenance.py +0 -0
  745. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_publish_golden_dataset.py +0 -0
  746. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_rag.py +0 -0
  747. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_rag_fastpath.py +0 -0
  748. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_rag_fusion.py +0 -0
  749. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_registries_fresh.py +0 -0
  750. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_registry.py +0 -0
  751. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_registry_categories.py +0 -0
  752. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_registry_control_chars.py +0 -0
  753. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_release_guard.py +0 -0
  754. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_release_preflight.py +0 -0
  755. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_required_checks.py +0 -0
  756. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_rerank_cache.py +0 -0
  757. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_resolve.py +0 -0
  758. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_roadmap_fresh.py +0 -0
  759. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_rules.py +0 -0
  760. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_scale_corpus.py +0 -0
  761. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_scopes.py +0 -0
  762. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_secretscan.py +0 -0
  763. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_selfupdate.py +0 -0
  764. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_serve.py +0 -0
  765. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_serve_docs.py +0 -0
  766. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_shards_matrix.py +0 -0
  767. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_smoke_covers_every_command.py +0 -0
  768. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_spdx_headers.py +0 -0
  769. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_spin.py +0 -0
  770. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_stackprobe.py +0 -0
  771. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_staleness.py +0 -0
  772. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_store.py +0 -0
  773. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_store_materialize.py +0 -0
  774. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_sync_blocked_links.py +0 -0
  775. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  776. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_token_parity.py +0 -0
  777. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_toolchain_lock.py +0 -0
  778. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_trustaudit.py +0 -0
  779. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_typosquat.py +0 -0
  780. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_updatediff.py +0 -0
  781. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_util.py +0 -0
  782. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_version.py +0 -0
  783. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_visual_harness_flags.py +0 -0
  784. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_workflow_concurrency.py +0 -0
  785. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  786. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  787. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_workflow_timeouts.py +0 -0
  788. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_workflows.py +0 -0
  789. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  790. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/visual/a11y_check.mjs +0 -0
  791. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/visual/console_check.mjs +0 -0
  792. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/visual/package-lock.json +0 -0
  793. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/visual/package.json +0 -0
  794. {boost_skill_cli-1.2.34 → boost_skill_cli-1.2.36}/tests/visual/visual_check.mjs +0 -0
@@ -257,6 +257,17 @@ branch ruleset (**Settings → Rules → Rulesets**):
257
257
  gate before it can merge, so an incompatible pair can't both land — the second
258
258
  PR must include the first and re-run CI.
259
259
 
260
+ > **Set it in the ruleset, and verify it from the API.** This repository asks
261
+ > for that rule in two places, and for a while neither one enforced it. Classic
262
+ > branch protection had `strict: true` *and* `enforce_admins: false`, so it
263
+ > skipped the only account that merges; the active ruleset — no bypass actors,
264
+ > so it does apply — had `strict_required_status_checks_policy: false`. Two
265
+ > mechanisms, and the binding one had the safety off. Two PRs then merged into
266
+ > a red `main`, which stopped the release guard arming and left two merged PRs
267
+ > unreleased. Check the real state with
268
+ > `gh api repos/jonnyeclectic/boost/rulesets/<id>`, never the settings page,
269
+ > and note that the `branch-current` required check now backstops it.
270
+ >
260
271
  > Check names must be **unique across workflows** — GitHub matches a required
261
272
  > check by name alone. Three names collided before this was written (`lint` in
262
273
  > ci/markdownlint/theme-lint, `audit` in lighthouse/pip-audit, `analyze` in
@@ -88,6 +88,7 @@ lint:
88
88
  $(PY) scripts/build_registries.py --check
89
89
  $(PY) scripts/build_roadmap.py --check
90
90
  $(PY) scripts/build_command_reference.py --check
91
+ $(PY) scripts/build_vex.py --check
91
92
  $(PY) scripts/lock_toolchain.py --check
92
93
  $(PY) scripts/a11y_check.py
93
94
  $(PY) scripts/page_budget.py
@@ -237,6 +238,7 @@ generate:
237
238
  $(PY) scripts/build_registries.py
238
239
  $(PY) scripts/build_roadmap.py
239
240
  $(PY) scripts/build_command_reference.py
241
+ $(PY) scripts/build_vex.py
240
242
 
241
243
  # regenerate docs/demo.gif (brew install vhs)
242
244
  demo:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.34
3
+ Version: 1.2.36
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -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.34'
22
- __version_tuple__ = version_tuple = (1, 2, 34)
21
+ __version__ = version = '1.2.36'
22
+ __version_tuple__ = version_tuple = (1, 2, 36)
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.34
3
+ Version: 1.2.36
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -213,6 +213,7 @@ docs/roadmap/items/boost-first-carried-the-losing-trigger.md
213
213
  docs/roadmap/items/boost-first-rule.md
214
214
  docs/roadmap/items/boost-langchain-publishing.md
215
215
  docs/roadmap/items/boost-run-live-agents.md
216
+ docs/roadmap/items/branch-current-gate.md
216
217
  docs/roadmap/items/bring-commands-under-mutation-testing.md
217
218
  docs/roadmap/items/broken-link-and-anchor-checking-lychee.md
218
219
  docs/roadmap/items/browse-could-not-search-two-words.md
@@ -463,6 +464,7 @@ docs/roadmap/items/update-diff-before-apply.md
463
464
  docs/roadmap/items/update-refreshed-rules-without-a-gate.md
464
465
  docs/roadmap/items/update-refreshes-rules-and-workflows.md
465
466
  docs/roadmap/items/update-reinstall-widens-agent-scope.md
467
+ docs/roadmap/items/vex-openvex-feed.md
466
468
  docs/roadmap/items/visual-regression-pass-on-the-guide.md
467
469
  docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md
468
470
  docs/roadmap/items/windows-in-the-ci-matrix.md
@@ -475,6 +477,12 @@ docs/roadmap/items/zip-strict-audit.md
475
477
  docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md
476
478
  docs/roadmap/items/zizmor-pin-is-a-yanked-release.md
477
479
  docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md
480
+ docs/vex/meta.md
481
+ docs/vex/openvex.json
482
+ docs/vex/statements/gitleaks-secretscan-test-fixtures.md
483
+ docs/vex/statements/quality-trust-fingerprint-not-sensitive.md
484
+ docs/vex/statements/zizmor-adhoc-packages-lint-runners.md
485
+ docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md
478
486
  evals/README.md
479
487
  evals/__init__.py
480
488
  evals/baseline.json
@@ -507,7 +515,9 @@ scripts/build_demo_index.py
507
515
  scripts/build_registries.py
508
516
  scripts/build_roadmap.py
509
517
  scripts/build_scale_corpus.py
518
+ scripts/build_vex.py
510
519
  scripts/check_anchors.py
520
+ scripts/check_branch_current.py
511
521
  scripts/check_dco.py
512
522
  scripts/check_licenses.py
513
523
  scripts/check_reproducible.py
@@ -627,6 +637,7 @@ tests/unit/test_ai.py
627
637
  tests/unit/test_bmad_core.py
628
638
  tests/unit/test_boost_first_offer.py
629
639
  tests/unit/test_bootstrap.py
640
+ tests/unit/test_branch_current.py
630
641
  tests/unit/test_browse.py
631
642
  tests/unit/test_builtin.py
632
643
  tests/unit/test_capabilities.py
@@ -767,6 +778,7 @@ tests/unit/test_typosquat.py
767
778
  tests/unit/test_updatediff.py
768
779
  tests/unit/test_util.py
769
780
  tests/unit/test_version.py
781
+ tests/unit/test_vex.py
770
782
  tests/unit/test_visual_harness_flags.py
771
783
  tests/unit/test_workflow_concurrency.py
772
784
  tests/unit/test_workflow_concurrency_groups.py
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: branch-current-gate
3
+ board: code
4
+ section: health
5
+ status: inflight
6
+ category: CI · Release safety
7
+ complexity: S
8
+ impact: High
9
+ wow: 4
10
+ note: two protection mechanisms disagreed; the binding one had the safety off
11
+ order: 10
12
+ owner: loop/generated-freshness
13
+ pr:
14
+ title: main went red because "require branches up to date" was never actually on
15
+ ---
16
+ Two pull requests, each green against the <code>main</code> it was tested on, merged into a
17
+ combination that turned <code>main</code> red. Their source files did not conflict. The
18
+ <b>generated</b> <code>docs/roadmap.html</code> did — and a squash merge takes one side of a
19
+ generated file <b>without ever reporting a conflict</b>. The board's "Loop finds" counter was
20
+ correct on both branches and wrong for their union.
21
+ <b>Seventeen jobs failed on one line.</b> Ten test legs, the lint job and all six mutation
22
+ shards — the shards because the unit suite runs inside <code>mutants/</code>, where
23
+ <code>test_roadmap_fresh</code> fails baseline <i>collection</i>, so a stale generated file
24
+ reads as "the mutation gate could not start". And because <code>ci</code> was red on
25
+ <code>main</code>, the release workflow's guard never armed: two merged pull requests, one of
26
+ them the reproducible-build pipeline, sat on <code>main</code> with no tag.
27
+ <b>The root cause was a setting, and the trap was that it looked set.</b> The repository asks
28
+ GitHub to require branches be up to date <b>twice</b>. Classic branch protection has
29
+ <code>strict: true</code> — and <code>enforce_admins: false</code>, so it does not apply to the
30
+ one account that merges. The active ruleset, which has no bypass actors and therefore does
31
+ apply, had <code>strict_required_status_checks_policy: false</code>. Two mechanisms, and the
32
+ binding one had the safety off. They also disagreed on how many checks are required: 14, 20,
33
+ and 21 in <code>required-checks.txt</code>.
34
+ <b>Fixed both ways.</b> The ruleset now enforces up-to-date merges, verified by reading it back
35
+ from the API rather than trusting the settings page. And <code>branch-current</code> is now a
36
+ required check, because that setting is invisible config that drifted once and can drift again
37
+ — a required check is in the diff, in <code>required-checks.txt</code>, and shows up in review.
38
+ Within minutes of the fix, GitHub moved two open pull requests to <code>behind</code> and
39
+ refused them; an hour earlier both would have merged and broken <code>main</code> a second time.
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: vex-openvex-feed
3
+ board: code
4
+ section: health
5
+ status: shipped
6
+ category: Security · Posture
7
+ complexity: S
8
+ impact: Low
9
+ wow: 2
10
+ note: OSPS-VM-04.02 — 4 statements, zero fabricated CVEs
11
+ order: 45
12
+ owner: loop/vex
13
+ pr:
14
+ title: A machine-readable VEX feed, sourced from findings that already existed
15
+ ---
16
+ <code>OSPS-VM-04.02</code> — a Level 3 Baseline criterion <a
17
+ href="roadmap.html#osps-baseline-levels">the audit</a> hadn't reached — asks for a VEX
18
+ document accounting for vulnerabilities that don't affect the project, with the
19
+ non-exploitability reasoning attached. boost already had that reasoning; it just wasn't in a
20
+ form a consumer could ingest. CodeQL dismissals carry a <code>#
21
+ codeql[rule-id]</code> comment, <code>.gitleaks.toml</code> allowlists boost's own synthetic
22
+ secret-scanner fixtures, and <code>.github/zizmor.yml</code> documents six ignores by reason.
23
+ <a href="https://openvex.dev/">OpenVEX</a> 0.2.0 turns those into
24
+ a published document at <code>docs/vex/openvex.json</code>,
25
+ generated by <code>scripts/build_vex.py</code> from one statement file per finding under
26
+ <code>docs/vex/statements/</code> — the same one-file-per-item convention the roadmap boards
27
+ themselves use, wired into <code>make generate</code> and a <code>--check</code> freshness
28
+ gate in CI.
29
+ <b>Four statements, and every one traces to a real, already-merged suppression</b> — not an
30
+ invented CVE. boost has never had one, so nothing here is named <code>CVE-</code> or
31
+ <code>GHSA-</code>; each statement's vulnerability name is the scanner's own rule id instead
32
+ (<code>codeql:py/clear-text-logging-sensitive-data</code>, <code>gitleaks:...</code>,
33
+ <code>zizmor:dangerous-triggers</code>, <code>zizmor:adhoc-packages</code>).
34
+ <b>This satisfies one criterion, not the level.</b> <code>OSPS-QA-07.01</code> — a non-author
35
+ human approval before merge — is the wall Level 3 hits regardless, and this change does not
36
+ move it; <code>docs/openssf-badge.md</code> tracks the passing-badge criteria only and has no
37
+ Baseline rows to flip, so the record lives here and in
38
+ <code>docs/security-design.md</code>
39
+ instead.
@@ -133,7 +133,7 @@
133
133
  <div class="stat"><b>17</b><span>Shipped</span></div>
134
134
  <div class="stat"><b>1</b><span>Next up</span></div>
135
135
  <div class="stat"><b>7</b><span>Planned</span></div>
136
- <div class="stat"><b>278</b><span>Loop finds</span></div>
136
+ <div class="stat"><b>280</b><span>Loop finds</span></div>
137
137
  <!-- /ROADMAP:stats -->
138
138
  </div>
139
139
  </section>
@@ -5015,6 +5015,41 @@ re-embeds every vector already paid for.</p>
5015
5015
  </div>
5016
5016
  </article>
5017
5017
 
5018
+ <article class="cap rcard" id="branch-current-gate">
5019
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">CI · Release safety</span></div>
5020
+ <h3>main went red because "require branches up to date" was never actually on</h3>
5021
+ <p>Two pull requests, each green against the <code>main</code> it was tested on, merged into a
5022
+ combination that turned <code>main</code> red. Their source files did not conflict. The
5023
+ <b>generated</b> <code>docs/roadmap.html</code> did — and a squash merge takes one side of a
5024
+ generated file <b>without ever reporting a conflict</b>. The board's "Loop finds" counter was
5025
+ correct on both branches and wrong for their union.
5026
+ <b>Seventeen jobs failed on one line.</b> Ten test legs, the lint job and all six mutation
5027
+ shards — the shards because the unit suite runs inside <code>mutants/</code>, where
5028
+ <code>test_roadmap_fresh</code> fails baseline <i>collection</i>, so a stale generated file
5029
+ reads as "the mutation gate could not start". And because <code>ci</code> was red on
5030
+ <code>main</code>, the release workflow's guard never armed: two merged pull requests, one of
5031
+ them the reproducible-build pipeline, sat on <code>main</code> with no tag.
5032
+ <b>The root cause was a setting, and the trap was that it looked set.</b> The repository asks
5033
+ GitHub to require branches be up to date <b>twice</b>. Classic branch protection has
5034
+ <code>strict: true</code> — and <code>enforce_admins: false</code>, so it does not apply to the
5035
+ one account that merges. The active ruleset, which has no bypass actors and therefore does
5036
+ apply, had <code>strict_required_status_checks_policy: false</code>. Two mechanisms, and the
5037
+ binding one had the safety off. They also disagreed on how many checks are required: 14, 20,
5038
+ and 21 in <code>required-checks.txt</code>.
5039
+ <b>Fixed both ways.</b> The ruleset now enforces up-to-date merges, verified by reading it back
5040
+ from the API rather than trusting the settings page. And <code>branch-current</code> is now a
5041
+ required check, because that setting is invisible config that drifted once and can drift again
5042
+ — a required check is in the diff, in <code>required-checks.txt</code>, and shows up in review.
5043
+ Within minutes of the fix, GitHub moved two open pull requests to <code>behind</code> and
5044
+ refused them; an hour earlier both would have merged and broken <code>main</code> a second time.</p>
5045
+ <div class="meta">
5046
+ <span class="m">Complexity <b>S</b></span>
5047
+ <span class="m hi">Impact <b>High</b></span>
5048
+ <span class="m">Wow <b class="wow">★★★★</b></span>
5049
+ <span class="m">two protection mechanisms disagreed; the binding one had the safety off</span>
5050
+ </div>
5051
+ </article>
5052
+
5018
5053
  <article class="cap rcard" id="log-timestamps-mislabeled-utc">
5019
5054
  <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Observability · Diagnostics</span></div>
5020
5055
  <h3>Log timestamps are local time mislabeled <code>Z</code></h3>
@@ -5252,6 +5287,42 @@ composed into a blind spot, which is the shape most of these have.</p>
5252
5287
  <span class="m">Gemini warned once per skill per session and no boost surface could see it</span>
5253
5288
  </div>
5254
5289
  </article>
5290
+
5291
+ <article class="cap rcard" id="vex-openvex-feed">
5292
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Security · Posture</span></div>
5293
+ <h3>A machine-readable VEX feed, sourced from findings that already existed</h3>
5294
+ <details class="cardbody"><summary>Write-up</summary>
5295
+ <p><code>OSPS-VM-04.02</code> — a Level 3 Baseline criterion <a
5296
+ href="roadmap.html#osps-baseline-levels">the audit</a> hadn't reached — asks for a VEX
5297
+ document accounting for vulnerabilities that don't affect the project, with the
5298
+ non-exploitability reasoning attached. boost already had that reasoning; it just wasn't in a
5299
+ form a consumer could ingest. CodeQL dismissals carry a <code>#
5300
+ codeql[rule-id]</code> comment, <code>.gitleaks.toml</code> allowlists boost's own synthetic
5301
+ secret-scanner fixtures, and <code>.github/zizmor.yml</code> documents six ignores by reason.
5302
+ <a href="https://openvex.dev/">OpenVEX</a> 0.2.0 turns those into
5303
+ a published document at <code>docs/vex/openvex.json</code>,
5304
+ generated by <code>scripts/build_vex.py</code> from one statement file per finding under
5305
+ <code>docs/vex/statements/</code> — the same one-file-per-item convention the roadmap boards
5306
+ themselves use, wired into <code>make generate</code> and a <code>--check</code> freshness
5307
+ gate in CI.
5308
+ <b>Four statements, and every one traces to a real, already-merged suppression</b> — not an
5309
+ invented CVE. boost has never had one, so nothing here is named <code>CVE-</code> or
5310
+ <code>GHSA-</code>; each statement's vulnerability name is the scanner's own rule id instead
5311
+ (<code>codeql:py/clear-text-logging-sensitive-data</code>, <code>gitleaks:...</code>,
5312
+ <code>zizmor:dangerous-triggers</code>, <code>zizmor:adhoc-packages</code>).
5313
+ <b>This satisfies one criterion, not the level.</b> <code>OSPS-QA-07.01</code> — a non-author
5314
+ human approval before merge — is the wall Level 3 hits regardless, and this change does not
5315
+ move it; <code>docs/openssf-badge.md</code> tracks the passing-badge criteria only and has no
5316
+ Baseline rows to flip, so the record lives here and in
5317
+ <code>docs/security-design.md</code>
5318
+ instead.</p></details>
5319
+ <div class="meta">
5320
+ <span class="m">Complexity <b>S</b></span>
5321
+ <span class="m">Impact <b>Low</b></span>
5322
+ <span class="m">Wow <b class="wow">★★</b></span>
5323
+ <span class="m">OSPS-VM-04.02 — 4 statements, zero fabricated CVEs</span>
5324
+ </div>
5325
+ </article>
5255
5326
  <!-- /ROADMAP:cards -->
5256
5327
 
5257
5328
  </div>
@@ -173,6 +173,43 @@ Every one of these gates blocks a merge to `main`.
173
173
  | `import-linter` | the layering that keeps `core/` free of CLI concerns |
174
174
  | SLSA provenance + PyPI Trusted Publishing | a released artifact traces to the commit and workflow that built it |
175
175
 
176
+ ## VEX: accounting for findings that don't affect boost
177
+
178
+ Every tool in the table above finds things it does not fix — a CodeQL query
179
+ firing on a pattern that isn't actually sensitive here, a gitleaks match on a
180
+ string that was never a real credential, a zizmor rule on a trigger that
181
+ carries its own mitigation. Each dismissal already has a written reason living
182
+ next to the code it describes: a `# codeql[rule-id]` suppression comment, a
183
+ `.gitleaks.toml` allowlist entry, an ignore in `.github/zizmor.yml`. None of
184
+ that was a document a consumer could ingest, which is exactly what OSPS
185
+ Baseline's `OSPS-VM-04.02` asks for: *"While active, any vulnerabilities in
186
+ the software components not affecting the project MUST be accounted for in a
187
+ VEX document, augmenting the vulnerability report with non-exploitability
188
+ details."*
189
+
190
+ [`docs/vex/openvex.json`](vex/openvex.json) is that document — an
191
+ [OpenVEX](https://openvex.dev/) 0.2.0 feed, published at
192
+ <https://jonnyeclectic.github.io/boost/vex/openvex.json>. It is generated by
193
+ `scripts/build_vex.py` from one Markdown file per statement under
194
+ [`docs/vex/statements/`](vex/statements/) — the same one-file-per-item
195
+ convention `docs/roadmap/items/*.md` uses, so two people adding two different
196
+ findings edit two different files rather than one shared JSON blob.
197
+ `make generate` regenerates it; `make lint` and CI both run
198
+ `build_vex.py --check` and fail if the committed document has drifted from
199
+ its source files.
200
+
201
+ Every statement in it today is sourced from a real, already-dismissed finding
202
+ in this repository, not an invented one — the print-side CodeQL
203
+ `py/clear-text-logging-sensitive-data` finding on `trust add`'s fingerprint
204
+ line, the gitleaks allowlist entry for `tests/unit/test_secretscan.py`'s
205
+ synthetic fixtures, and the two categories of `zizmor` ignores in
206
+ `.github/zizmor.yml`. **boost has never had a CVE**, so the document names no
207
+ CVE or GHSA identifier — each statement's `vulnerability.name` is the
208
+ scanner's own rule id (`codeql:...`, `gitleaks:...`, `zizmor:...`) instead. An
209
+ empty-but-honest VEX document would have been the right call had none of these
210
+ findings existed to describe; naming a vulnerability that was never reported
211
+ would not have been.
212
+
176
213
  ## Security review record
177
214
 
178
215
  OpenSSF Best Practices `security_review` asks for a review performed within the
@@ -77,6 +77,15 @@ PGP key for boost, they did not come from this project.
77
77
  | Git tag | Points at the commit the release was built from | `git verify-tag` is *not* applicable — tags are unsigned; the provenance attestation is the authority |
78
78
  | Release notes | Assembled from the merged pull requests in that release | [Releases page](https://github.com/jonnyeclectic/boost/releases) |
79
79
 
80
+ ## VEX: findings that do not affect boost
81
+
82
+ The SBOM says what is in a release; a separate, continuously-updated
83
+ [OpenVEX](https://openvex.dev/) document says which known findings against
84
+ those components don't actually affect boost, with the reasoning attached.
85
+ It is not published per release — it is always current at
86
+ [`docs/vex/openvex.json`](vex/openvex.json). See
87
+ [security-design.md](security-design.md#vex-accounting-for-findings-that-dont-affect-boost).
88
+
80
89
  ## Can you rebuild it yourself? Yes — the measurement
81
90
 
82
91
  A reproducible build lets a third party rebuild the artifact from source and
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: openvex
3
+ author: "the boost project (https://github.com/jonnyeclectic/boost)"
4
+ version: 1
5
+ timestamp: "2026-08-28T00:00:00Z"
6
+ ---
7
+ Document-level identity for `docs/vex/openvex.json`, hand-edited the way a
8
+ changelog is: bump `version` and set `timestamp` to the date of the change
9
+ whenever a statement under `statements/` is added, changed, or removed.
10
+ Neither field is computed — `scripts/build_vex.py` deliberately never reads
11
+ the wall clock, so `--check` can compare byte-for-byte. This body is prose
12
+ for humans editing the file; it is not part of the generated document.
@@ -0,0 +1,61 @@
1
+ {
2
+ "@context": "https://openvex.dev/ns/v0.2.0",
3
+ "@id": "https://jonnyeclectic.github.io/boost/vex/openvex.json",
4
+ "author": "the boost project (https://github.com/jonnyeclectic/boost)",
5
+ "timestamp": "2026-08-28T00:00:00Z",
6
+ "version": 1,
7
+ "statements": [
8
+ {
9
+ "vulnerability": {
10
+ "name": "gitleaks:leaked-secret-detection"
11
+ },
12
+ "products": [
13
+ {
14
+ "@id": "pkg:pypi/boost-skill-cli"
15
+ }
16
+ ],
17
+ "status": "not_affected",
18
+ "justification": "vulnerable_code_not_present",
19
+ "impact_statement": "`tests/unit/test_secretscan.py` exists to prove `boost_cli/core/secretscan.py`\nflags private keys and API tokens, so it ships synthetic examples of both by\ndesign — strings shaped exactly like the credentials gitleaks' own ruleset\nlooks for. gitleaks correctly matches the shape; none of the matched strings\nis a real, working credential, was ever live, or grants access to anything.\n`.gitleaks.toml` allowlists only this one file, by exact path, and the\nallowlist's own comment states why: nothing else in the repository is\nexcluded from the scan."
20
+ },
21
+ {
22
+ "vulnerability": {
23
+ "name": "codeql:py/clear-text-logging-sensitive-data"
24
+ },
25
+ "products": [
26
+ {
27
+ "@id": "pkg:pypi/boost-skill-cli"
28
+ }
29
+ ],
30
+ "status": "not_affected",
31
+ "justification": "vulnerable_code_not_present",
32
+ "impact_statement": "CodeQL's `py/clear-text-logging-sensitive-data` query flags\n`boost trust add`'s success line, which prints the trusted key's name and\nminisign fingerprint, because the argument is user-supplied and `fingerprint`\nreads like a credential name. It is not one: the value is a minisign\n**public** key fingerprint, which is meant to be published, and printing it is\nthe entire point of the command — it is how a user checks by eye that the key\nthey just trusted matches the one the publisher advertises. The class of data\nthe query exists to catch (a secret, token, or password) is not present in\nwhat is logged, so the pattern the rule looks for does not apply here. An\nearlier automated fix that replaced this line with a constant string removed\nthe only verification `trust add` offers; the line was restored, the\nsuppression carries this reasoning inline\n(`# codeql[py/clear-text-logging-sensitive-data]`), and\n`tests/functional/test_tap_signing.py` pins the output so it cannot be quietly\ndropped a second time."
33
+ },
34
+ {
35
+ "vulnerability": {
36
+ "name": "zizmor:adhoc-packages"
37
+ },
38
+ "products": [
39
+ {
40
+ "@id": "pkg:pypi/boost-skill-cli"
41
+ }
42
+ ],
43
+ "status": "not_affected",
44
+ "justification": "inline_mitigations_already_exist",
45
+ "impact_statement": "zizmor's `adhoc-packages` rule flags installing packages without a lockfile,\nbecause an unpinned install can resolve to a tampered or unexpectedly newer\npackage. Two workflows do this on purpose: `theme-lint.yml` installs\nmajor-pinned linters with `--no-save` into an empty checkout — boost ships no\n`package.json`, so a lockfile would exist solely for this one step — and\n`visual.yml` installs a pinned `puppeteer-core` from\n`tests/visual/package.json`, also `--no-save`. Both run on an ephemeral\nrunner, hold only `contents: read`, and their output gates nothing but\nthemselves — a compromised lint or screenshot tool in either job cannot reach\na secret or influence a later, privileged job."
46
+ },
47
+ {
48
+ "vulnerability": {
49
+ "name": "zizmor:dangerous-triggers"
50
+ },
51
+ "products": [
52
+ {
53
+ "@id": "pkg:pypi/boost-skill-cli"
54
+ }
55
+ ],
56
+ "status": "not_affected",
57
+ "justification": "inline_mitigations_already_exist",
58
+ "impact_statement": "zizmor's `dangerous-triggers` rule flags `workflow_run`, because the classic\nfailure mode is a privileged run executing pull-request-controlled code. Four\nworkflows use it — `ci-failure-issue.yml`, `publish.yml`, `post-deploy.yml`,\n`sbom.yml` — and each carries the mitigation that makes the pattern safe in\nits specific case, recorded inline in `.github/zizmor.yml`: none of them\nchecks out the triggering run's head SHA (each explicitly checks out `main`,\na release tag, or nothing at all), so no code a fork's pull request could\ninfluence ever runs in the privileged context. `publish.yml`, the one job that\nholds write credentials (PyPI Trusted Publisher OIDC), is additionally scoped\nto `push` events from this repository only — a fork PR opened from a branch\nnamed `main` cannot satisfy that filter. `sbom.yml` is gated on\n`head_repository == this repository` for the same reason. The remaining two\nhold only `contents: read` and no secrets."
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ id: gitleaks-secretscan-test-fixtures
3
+ vulnerability: "gitleaks:leaked-secret-detection"
4
+ status: not_affected
5
+ justification: vulnerable_code_not_present
6
+ source: .gitleaks.toml, tests/unit/test_secretscan.py
7
+ ---
8
+ `tests/unit/test_secretscan.py` exists to prove `boost_cli/core/secretscan.py`
9
+ flags private keys and API tokens, so it ships synthetic examples of both by
10
+ design — strings shaped exactly like the credentials gitleaks' own ruleset
11
+ looks for. gitleaks correctly matches the shape; none of the matched strings
12
+ is a real, working credential, was ever live, or grants access to anything.
13
+ `.gitleaks.toml` allowlists only this one file, by exact path, and the
14
+ allowlist's own comment states why: nothing else in the repository is
15
+ excluded from the scan.
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: quality-trust-fingerprint-not-sensitive
3
+ vulnerability: "codeql:py/clear-text-logging-sensitive-data"
4
+ status: not_affected
5
+ justification: vulnerable_code_not_present
6
+ source: boost_cli/commands/quality.py:1248
7
+ ---
8
+ CodeQL's `py/clear-text-logging-sensitive-data` query flags
9
+ `boost trust add`'s success line, which prints the trusted key's name and
10
+ minisign fingerprint, because the argument is user-supplied and `fingerprint`
11
+ reads like a credential name. It is not one: the value is a minisign
12
+ **public** key fingerprint, which is meant to be published, and printing it is
13
+ the entire point of the command — it is how a user checks by eye that the key
14
+ they just trusted matches the one the publisher advertises. The class of data
15
+ the query exists to catch (a secret, token, or password) is not present in
16
+ what is logged, so the pattern the rule looks for does not apply here. An
17
+ earlier automated fix that replaced this line with a constant string removed
18
+ the only verification `trust add` offers; the line was restored, the
19
+ suppression carries this reasoning inline
20
+ (`# codeql[py/clear-text-logging-sensitive-data]`), and
21
+ `tests/functional/test_tap_signing.py` pins the output so it cannot be quietly
22
+ dropped a second time.
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: zizmor-adhoc-packages-lint-runners
3
+ vulnerability: "zizmor:adhoc-packages"
4
+ status: not_affected
5
+ justification: inline_mitigations_already_exist
6
+ source: .github/zizmor.yml (theme-lint.yml:48, visual.yml:38)
7
+ ---
8
+ zizmor's `adhoc-packages` rule flags installing packages without a lockfile,
9
+ because an unpinned install can resolve to a tampered or unexpectedly newer
10
+ package. Two workflows do this on purpose: `theme-lint.yml` installs
11
+ major-pinned linters with `--no-save` into an empty checkout — boost ships no
12
+ `package.json`, so a lockfile would exist solely for this one step — and
13
+ `visual.yml` installs a pinned `puppeteer-core` from
14
+ `tests/visual/package.json`, also `--no-save`. Both run on an ephemeral
15
+ runner, hold only `contents: read`, and their output gates nothing but
16
+ themselves — a compromised lint or screenshot tool in either job cannot reach
17
+ a secret or influence a later, privileged job.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: zizmor-dangerous-triggers-workflow-run
3
+ vulnerability: "zizmor:dangerous-triggers"
4
+ status: not_affected
5
+ justification: inline_mitigations_already_exist
6
+ source: .github/zizmor.yml (ci-failure-issue.yml:28, publish.yml:19, post-deploy.yml:21, sbom.yml:29)
7
+ ---
8
+ zizmor's `dangerous-triggers` rule flags `workflow_run`, because the classic
9
+ failure mode is a privileged run executing pull-request-controlled code. Four
10
+ workflows use it — `ci-failure-issue.yml`, `publish.yml`, `post-deploy.yml`,
11
+ `sbom.yml` — and each carries the mitigation that makes the pattern safe in
12
+ its specific case, recorded inline in `.github/zizmor.yml`: none of them
13
+ checks out the triggering run's head SHA (each explicitly checks out `main`,
14
+ a release tag, or nothing at all), so no code a fork's pull request could
15
+ influence ever runs in the privileged context. `publish.yml`, the one job that
16
+ holds write credentials (PyPI Trusted Publisher OIDC), is additionally scoped
17
+ to `push` events from this repository only — a fork PR opened from a branch
18
+ named `main` cannot satisfy that filter. `sbom.yml` is gated on
19
+ `head_repository == this repository` for the same reason. The remaining two
20
+ hold only `contents: read` and no secrets.