yaga-cli 0.2.0__tar.gz → 0.2.1__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 (337) hide show
  1. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/ci.yml +9 -7
  2. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/commit-quality.yml +1 -1
  3. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/docs.yml +1 -1
  4. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/release.yml +2 -2
  5. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/CHANGELOG.md +2 -2
  6. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/CONTRIBUTING.md +8 -3
  7. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/PKG-INFO +5 -2
  8. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/README.md +2 -0
  9. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/changelog.md +22 -0
  10. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/commit-quality.md +6 -0
  11. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/getting-started.md +6 -2
  12. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/releasing.md +2 -1
  13. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/pyproject.toml +5 -4
  14. yaga_cli-0.2.1/release-notes.md +21 -0
  15. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/check_build.py +1 -1
  16. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/version_requirement.py +1 -1
  17. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_cli.py +1 -1
  18. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_installation.py +2 -2
  19. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tooling.py +5 -4
  20. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/uv.lock +13 -13
  21. yaga_cli-0.2.0/release-notes.md +0 -21
  22. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.gitattributes +0 -0
  23. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/dependabot.yml +0 -0
  24. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/commit-adoption-qualification.yml +0 -0
  25. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.github/workflows/commit-policy.yml +0 -0
  26. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.gitignore +0 -0
  27. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.pre-commit-hooks.yaml +0 -0
  28. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/branch-policy.toml +0 -0
  29. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/change-policy.toml +0 -0
  30. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/checks/ci.toml +0 -0
  31. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/mode-policy.toml +0 -0
  32. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/path-policy.toml +0 -0
  33. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/size-policy.toml +0 -0
  34. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/.yaga/tree-policy.toml +0 -0
  35. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/AGENTS.md +0 -0
  36. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/LICENSE +0 -0
  37. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/Makefile +0 -0
  38. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/SECURITY.md +0 -0
  39. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/action.yml +0 -0
  40. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/actions/commit-check/action.yml +0 -0
  41. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/agent-review-gate.md +0 -0
  42. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/assets/branding/isometric_terminal_y_logo.png +0 -0
  43. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/assets/branding/isometric_terminal_y_logo_transparent.png +0 -0
  44. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/assets/branding/yaga_cli_brand_concept_board.png +0 -0
  45. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/branch-policy.md +0 -0
  46. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/change-policy.md +0 -0
  47. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/ci-adoption.md +0 -0
  48. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/commands.md +0 -0
  49. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/commit-policy-direction.md +0 -0
  50. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/commit-policy.md +0 -0
  51. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/configuration.md +0 -0
  52. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/contributing.md +0 -0
  53. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/github-actions.md +0 -0
  54. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/github-review-adapter.md +0 -0
  55. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/index.md +0 -0
  56. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/install.ps1 +0 -0
  57. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/install.sh +0 -0
  58. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/mode-policy.md +0 -0
  59. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/path-policy.md +0 -0
  60. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/recipes.md +0 -0
  61. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/repository-checks.md +0 -0
  62. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/repository-plans.md +0 -0
  63. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/security.md +0 -0
  64. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/size-policy.md +0 -0
  65. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/stylesheets/extra.css +0 -0
  66. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/tree-policy.md +0 -0
  67. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/troubleshooting.md +0 -0
  68. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/usage.md +0 -0
  69. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/docs/workflow-checks.md +0 -0
  70. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/examples/agent-review-policy.toml +0 -0
  71. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/examples/agent-review-results.json +0 -0
  72. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/examples/agent-review.yml +0 -0
  73. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/examples/commit-policy.yml +0 -0
  74. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/examples/review-policy.yml +0 -0
  75. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/overrides/404.html +0 -0
  76. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/check_description.py +0 -0
  77. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/check_docs.py +0 -0
  78. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/check_release.py +0 -0
  79. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/composite_smoke_python +0 -0
  80. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/scripts/prepare_commit_action_control.py +0 -0
  81. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/__init__.py +0 -0
  82. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/__main__.py +0 -0
  83. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/_update_worker.py +0 -0
  84. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/action.py +0 -0
  85. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/action_cli.py +0 -0
  86. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/__init__.py +0 -0
  87. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/evaluation.py +0 -0
  88. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/__init__.py +0 -0
  89. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/boundary.py +0 -0
  90. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/candidate.py +0 -0
  91. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/constants.py +0 -0
  92. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/events.py +0 -0
  93. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/evidence.py +0 -0
  94. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/gate.py +0 -0
  95. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/publication.py +0 -0
  96. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/requests.py +0 -0
  97. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/runs.py +0 -0
  98. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/github/runtime.py +0 -0
  99. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/plan.py +0 -0
  100. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/policy.py +0 -0
  101. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/results.py +0 -0
  102. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/agent_review/runtime.py +0 -0
  103. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/__init__.py +0 -0
  104. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/checker.py +0 -0
  105. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/models.py +0 -0
  106. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/patterns.py +0 -0
  107. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/policy.py +0 -0
  108. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/reporting.py +0 -0
  109. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/branches/service.py +0 -0
  110. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/__init__.py +0 -0
  111. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/checker.py +0 -0
  112. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/git.py +0 -0
  113. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/models.py +0 -0
  114. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/patterns.py +0 -0
  115. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/policy.py +0 -0
  116. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/reporting.py +0 -0
  117. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/changes/service.py +0 -0
  118. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/cli.py +0 -0
  119. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/__init__.py +0 -0
  120. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/branch.py +0 -0
  121. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/change.py +0 -0
  122. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/commit.py +0 -0
  123. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/config.py +0 -0
  124. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/gate.py +0 -0
  125. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/github.py +0 -0
  126. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/mode.py +0 -0
  127. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/path.py +0 -0
  128. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/repo.py +0 -0
  129. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/self_manage.py +0 -0
  130. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/size.py +0 -0
  131. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/tree.py +0 -0
  132. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commands/workflow.py +0 -0
  133. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commit_action_cli.py +0 -0
  134. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commit_action_runtime.py +0 -0
  135. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/__init__.py +0 -0
  136. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/checker.py +0 -0
  137. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/config.py +0 -0
  138. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/config_explain.py +0 -0
  139. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/config_init.py +0 -0
  140. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/content_policy.py +0 -0
  141. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/git.py +0 -0
  142. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/github_event.py +0 -0
  143. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/github_reporting.py +0 -0
  144. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/models.py +0 -0
  145. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/parser.py +0 -0
  146. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/policy.py +0 -0
  147. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/quality.py +0 -0
  148. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/reporting.py +0 -0
  149. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/service.py +0 -0
  150. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/severity.py +0 -0
  151. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/sources.py +0 -0
  152. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/template.py +0 -0
  153. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/trusted_policy.py +0 -0
  154. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/commits/typos.py +0 -0
  155. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/config_scope.py +0 -0
  156. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/errors.py +0 -0
  157. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/files.py +0 -0
  158. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/git/__init__.py +0 -0
  159. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/git/process.py +0 -0
  160. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/git/runtime.py +0 -0
  161. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/git/tree.py +0 -0
  162. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/github.py +0 -0
  163. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/models.py +0 -0
  164. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/__init__.py +0 -0
  165. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/checker.py +0 -0
  166. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/git.py +0 -0
  167. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/models.py +0 -0
  168. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/patterns.py +0 -0
  169. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/policy.py +0 -0
  170. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/reporting.py +0 -0
  171. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/modes/service.py +0 -0
  172. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/__init__.py +0 -0
  173. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/checker.py +0 -0
  174. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/git.py +0 -0
  175. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/models.py +0 -0
  176. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/policy.py +0 -0
  177. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/reporting.py +0 -0
  178. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/paths/service.py +0 -0
  179. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/repository/__init__.py +0 -0
  180. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/repository/checker.py +0 -0
  181. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/repository/models.py +0 -0
  182. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/repository/plan.py +0 -0
  183. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/repository/reporting.py +0 -0
  184. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/self_update.py +0 -0
  185. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/__init__.py +0 -0
  186. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/checker.py +0 -0
  187. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/git.py +0 -0
  188. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/models.py +0 -0
  189. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/patterns.py +0 -0
  190. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/policy.py +0 -0
  191. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/reporting.py +0 -0
  192. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/sizes/service.py +0 -0
  193. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/status.py +0 -0
  194. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/__init__.py +0 -0
  195. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/checker.py +0 -0
  196. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/git.py +0 -0
  197. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/models.py +0 -0
  198. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/patterns.py +0 -0
  199. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/policy.py +0 -0
  200. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/reporting.py +0 -0
  201. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/trees/service.py +0 -0
  202. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/__init__.py +0 -0
  203. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/actionlint_runtime.py +0 -0
  204. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/actionlint_snapshot.py +0 -0
  205. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/checker.py +0 -0
  206. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/inputs.py +0 -0
  207. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/lint.py +0 -0
  208. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/models.py +0 -0
  209. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/parser.py +0 -0
  210. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/references.py +0 -0
  211. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/reporting.py +0 -0
  212. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/security.py +0 -0
  213. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/security_facts.py +0 -0
  214. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/security_models.py +0 -0
  215. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/security_reporting.py +0 -0
  216. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/security_rules.py +0 -0
  217. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/src/yaga/workflows/yaml.py +0 -0
  218. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/__init__.py +0 -0
  219. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/codex_support.py +0 -0
  220. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/fixtures/commit_consumer_parity.json +0 -0
  221. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_action.py +0 -0
  222. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_agent_review_cli.py +0 -0
  223. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_agent_review_evaluation.py +0 -0
  224. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_agent_review_plan.py +0 -0
  225. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_agent_review_policy.py +0 -0
  226. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_agent_review_results.py +0 -0
  227. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_checker.py +0 -0
  228. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_cli.py +0 -0
  229. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_models.py +0 -0
  230. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_patterns.py +0 -0
  231. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_policy.py +0 -0
  232. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_reporting.py +0 -0
  233. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_branch_service.py +0 -0
  234. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_checker.py +0 -0
  235. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_cli.py +0 -0
  236. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_git.py +0 -0
  237. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_patterns.py +0 -0
  238. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_policy.py +0 -0
  239. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_change_reporting.py +0 -0
  240. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_events.py +0 -0
  241. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_evidence.py +0 -0
  242. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_evidence_literals.py +0 -0
  243. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_gate.py +0 -0
  244. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_publication.py +0 -0
  245. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_requests.py +0 -0
  246. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_runs.py +0 -0
  247. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_codex_runtime.py +0 -0
  248. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_action.py +0 -0
  249. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_action_controls.py +0 -0
  250. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_body_customization.py +0 -0
  251. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_checker.py +0 -0
  252. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_config.py +0 -0
  253. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_consumer_policy.py +0 -0
  254. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_content_policy.py +0 -0
  255. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_explicit_inputs.py +0 -0
  256. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_git.py +0 -0
  257. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_parser.py +0 -0
  258. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_quality.py +0 -0
  259. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_quality_workflow.py +0 -0
  260. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_reporting.py +0 -0
  261. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_service.py +0 -0
  262. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_sources.py +0 -0
  263. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_template.py +0 -0
  264. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_trusted_policy.py +0 -0
  265. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_typos.py +0 -0
  266. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_commit_warnings.py +0 -0
  267. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_config_init.py +0 -0
  268. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_config_workflows.py +0 -0
  269. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_consumer_policy_entrypoints.py +0 -0
  270. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_description.py +0 -0
  271. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_docs_links.py +0 -0
  272. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_files.py +0 -0
  273. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_git_runtime.py +0 -0
  274. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_git_tree.py +0 -0
  275. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_github.py +0 -0
  276. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_github_pull_request.py +0 -0
  277. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_github_reporting.py +0 -0
  278. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_installers.py +0 -0
  279. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_checker.py +0 -0
  280. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_cli.py +0 -0
  281. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_git.py +0 -0
  282. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_models.py +0 -0
  283. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_patterns.py +0 -0
  284. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_policy.py +0 -0
  285. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_reporting.py +0 -0
  286. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_mode_service.py +0 -0
  287. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_models.py +0 -0
  288. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_checker.py +0 -0
  289. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_cli.py +0 -0
  290. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_git.py +0 -0
  291. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_models.py +0 -0
  292. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_policy.py +0 -0
  293. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_reporting.py +0 -0
  294. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_path_service.py +0 -0
  295. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_plain_messages.py +0 -0
  296. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_pr_proposed_message.py +0 -0
  297. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_release.py +0 -0
  298. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repo_cli.py +0 -0
  299. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repository_checker.py +0 -0
  300. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repository_contract.py +0 -0
  301. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repository_models.py +0 -0
  302. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repository_plan.py +0 -0
  303. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_repository_reporting.py +0 -0
  304. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_checker.py +0 -0
  305. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_cli.py +0 -0
  306. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_git.py +0 -0
  307. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_models.py +0 -0
  308. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_patterns.py +0 -0
  309. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_policy.py +0 -0
  310. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_reporting.py +0 -0
  311. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_size_service.py +0 -0
  312. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_status.py +0 -0
  313. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_checker.py +0 -0
  314. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_cli.py +0 -0
  315. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_git.py +0 -0
  316. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_models.py +0 -0
  317. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_patterns.py +0 -0
  318. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_policy.py +0 -0
  319. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_reporting.py +0 -0
  320. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_tree_service.py +0 -0
  321. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_checker.py +0 -0
  322. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_inputs.py +0 -0
  323. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_lint.py +0 -0
  324. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_lint_hardening.py +0 -0
  325. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_lint_reporting.py +0 -0
  326. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_provider_inputs.py +0 -0
  327. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_references.py +0 -0
  328. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_reporting.py +0 -0
  329. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_cli.py +0 -0
  330. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_facts.py +0 -0
  331. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_models.py +0 -0
  332. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_reporting.py +0 -0
  333. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_rules.py +0 -0
  334. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_selection.py +0 -0
  335. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_security_service.py +0 -0
  336. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/tests/test_workflow_yaml.py +0 -0
  337. {yaga_cli-0.2.0 → yaga_cli-0.2.1}/zensical.toml +0 -0
@@ -25,10 +25,10 @@ jobs:
25
25
  ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
26
26
  fetch-depth: 0
27
27
  persist-credentials: false
28
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
28
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
29
29
  with:
30
30
  enable-cache: true
31
- version: "0.12.7"
31
+ version: "0.13.0"
32
32
  - name: Cache Typos registry
33
33
  uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
34
34
  with:
@@ -137,23 +137,25 @@ jobs:
137
137
  strategy:
138
138
  fail-fast: false
139
139
  matrix:
140
- python-version: ["3.12", "3.13", "3.14"]
140
+ python-version: ["3.12", "3.13", "3.14", "3.15"]
141
141
  os: [ubuntu-latest]
142
142
  include:
143
143
  - python-version: "3.12"
144
144
  os: windows-latest
145
+ - python-version: "3.15"
146
+ os: windows-latest
145
147
  runs-on: ${{ matrix.os }}
146
148
  timeout-minutes: 10
147
149
  steps:
148
150
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
149
151
  with:
150
152
  persist-credentials: false
151
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
153
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
152
154
  with:
153
155
  enable-cache: true
154
- version: "0.12.7"
155
- - run: uv sync --frozen --group dev --python ${{ matrix.python-version }}
156
- - run: uv run --frozen --python ${{ matrix.python-version }} pytest
156
+ version: "0.13.0"
157
+ - run: uv sync --frozen --group dev --no-editable --python ${{ matrix.python-version }}
158
+ - run: uv run --frozen --no-editable --python ${{ matrix.python-version }} pytest
157
159
 
158
160
  gate:
159
161
  name: CI Prerequisites
@@ -33,7 +33,7 @@ jobs:
33
33
  ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
34
34
  fetch-depth: 0
35
35
  persist-credentials: false
36
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
36
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
37
37
  with:
38
38
  enable-cache: true
39
39
  version: "0.12.7"
@@ -30,7 +30,7 @@ jobs:
30
30
  with:
31
31
  persist-credentials: false
32
32
  - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6
33
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
33
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
34
34
  with:
35
35
  version: "0.12.7"
36
36
  - run: uv sync --frozen --group dev --python 3.12
@@ -32,7 +32,7 @@ jobs:
32
32
  run: |
33
33
  test "$(git rev-parse HEAD)" = "$EVENT_SHA"
34
34
  git merge-base --is-ancestor HEAD "refs/remotes/origin/$DEFAULT_BRANCH"
35
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
35
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
36
36
  with:
37
37
  version: "0.12.7"
38
38
  enable-cache: false
@@ -107,5 +107,5 @@ jobs:
107
107
  RELEASE_TAG: ${{ github.ref_name }}
108
108
  run: >-
109
109
  gh release create "$RELEASE_TAG" dist/*.whl dist/*.tar.gz
110
- --verify-tag --title "YAGA ${RELEASE_TAG#v} (Beta)"
110
+ --verify-tag --title "YAGA ${RELEASE_TAG#v}"
111
111
  --notes-file release-notes/release-notes.md
@@ -3,5 +3,5 @@
3
3
  The complete release history is maintained in [docs/changelog.md](docs/changelog.md) and
4
4
  published in the [YAGA documentation](https://dariuszpanas.github.io/yaga/changelog.html).
5
5
 
6
- Edit that single source when recording user-visible changes. YAGA is pre-release; all current
7
- entries are under Unreleased until an explicitly authorized version is published.
6
+ Edit that single source when recording user-visible changes. Keep new changes under Unreleased
7
+ until they are assigned to a dated release candidate; publication requires explicit authorization.
@@ -9,11 +9,13 @@ gate is `agent-review`.
9
9
 
10
10
  Python 3.12 or newer and [uv](https://docs.astral.sh/uv/) 0.12.7 or newer are required
11
11
  for the development workflow. CI pins uv separately for reproducibility; contributors may use
12
- newer uv releases:
12
+ newer uv releases. Use uv 0.13.0 or newer to download Python 3.15. CI tests Python 3.12
13
+ through 3.15 on Linux and Python 3.12 and 3.15 on Windows against a non-editable package
14
+ installation:
13
15
 
14
16
  ```bash
15
- uv sync --group dev
16
- uv run make ci
17
+ uv sync --group dev --python 3.12
18
+ uv run --python 3.12 make ci
17
19
  ```
18
20
 
19
21
  The full gate also needs Git, GNU Make, Bash, a running Docker engine using Linux containers,
@@ -37,6 +39,9 @@ runtime closure from `uv.lock`, require its hashes without building dependencies
37
39
  with dependency resolution disabled, run `uv pip check`, and execute the installed `yaga` entrypoint
38
40
  with project and Python environment leakage removed.
39
41
 
42
+ That strict build gate runs on Python 3.12. The Python 3.15 test jobs permit PyYAML's source-build
43
+ fallback because the locked PyYAML release does not publish Python 3.15 wheels.
44
+
40
45
  ## CLI and commit policy contract
41
46
 
42
47
  The public installed command groups are `branch`, `change`, `commit`, `config`, `github`, `mode`,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: yaga-cli
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Configurable developer workflow checks for local use and GitHub Actions
5
5
  Project-URL: Documentation, https://dariuszpanas.github.io/yaga/
6
6
  Project-URL: Changelog, https://dariuszpanas.github.io/yaga/changelog.html
@@ -18,12 +18,13 @@ Classifier: Programming Language :: Python :: 3
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Programming Language :: Python :: 3.15
21
22
  Classifier: Topic :: Software Development :: Quality Assurance
22
23
  Requires-Python: >=3.12
23
24
  Requires-Dist: pyyaml<7,>=6.0.3
24
25
  Requires-Dist: typer<1,>=0.27.2
25
26
  Provides-Extra: quality
26
- Requires-Dist: torch<3,>=2.6; extra == 'quality'
27
+ Requires-Dist: torch<3,>=2.13; extra == 'quality'
27
28
  Requires-Dist: transformers<6,>=5.10; extra == 'quality'
28
29
  Provides-Extra: quality-bedrock
29
30
  Requires-Dist: boto3<2,>=1.37; extra == 'quality-bedrock'
@@ -58,6 +59,8 @@ YAGA does not require adopting the entire CLI at once.
58
59
 
59
60
  YAGA requires Python 3.12 or newer. Its PyPI distribution is **`yaga-cli`** and its command is
60
61
  **`yaga`**; the distribution named `yaga` is an unrelated project.
62
+ The core CLI is tested on Python 3.12 through 3.15. Optional model dependencies have their own
63
+ [installation requirements](https://dariuszpanas.github.io/yaga/commit-quality.html).
61
64
 
62
65
  - [Adoption recipes](https://dariuszpanas.github.io/yaga/recipes.html) — add checks to an existing workflow.
63
66
  - [Assess YAGA for CI](https://dariuszpanas.github.io/yaga/ci-adoption.html) — match your problem to a check and its prerequisites.
@@ -27,6 +27,8 @@ YAGA does not require adopting the entire CLI at once.
27
27
 
28
28
  YAGA requires Python 3.12 or newer. Its PyPI distribution is **`yaga-cli`** and its command is
29
29
  **`yaga`**; the distribution named `yaga` is an unrelated project.
30
+ The core CLI is tested on Python 3.12 through 3.15. Optional model dependencies have their own
31
+ [installation requirements](https://dariuszpanas.github.io/yaga/commit-quality.html).
30
32
 
31
33
  - [Adoption recipes](https://dariuszpanas.github.io/yaga/recipes.html) — add checks to an existing workflow.
32
34
  - [Assess YAGA for CI](https://dariuszpanas.github.io/yaga/ci-adoption.html) — match your problem to a check and its prerequisites.
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.2.1] - 2026-10-10
6
+
7
+ ### Added
8
+
9
+ - Declare Python 3.15 support and add blocking Linux and Windows test jobs. Run the
10
+ Python compatibility matrix against a non-editable package installation.
11
+
12
+ ### Fixed
13
+
14
+ - Update locked urllib3 to 2.8.0 for upstream proxy TLS and streaming denial-of-service fixes
15
+ in the optional Bedrock dependency chain.
16
+ - Update locked virtualenv to 21.7.13 for upstream activation-script, configuration, and
17
+ seed-wheel verification security fixes in development tooling.
18
+ - Align the Hatchling 1.32.4 build and development pins with the lockfile and tooling contract.
19
+ - Raise the optional quality extra's PyTorch minimum to 2.13 to exclude older releases with
20
+ known security advisories; the locked PyTorch version remains 2.14.0.
21
+ - Repair the pipx installation link in the getting-started guide.
22
+
23
+ ### Changed
24
+
25
+ - Refresh CI tooling with setup-uv 10.2.0 and uv 0.13.0, including stable Python 3.15 downloads.
26
+
5
27
  ## [0.2.0] - 2026-09-20
6
28
 
7
29
  ### Added
@@ -4,6 +4,12 @@
4
4
  but may not explain a change clearly in a Git log. It is separate from `commit check`: deterministic
5
5
  policy remains the merge gate, while the model provides a bounded advisory signal.
6
6
 
7
+ The optional `quality` extra depends on PyTorch wheels for the selected Python version and
8
+ platform. The locked PyTorch 2.14.0 package from PyPI has no Python 3.15 wheels; use Python 3.12
9
+ through 3.14 for this extra. The repository's Linux CPU index has Python 3.15 wheels, but that
10
+ index selection is not part of the published wheel metadata. The core CLI and the separate
11
+ `quality-bedrock` extra do not require PyTorch.
12
+
7
13
  ## When to use it
8
14
 
9
15
  Run both checks when exact policy enforcement and broader writing feedback are useful:
@@ -1,8 +1,12 @@
1
1
  # Get started
2
2
 
3
- This guide covers **YAGA 0.2.0 (Beta)**. YAGA requires Python 3.12 or newer. Install the **`yaga-cli`** distribution from PyPI;
3
+ This guide covers **YAGA 0.2.1 (Beta)**. YAGA requires Python 3.12 or newer. Install the **`yaga-cli`** distribution from PyPI;
4
4
  the executable and import package are **`yaga`**. The `yaga` distribution is an unrelated project.
5
5
 
6
+ The core CLI is tested on Python 3.12 through 3.15. Python 3.15 installations currently use
7
+ PyYAML's source-build fallback because PyYAML 6.0.3 does not publish Python 3.15 wheels.
8
+ For optional model dependencies, see [commit quality installation](commit-quality.md).
9
+
6
10
  ## Install as a global tool
7
11
 
8
12
  A tool installer makes `yaga` available from any repository without adding it to each project's
@@ -87,7 +91,7 @@ is selected. `uv tool list` lists installed tools.
87
91
 
88
92
  ### pipx
89
93
 
90
- With [pipx](https://pipx.pypa.io/stable/installation/) and Python 3.12 or newer installed:
94
+ With [pipx](https://pipx.pypa.io/stable/how-to/install-pipx.html) and Python 3.12 or newer installed:
91
95
 
92
96
  ```bash
93
97
  pipx install yaga-cli
@@ -46,7 +46,8 @@ package users. Twine's metadata check does not prove remote images or links are
46
46
  references. Tests require the Action runtime version to match package metadata. Convert the candidate changelog
47
47
  heading into `## [0.1.0] - YYYY-MM-DD`, using the actual release date, and retain `Unreleased`
48
48
  above it. The Beta classifier is a maturity label; version `0.1.0` is a normal PyPI version,
49
- not the PEP 440 prerelease `0.1.0b1`.
49
+ not the PEP 440 prerelease `0.1.0b1`. Use `YAGA 0.1.0` as the GitHub Release title;
50
+ keep the maturity label in package metadata rather than appending `(Beta)` to the title.
50
51
  2. Merge the release changes and require all hosted CI lanes to pass for the exact commit,
51
52
  including Windows. Resolve dependency PR failures before choosing the candidate.
52
53
  3. After publication is explicitly authorized, create and push the matching `v0.1.0` tag at that
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["hatchling==1.32.0"]
2
+ requires = ["hatchling==1.32.4"]
3
3
  build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "yaga-cli"
7
- version = "0.2.0"
7
+ version = "0.2.1"
8
8
  description = "Configurable developer workflow checks for local use and GitHub Actions"
9
9
  readme = "README.md"
10
10
  license = "BSD-3-Clause"
@@ -29,6 +29,7 @@ classifiers = [
29
29
  "Programming Language :: Python :: 3.12",
30
30
  "Programming Language :: Python :: 3.13",
31
31
  "Programming Language :: Python :: 3.14",
32
+ "Programming Language :: Python :: 3.15",
32
33
  "Topic :: Software Development :: Quality Assurance",
33
34
  ]
34
35
  dependencies = [
@@ -38,7 +39,7 @@ dependencies = [
38
39
 
39
40
  [project.optional-dependencies]
40
41
  quality = [
41
- "torch>=2.6,<3",
42
+ "torch>=2.13,<3",
42
43
  "transformers>=5.10,<6",
43
44
  ]
44
45
  quality-bedrock = [
@@ -67,7 +68,7 @@ yaga = "yaga.cli:main"
67
68
 
68
69
  [dependency-groups]
69
70
  dev = [
70
- "hatchling==1.32.0",
71
+ "hatchling==1.32.4",
71
72
  "pre-commit>=4.6.2,<5",
72
73
  "pytest>=8.3",
73
74
  "readme-renderer[md]>=46.0",
@@ -0,0 +1,21 @@
1
+ ### Added
2
+
3
+ - Declare Python 3.15 support and add blocking Linux and Windows test jobs. Run the
4
+ Python compatibility matrix against a non-editable package installation.
5
+
6
+ ### Fixed
7
+
8
+ - Update locked urllib3 to 2.8.0 for upstream proxy TLS and streaming denial-of-service fixes
9
+ in the optional Bedrock dependency chain.
10
+ - Update locked virtualenv to 21.7.13 for upstream activation-script, configuration, and
11
+ seed-wheel verification security fixes in development tooling.
12
+ - Align the Hatchling 1.32.4 build and development pins with the lockfile and tooling contract.
13
+ - Raise the optional quality extra's PyTorch minimum to 2.13 to exclude older releases with
14
+ known security advisories; the locked PyTorch version remains 2.14.0.
15
+ - Repair the pipx installation link in the getting-started guide.
16
+
17
+ ### Changed
18
+
19
+ - Refresh CI tooling with setup-uv 10.2.0 and uv 0.13.0, including stable Python 3.15 downloads.
20
+
21
+ [PyPI](https://pypi.org/project/yaga-cli/0.2.1/)
@@ -27,7 +27,7 @@ SMOKE_MESSAGE = "feat(build): execute the built wheel"
27
27
  EXPECTED_REQUIRES_DIST = ["pyyaml<7,>=6.0.3", "typer<1,>=0.27.2"]
28
28
  EXPECTED_OPTIONAL_REQUIRES_DIST = [
29
29
  "boto3<2,>=1.37; extra == 'quality-bedrock'",
30
- "torch<3,>=2.6; extra == 'quality'",
30
+ "torch<3,>=2.13; extra == 'quality'",
31
31
  "transformers<6,>=5.10; extra == 'quality'",
32
32
  ]
33
33
 
@@ -7,7 +7,7 @@ import re
7
7
  from yaga.errors import ConfigurationError
8
8
 
9
9
  # Keep this equal to project.version; the build contract tests enforce that boundary.
10
- VERSION = "0.2.0"
10
+ VERSION = "0.2.1"
11
11
  _RELEASE = r"(0|[1-9][0-9]{0,8})\.(0|[1-9][0-9]{0,8})\.(0|[1-9][0-9]{0,8})"
12
12
  _CLAUSE = re.compile(r"(>=|<=|==|!=|>|<)\s*" + _RELEASE, re.ASCII)
13
13
 
@@ -163,7 +163,7 @@ def test_version_is_available_from_the_installed_command() -> None:
163
163
  result = runner.invoke(app, ["--version"])
164
164
 
165
165
  assert result.exit_code == 0
166
- assert result.stdout.strip() == "yaga 0.2.0"
166
+ assert result.stdout.strip() == "yaga 0.2.1"
167
167
 
168
168
 
169
169
  def test_github_pull_request_command_skips_multiline_dependabot_commit(
@@ -68,7 +68,7 @@ def test_windows_worker_waits_and_reports_completion(tmp_path: Path) -> None:
68
68
  assert not worker.exists()
69
69
 
70
70
 
71
- @pytest.mark.parametrize("requirement", [">=0.1.0", "==0.2.0", ">0.0.9, <1.0.0", "!=2.0.0"])
71
+ @pytest.mark.parametrize("requirement", [">=0.1.0", "==0.2.1", ">0.0.9, <1.0.0", "!=2.0.0"])
72
72
  def test_requirement_accepts_current_release(requirement: str) -> None:
73
73
  assert check_requirement(requirement) == requirement
74
74
 
@@ -82,7 +82,7 @@ def test_requirement_rejects_invalid_syntax(requirement: object) -> None:
82
82
  check_requirement(requirement)
83
83
 
84
84
 
85
- @pytest.mark.parametrize("requirement", [">0.2.0", "<0.1.0", ">=1.0.0", "!=0.2.0"])
85
+ @pytest.mark.parametrize("requirement", [">0.2.1", "<0.1.0", ">=1.0.0", "!=0.2.1"])
86
86
  def test_requirement_rejects_incompatible_release(requirement: str) -> None:
87
87
  with pytest.raises(ConfigurationError, match="does not satisfy"):
88
88
  check_requirement(requirement)
@@ -32,8 +32,8 @@ def test_toolchain_supply_chain_inputs_are_exactly_pinned() -> None:
32
32
  "typer>=0.27.2,<1",
33
33
  ]
34
34
  build_requirements = project["build-system"]["requires"]
35
- assert build_requirements == ["hatchling==1.32.0"]
36
- assert "hatchling==1.32.0" in project["dependency-groups"]["dev"]
35
+ assert build_requirements == ["hatchling==1.32.4"]
36
+ assert "hatchling==1.32.4" in project["dependency-groups"]["dev"]
37
37
  assert "pre-commit>=4.6.2,<5" in project["dependency-groups"]["dev"]
38
38
  assert project["tool"]["uv"]["required-version"] == ">=0.12.7"
39
39
  commit_policy = project["tool"]["yaga"]["commit"]
@@ -160,7 +160,7 @@ def test_toolchain_supply_chain_inputs_are_exactly_pinned() -> None:
160
160
  assert actionlint_image in (ROOT / documentation).read_text(encoding="utf-8")
161
161
 
162
162
  ci = (ROOT / ".github" / "workflows" / "ci.yml").read_text(encoding="utf-8")
163
- assert ci.count('version: "0.12.7"') == 2
163
+ assert ci.count('version: "0.13.0"') == 2
164
164
  assert "yaga --help" in ci
165
165
  assert "python -m yaga --help" in ci
166
166
  assert "yaga_message=\"$(printf '%s\\n\\n%s'" in ci
@@ -318,7 +318,7 @@ def test_wheel_metadata_must_advertise_the_locked_runtime() -> None:
318
318
  b"Requires-Dist: pyyaml<7,>=6.0.3\n"
319
319
  b"Requires-Dist: typer<1,>=0.27.2\n"
320
320
  b"Requires-Dist: boto3<2,>=1.37; extra == 'quality-bedrock'\n"
321
- b"Requires-Dist: torch<3,>=2.6; extra == 'quality'\n"
321
+ b"Requires-Dist: torch<3,>=2.13; extra == 'quality'\n"
322
322
  b"Requires-Dist: transformers<6,>=5.10; extra == 'quality'\n"
323
323
  b"\n"
324
324
  b'<img src="https://dariuszpanas.github.io/yaga/assets/branding/'
@@ -331,6 +331,7 @@ def test_wheel_metadata_must_advertise_the_locked_runtime() -> None:
331
331
  valid.replace(b"Requires-Dist: typer<1,>=0.27.2\n", b""),
332
332
  valid.replace(b"pyyaml<7,>=6.0.3", b"pyyaml>=6.0.3"),
333
333
  valid.replace(b"typer<1,>=0.27.2", b"typer>=0.27.2"),
334
+ valid.replace(b"torch<3,>=2.13", b"torch<3,>=2.6"),
334
335
  valid.replace(
335
336
  b"Requires-Dist: typer<1,>=0.27.2",
336
337
  b"Requires-Dist: typer<1,>=0.27.2\nRequires-Dist: requests>=2",
@@ -186,7 +186,7 @@ wheels = [
186
186
 
187
187
  [[package]]
188
188
  name = "hatchling"
189
- version = "1.32.0"
189
+ version = "1.32.4"
190
190
  source = { registry = "https://pypi.org/simple" }
191
191
  dependencies = [
192
192
  { name = "packaging" },
@@ -195,9 +195,9 @@ dependencies = [
195
195
  { name = "tomlkit" },
196
196
  { name = "trove-classifiers" },
197
197
  ]
198
- sdist = { url = "https://files.pythonhosted.org/packages/69/08/33331757185504aae48b8d9bd78cec03a76e3aecfb52e549d05a2347c0dd/hatchling-1.32.0.tar.gz", hash = "sha256:0bdbde4a52b06c37e3eca395f85a762bf0ef06fe374fd8ae429dc6be10230f5f", size = 57783, upload-time = "2026-08-11T05:03:44.114Z" }
198
+ sdist = { url = "https://files.pythonhosted.org/packages/f6/97/b5312f01a8c6daf729a9d272dd442e0c546dbcc630495788786c4b567ed0/hatchling-1.32.4.tar.gz", hash = "sha256:c4468f73144c054d2aab4ef0f0378c43b9878bf07f8ffd6b79690e970d375f07", size = 58065, upload-time = "2026-09-20T22:48:45.398Z" }
199
199
  wheels = [
200
- { url = "https://files.pythonhosted.org/packages/a9/84/1798b6d85ecde0e31546004efd25c5de1b1f49250644a60cce460e12593a/hatchling-1.32.0-py3-none-any.whl", hash = "sha256:0e17c9c3b9aa7c625acc8d0f5b622f107d5049af9ecf5ada4de1aada5be7cdbc", size = 78435, upload-time = "2026-08-11T05:03:42.644Z" },
200
+ { url = "https://files.pythonhosted.org/packages/5f/80/91f51f439c05d4ec4623c22928ce16a938d6d793bf709477830823497859/hatchling-1.32.4-py3-none-any.whl", hash = "sha256:08ecf7548fb48205e7f213d70c71e67b8271b7242093dc3f1da578b42c734a2c", size = 78748, upload-time = "2026-09-20T22:48:44.19Z" },
201
201
  ]
202
202
 
203
203
  [[package]]
@@ -1178,16 +1178,16 @@ wheels = [
1178
1178
 
1179
1179
  [[package]]
1180
1180
  name = "urllib3"
1181
- version = "2.7.0"
1181
+ version = "2.8.0"
1182
1182
  source = { registry = "https://pypi.org/simple" }
1183
- sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
1183
+ sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" }
1184
1184
  wheels = [
1185
- { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
1185
+ { url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" },
1186
1186
  ]
1187
1187
 
1188
1188
  [[package]]
1189
1189
  name = "virtualenv"
1190
- version = "21.7.7"
1190
+ version = "21.7.13"
1191
1191
  source = { registry = "https://pypi.org/simple" }
1192
1192
  dependencies = [
1193
1193
  { name = "distlib" },
@@ -1195,14 +1195,14 @@ dependencies = [
1195
1195
  { name = "platformdirs" },
1196
1196
  { name = "python-discovery" },
1197
1197
  ]
1198
- sdist = { url = "https://files.pythonhosted.org/packages/79/41/c3f34799487924f2a6f43b8a8b7acd345a6c61aac2211d4bced8621ca4f1/virtualenv-21.7.7.tar.gz", hash = "sha256:6874376f99ba6b8d4e3ee8bde67f9285412400c7d5b29ba41ee6daa5e0221bdc", size = 5347022, upload-time = "2026-08-28T18:59:50.093Z" }
1198
+ sdist = { url = "https://files.pythonhosted.org/packages/13/50/c9b84eb106d0db420b9878dac0a386c5791726f127ce20b06897f6e3a1e9/virtualenv-21.7.13.tar.gz", hash = "sha256:0355558b6f33619aab31347e43643b0ebc97f61ea3acf617b2b69e1f8a843d11", size = 5360306, upload-time = "2026-09-18T04:35:49.354Z" }
1199
1199
  wheels = [
1200
- { url = "https://files.pythonhosted.org/packages/95/f8/dcec8dc767b812193316c7debed1e2b53e586e59c267bfe517688ff90275/virtualenv-21.7.7-py3-none-any.whl", hash = "sha256:67a6a68fef3ad8ca16b8b89f33fd8f97996cc0bf0db31629d07ecf8dec539a2c", size = 5324620, upload-time = "2026-08-28T18:59:48.056Z" },
1200
+ { url = "https://files.pythonhosted.org/packages/9a/ce/e74453531b0c49a58d0e8a4f9bab4495705859fee4a4f7de27d58f4a791a/virtualenv-21.7.13-py3-none-any.whl", hash = "sha256:1bea5af7463f59c4719db48fe739579a2a4f569c96f26c086edda85c96da9f59", size = 5328680, upload-time = "2026-09-18T04:35:47.194Z" },
1201
1201
  ]
1202
1202
 
1203
1203
  [[package]]
1204
1204
  name = "yaga-cli"
1205
- version = "0.2.0"
1205
+ version = "0.2.1"
1206
1206
  source = { editable = "." }
1207
1207
  dependencies = [
1208
1208
  { name = "pyyaml" },
@@ -1234,8 +1234,8 @@ dev = [
1234
1234
  requires-dist = [
1235
1235
  { name = "boto3", marker = "extra == 'quality-bedrock'", specifier = ">=1.37,<2" },
1236
1236
  { name = "pyyaml", specifier = ">=6.0.3,<7" },
1237
- { name = "torch", marker = "sys_platform == 'linux' and extra == 'quality'", specifier = ">=2.6,<3", index = "https://download.pytorch.org/whl/cpu" },
1238
- { name = "torch", marker = "sys_platform != 'linux' and extra == 'quality'", specifier = ">=2.6,<3" },
1237
+ { name = "torch", marker = "sys_platform == 'linux' and extra == 'quality'", specifier = ">=2.13,<3", index = "https://download.pytorch.org/whl/cpu" },
1238
+ { name = "torch", marker = "sys_platform != 'linux' and extra == 'quality'", specifier = ">=2.13,<3" },
1239
1239
  { name = "transformers", marker = "extra == 'quality'", specifier = ">=5.10,<6" },
1240
1240
  { name = "typer", specifier = ">=0.27.2,<1" },
1241
1241
  ]
@@ -1243,7 +1243,7 @@ provides-extras = ["quality", "quality-bedrock"]
1243
1243
 
1244
1244
  [package.metadata.requires-dev]
1245
1245
  dev = [
1246
- { name = "hatchling", specifier = "==1.32.0" },
1246
+ { name = "hatchling", specifier = "==1.32.4" },
1247
1247
  { name = "pre-commit", specifier = ">=4.6.2,<5" },
1248
1248
  { name = "pytest", specifier = ">=8.3" },
1249
1249
  { name = "readme-renderer", extras = ["md"], specifier = ">=46.0" },
@@ -1,21 +0,0 @@
1
- ### Added
2
-
3
- - Support explicit plain-message policy and a frozen `plain-v1` starter; print incomplete,
4
- policy-guided drafts with `commit template` without changing files or Git.
5
-
6
- - Introduce opt-in `warning-rules` for gradual policy adoption, with consistent schema-v1 commit
7
- reports containing severity and warning counts, and nonblocking annotations.
8
-
9
- - Require bounded work-item references and constrain exact footer values through opt-in
10
- `required-issue-prefixes` and `footer-values` settings.
11
-
12
- - Add frozen editable workflow starters and `config show --type` explanations of effective
13
- body/scope overrides, preserving the existing default starter.
14
-
15
- - Validate proposed PR title-plus-description messages with opt-in `pull-request-message`,
16
- reusing full commit policy and reporting the proposed message separately.
17
-
18
- - Allow per-type body requirements with `body-policy-by-type` and cap total prose with
19
- `body-max-length`, preserving existing defaults and independent title checks.
20
-
21
- [PyPI](https://pypi.org/project/yaga-cli/0.2.0/)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes