yaga-cli 0.1.0__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 (313) hide show
  1. yaga_cli-0.1.0/.gitattributes +2 -0
  2. yaga_cli-0.1.0/.github/dependabot.yml +10 -0
  3. yaga_cli-0.1.0/.github/workflows/ci.yml +172 -0
  4. yaga_cli-0.1.0/.github/workflows/commit-policy.yml +35 -0
  5. yaga_cli-0.1.0/.github/workflows/commit-quality.yml +98 -0
  6. yaga_cli-0.1.0/.github/workflows/docs.yml +44 -0
  7. yaga_cli-0.1.0/.github/workflows/release.yml +72 -0
  8. yaga_cli-0.1.0/.gitignore +10 -0
  9. yaga_cli-0.1.0/.pre-commit-hooks.yaml +8 -0
  10. yaga_cli-0.1.0/.yaga/branch-policy.toml +7 -0
  11. yaga_cli-0.1.0/.yaga/change-policy.toml +6 -0
  12. yaga_cli-0.1.0/.yaga/checks/ci.toml +17 -0
  13. yaga_cli-0.1.0/.yaga/mode-policy.toml +2 -0
  14. yaga_cli-0.1.0/.yaga/path-policy.toml +2 -0
  15. yaga_cli-0.1.0/.yaga/size-policy.toml +12 -0
  16. yaga_cli-0.1.0/.yaga/tree-policy.toml +27 -0
  17. yaga_cli-0.1.0/AGENTS.md +248 -0
  18. yaga_cli-0.1.0/CHANGELOG.md +7 -0
  19. yaga_cli-0.1.0/CONTRIBUTING.md +446 -0
  20. yaga_cli-0.1.0/LICENSE +29 -0
  21. yaga_cli-0.1.0/Makefile +32 -0
  22. yaga_cli-0.1.0/PKG-INFO +84 -0
  23. yaga_cli-0.1.0/README.md +53 -0
  24. yaga_cli-0.1.0/SECURITY.md +157 -0
  25. yaga_cli-0.1.0/action.yml +105 -0
  26. yaga_cli-0.1.0/actions/commit-check/action.yml +50 -0
  27. yaga_cli-0.1.0/docs/agent-review-gate.md +211 -0
  28. yaga_cli-0.1.0/docs/assets/branding/isometric_terminal_y_logo.png +0 -0
  29. yaga_cli-0.1.0/docs/assets/branding/isometric_terminal_y_logo_transparent.png +0 -0
  30. yaga_cli-0.1.0/docs/assets/branding/yaga_cli_brand_concept_board.png +0 -0
  31. yaga_cli-0.1.0/docs/branch-policy.md +55 -0
  32. yaga_cli-0.1.0/docs/change-policy.md +69 -0
  33. yaga_cli-0.1.0/docs/changelog.md +219 -0
  34. yaga_cli-0.1.0/docs/ci-adoption.md +68 -0
  35. yaga_cli-0.1.0/docs/commands.md +47 -0
  36. yaga_cli-0.1.0/docs/commit-policy.md +236 -0
  37. yaga_cli-0.1.0/docs/commit-quality.md +231 -0
  38. yaga_cli-0.1.0/docs/configuration.md +304 -0
  39. yaga_cli-0.1.0/docs/contributing.md +80 -0
  40. yaga_cli-0.1.0/docs/getting-started.md +217 -0
  41. yaga_cli-0.1.0/docs/github-actions.md +83 -0
  42. yaga_cli-0.1.0/docs/github-review-adapter.md +240 -0
  43. yaga_cli-0.1.0/docs/index.md +49 -0
  44. yaga_cli-0.1.0/docs/install.ps1 +38 -0
  45. yaga_cli-0.1.0/docs/install.sh +44 -0
  46. yaga_cli-0.1.0/docs/mode-policy.md +68 -0
  47. yaga_cli-0.1.0/docs/path-policy.md +78 -0
  48. yaga_cli-0.1.0/docs/recipes.md +235 -0
  49. yaga_cli-0.1.0/docs/releasing.md +64 -0
  50. yaga_cli-0.1.0/docs/repository-checks.md +31 -0
  51. yaga_cli-0.1.0/docs/repository-plans.md +99 -0
  52. yaga_cli-0.1.0/docs/security.md +35 -0
  53. yaga_cli-0.1.0/docs/size-policy.md +61 -0
  54. yaga_cli-0.1.0/docs/stylesheets/extra.css +54 -0
  55. yaga_cli-0.1.0/docs/tree-policy.md +85 -0
  56. yaga_cli-0.1.0/docs/troubleshooting.md +190 -0
  57. yaga_cli-0.1.0/docs/usage.md +170 -0
  58. yaga_cli-0.1.0/docs/workflow-checks.md +138 -0
  59. yaga_cli-0.1.0/examples/agent-review-policy.toml +22 -0
  60. yaga_cli-0.1.0/examples/agent-review-results.json +21 -0
  61. yaga_cli-0.1.0/examples/agent-review.yml +192 -0
  62. yaga_cli-0.1.0/examples/commit-policy.yml +27 -0
  63. yaga_cli-0.1.0/examples/review-policy.yml +43 -0
  64. yaga_cli-0.1.0/overrides/404.html +5 -0
  65. yaga_cli-0.1.0/pyproject.toml +146 -0
  66. yaga_cli-0.1.0/scripts/check_build.py +1103 -0
  67. yaga_cli-0.1.0/scripts/check_description.py +53 -0
  68. yaga_cli-0.1.0/scripts/check_docs.py +58 -0
  69. yaga_cli-0.1.0/scripts/check_release.py +36 -0
  70. yaga_cli-0.1.0/scripts/composite_smoke_python +18 -0
  71. yaga_cli-0.1.0/src/yaga/__init__.py +1 -0
  72. yaga_cli-0.1.0/src/yaga/__main__.py +27 -0
  73. yaga_cli-0.1.0/src/yaga/_update_worker.py +65 -0
  74. yaga_cli-0.1.0/src/yaga/action.py +24 -0
  75. yaga_cli-0.1.0/src/yaga/action_cli.py +25 -0
  76. yaga_cli-0.1.0/src/yaga/agent_review/__init__.py +34 -0
  77. yaga_cli-0.1.0/src/yaga/agent_review/evaluation.py +93 -0
  78. yaga_cli-0.1.0/src/yaga/agent_review/github/__init__.py +1 -0
  79. yaga_cli-0.1.0/src/yaga/agent_review/github/boundary.py +292 -0
  80. yaga_cli-0.1.0/src/yaga/agent_review/github/candidate.py +193 -0
  81. yaga_cli-0.1.0/src/yaga/agent_review/github/constants.py +59 -0
  82. yaga_cli-0.1.0/src/yaga/agent_review/github/events.py +195 -0
  83. yaga_cli-0.1.0/src/yaga/agent_review/github/evidence.py +450 -0
  84. yaga_cli-0.1.0/src/yaga/agent_review/github/gate.py +1486 -0
  85. yaga_cli-0.1.0/src/yaga/agent_review/github/publication.py +570 -0
  86. yaga_cli-0.1.0/src/yaga/agent_review/github/requests.py +371 -0
  87. yaga_cli-0.1.0/src/yaga/agent_review/github/runs.py +412 -0
  88. yaga_cli-0.1.0/src/yaga/agent_review/github/runtime.py +303 -0
  89. yaga_cli-0.1.0/src/yaga/agent_review/plan.py +116 -0
  90. yaga_cli-0.1.0/src/yaga/agent_review/policy.py +164 -0
  91. yaga_cli-0.1.0/src/yaga/agent_review/results.py +306 -0
  92. yaga_cli-0.1.0/src/yaga/agent_review/runtime.py +7 -0
  93. yaga_cli-0.1.0/src/yaga/branches/__init__.py +25 -0
  94. yaga_cli-0.1.0/src/yaga/branches/checker.py +61 -0
  95. yaga_cli-0.1.0/src/yaga/branches/models.py +180 -0
  96. yaga_cli-0.1.0/src/yaga/branches/patterns.py +157 -0
  97. yaga_cli-0.1.0/src/yaga/branches/policy.py +87 -0
  98. yaga_cli-0.1.0/src/yaga/branches/reporting.py +189 -0
  99. yaga_cli-0.1.0/src/yaga/branches/service.py +25 -0
  100. yaga_cli-0.1.0/src/yaga/changes/__init__.py +30 -0
  101. yaga_cli-0.1.0/src/yaga/changes/checker.py +158 -0
  102. yaga_cli-0.1.0/src/yaga/changes/git.py +212 -0
  103. yaga_cli-0.1.0/src/yaga/changes/models.py +279 -0
  104. yaga_cli-0.1.0/src/yaga/changes/patterns.py +201 -0
  105. yaga_cli-0.1.0/src/yaga/changes/policy.py +154 -0
  106. yaga_cli-0.1.0/src/yaga/changes/reporting.py +260 -0
  107. yaga_cli-0.1.0/src/yaga/changes/service.py +32 -0
  108. yaga_cli-0.1.0/src/yaga/cli.py +82 -0
  109. yaga_cli-0.1.0/src/yaga/commands/__init__.py +1 -0
  110. yaga_cli-0.1.0/src/yaga/commands/branch.py +50 -0
  111. yaga_cli-0.1.0/src/yaga/commands/change.py +58 -0
  112. yaga_cli-0.1.0/src/yaga/commands/commit.py +203 -0
  113. yaga_cli-0.1.0/src/yaga/commands/config.py +70 -0
  114. yaga_cli-0.1.0/src/yaga/commands/gate.py +174 -0
  115. yaga_cli-0.1.0/src/yaga/commands/github.py +56 -0
  116. yaga_cli-0.1.0/src/yaga/commands/mode.py +54 -0
  117. yaga_cli-0.1.0/src/yaga/commands/path.py +54 -0
  118. yaga_cli-0.1.0/src/yaga/commands/repo.py +196 -0
  119. yaga_cli-0.1.0/src/yaga/commands/self_manage.py +40 -0
  120. yaga_cli-0.1.0/src/yaga/commands/size.py +54 -0
  121. yaga_cli-0.1.0/src/yaga/commands/tree.py +54 -0
  122. yaga_cli-0.1.0/src/yaga/commands/workflow.py +132 -0
  123. yaga_cli-0.1.0/src/yaga/commit_action_cli.py +65 -0
  124. yaga_cli-0.1.0/src/yaga/commit_action_runtime.py +42 -0
  125. yaga_cli-0.1.0/src/yaga/commits/__init__.py +21 -0
  126. yaga_cli-0.1.0/src/yaga/commits/checker.py +402 -0
  127. yaga_cli-0.1.0/src/yaga/commits/config.py +661 -0
  128. yaga_cli-0.1.0/src/yaga/commits/config_init.py +154 -0
  129. yaga_cli-0.1.0/src/yaga/commits/git.py +212 -0
  130. yaga_cli-0.1.0/src/yaga/commits/github_event.py +393 -0
  131. yaga_cli-0.1.0/src/yaga/commits/github_reporting.py +259 -0
  132. yaga_cli-0.1.0/src/yaga/commits/models.py +264 -0
  133. yaga_cli-0.1.0/src/yaga/commits/parser.py +131 -0
  134. yaga_cli-0.1.0/src/yaga/commits/quality.py +542 -0
  135. yaga_cli-0.1.0/src/yaga/commits/reporting.py +476 -0
  136. yaga_cli-0.1.0/src/yaga/commits/service.py +228 -0
  137. yaga_cli-0.1.0/src/yaga/commits/sources.py +66 -0
  138. yaga_cli-0.1.0/src/yaga/commits/typos.py +127 -0
  139. yaga_cli-0.1.0/src/yaga/config_scope.py +28 -0
  140. yaga_cli-0.1.0/src/yaga/errors.py +47 -0
  141. yaga_cli-0.1.0/src/yaga/files.py +13 -0
  142. yaga_cli-0.1.0/src/yaga/git/__init__.py +28 -0
  143. yaga_cli-0.1.0/src/yaga/git/process.py +303 -0
  144. yaga_cli-0.1.0/src/yaga/git/runtime.py +775 -0
  145. yaga_cli-0.1.0/src/yaga/git/tree.py +182 -0
  146. yaga_cli-0.1.0/src/yaga/github.py +320 -0
  147. yaga_cli-0.1.0/src/yaga/models.py +175 -0
  148. yaga_cli-0.1.0/src/yaga/modes/__init__.py +35 -0
  149. yaga_cli-0.1.0/src/yaga/modes/checker.py +31 -0
  150. yaga_cli-0.1.0/src/yaga/modes/git.py +179 -0
  151. yaga_cli-0.1.0/src/yaga/modes/models.py +504 -0
  152. yaga_cli-0.1.0/src/yaga/modes/patterns.py +207 -0
  153. yaga_cli-0.1.0/src/yaga/modes/policy.py +159 -0
  154. yaga_cli-0.1.0/src/yaga/modes/reporting.py +250 -0
  155. yaga_cli-0.1.0/src/yaga/modes/service.py +44 -0
  156. yaga_cli-0.1.0/src/yaga/paths/__init__.py +1 -0
  157. yaga_cli-0.1.0/src/yaga/paths/checker.py +302 -0
  158. yaga_cli-0.1.0/src/yaga/paths/git.py +133 -0
  159. yaga_cli-0.1.0/src/yaga/paths/models.py +357 -0
  160. yaga_cli-0.1.0/src/yaga/paths/policy.py +117 -0
  161. yaga_cli-0.1.0/src/yaga/paths/reporting.py +225 -0
  162. yaga_cli-0.1.0/src/yaga/paths/service.py +44 -0
  163. yaga_cli-0.1.0/src/yaga/repository/__init__.py +1 -0
  164. yaga_cli-0.1.0/src/yaga/repository/checker.py +265 -0
  165. yaga_cli-0.1.0/src/yaga/repository/models.py +262 -0
  166. yaga_cli-0.1.0/src/yaga/repository/plan.py +381 -0
  167. yaga_cli-0.1.0/src/yaga/repository/reporting.py +388 -0
  168. yaga_cli-0.1.0/src/yaga/self_update.py +113 -0
  169. yaga_cli-0.1.0/src/yaga/sizes/__init__.py +33 -0
  170. yaga_cli-0.1.0/src/yaga/sizes/checker.py +39 -0
  171. yaga_cli-0.1.0/src/yaga/sizes/git.py +204 -0
  172. yaga_cli-0.1.0/src/yaga/sizes/models.py +506 -0
  173. yaga_cli-0.1.0/src/yaga/sizes/patterns.py +213 -0
  174. yaga_cli-0.1.0/src/yaga/sizes/policy.py +156 -0
  175. yaga_cli-0.1.0/src/yaga/sizes/reporting.py +323 -0
  176. yaga_cli-0.1.0/src/yaga/sizes/service.py +44 -0
  177. yaga_cli-0.1.0/src/yaga/status.py +63 -0
  178. yaga_cli-0.1.0/src/yaga/trees/__init__.py +27 -0
  179. yaga_cli-0.1.0/src/yaga/trees/checker.py +77 -0
  180. yaga_cli-0.1.0/src/yaga/trees/git.py +127 -0
  181. yaga_cli-0.1.0/src/yaga/trees/models.py +271 -0
  182. yaga_cli-0.1.0/src/yaga/trees/patterns.py +227 -0
  183. yaga_cli-0.1.0/src/yaga/trees/policy.py +108 -0
  184. yaga_cli-0.1.0/src/yaga/trees/reporting.py +252 -0
  185. yaga_cli-0.1.0/src/yaga/trees/service.py +38 -0
  186. yaga_cli-0.1.0/src/yaga/version_requirement.py +49 -0
  187. yaga_cli-0.1.0/src/yaga/workflows/__init__.py +1 -0
  188. yaga_cli-0.1.0/src/yaga/workflows/actionlint_runtime.py +985 -0
  189. yaga_cli-0.1.0/src/yaga/workflows/actionlint_snapshot.py +409 -0
  190. yaga_cli-0.1.0/src/yaga/workflows/checker.py +98 -0
  191. yaga_cli-0.1.0/src/yaga/workflows/inputs.py +260 -0
  192. yaga_cli-0.1.0/src/yaga/workflows/lint.py +400 -0
  193. yaga_cli-0.1.0/src/yaga/workflows/models.py +189 -0
  194. yaga_cli-0.1.0/src/yaga/workflows/parser.py +41 -0
  195. yaga_cli-0.1.0/src/yaga/workflows/references.py +304 -0
  196. yaga_cli-0.1.0/src/yaga/workflows/reporting.py +280 -0
  197. yaga_cli-0.1.0/src/yaga/workflows/security.py +125 -0
  198. yaga_cli-0.1.0/src/yaga/workflows/security_facts.py +109 -0
  199. yaga_cli-0.1.0/src/yaga/workflows/security_models.py +131 -0
  200. yaga_cli-0.1.0/src/yaga/workflows/security_reporting.py +193 -0
  201. yaga_cli-0.1.0/src/yaga/workflows/security_rules.py +396 -0
  202. yaga_cli-0.1.0/src/yaga/workflows/yaml.py +1056 -0
  203. yaga_cli-0.1.0/tests/__init__.py +1 -0
  204. yaga_cli-0.1.0/tests/codex_support.py +391 -0
  205. yaga_cli-0.1.0/tests/test_action.py +117 -0
  206. yaga_cli-0.1.0/tests/test_agent_review_cli.py +70 -0
  207. yaga_cli-0.1.0/tests/test_agent_review_evaluation.py +81 -0
  208. yaga_cli-0.1.0/tests/test_agent_review_plan.py +81 -0
  209. yaga_cli-0.1.0/tests/test_agent_review_policy.py +84 -0
  210. yaga_cli-0.1.0/tests/test_agent_review_results.py +325 -0
  211. yaga_cli-0.1.0/tests/test_branch_checker.py +153 -0
  212. yaga_cli-0.1.0/tests/test_branch_cli.py +210 -0
  213. yaga_cli-0.1.0/tests/test_branch_models.py +129 -0
  214. yaga_cli-0.1.0/tests/test_branch_patterns.py +172 -0
  215. yaga_cli-0.1.0/tests/test_branch_policy.py +133 -0
  216. yaga_cli-0.1.0/tests/test_branch_reporting.py +176 -0
  217. yaga_cli-0.1.0/tests/test_branch_service.py +69 -0
  218. yaga_cli-0.1.0/tests/test_change_checker.py +320 -0
  219. yaga_cli-0.1.0/tests/test_change_cli.py +255 -0
  220. yaga_cli-0.1.0/tests/test_change_git.py +456 -0
  221. yaga_cli-0.1.0/tests/test_change_patterns.py +131 -0
  222. yaga_cli-0.1.0/tests/test_change_policy.py +284 -0
  223. yaga_cli-0.1.0/tests/test_change_reporting.py +243 -0
  224. yaga_cli-0.1.0/tests/test_cli.py +1166 -0
  225. yaga_cli-0.1.0/tests/test_codex_events.py +163 -0
  226. yaga_cli-0.1.0/tests/test_codex_evidence.py +226 -0
  227. yaga_cli-0.1.0/tests/test_codex_evidence_literals.py +143 -0
  228. yaga_cli-0.1.0/tests/test_codex_gate.py +1629 -0
  229. yaga_cli-0.1.0/tests/test_codex_publication.py +557 -0
  230. yaga_cli-0.1.0/tests/test_codex_requests.py +452 -0
  231. yaga_cli-0.1.0/tests/test_codex_runs.py +210 -0
  232. yaga_cli-0.1.0/tests/test_codex_runtime.py +321 -0
  233. yaga_cli-0.1.0/tests/test_commit_action.py +485 -0
  234. yaga_cli-0.1.0/tests/test_commit_checker.py +616 -0
  235. yaga_cli-0.1.0/tests/test_commit_config.py +708 -0
  236. yaga_cli-0.1.0/tests/test_commit_git.py +426 -0
  237. yaga_cli-0.1.0/tests/test_commit_parser.py +303 -0
  238. yaga_cli-0.1.0/tests/test_commit_quality.py +604 -0
  239. yaga_cli-0.1.0/tests/test_commit_quality_workflow.py +163 -0
  240. yaga_cli-0.1.0/tests/test_commit_reporting.py +254 -0
  241. yaga_cli-0.1.0/tests/test_commit_service.py +390 -0
  242. yaga_cli-0.1.0/tests/test_commit_sources.py +75 -0
  243. yaga_cli-0.1.0/tests/test_commit_typos.py +214 -0
  244. yaga_cli-0.1.0/tests/test_config_init.py +271 -0
  245. yaga_cli-0.1.0/tests/test_description.py +43 -0
  246. yaga_cli-0.1.0/tests/test_docs_links.py +38 -0
  247. yaga_cli-0.1.0/tests/test_files.py +47 -0
  248. yaga_cli-0.1.0/tests/test_git_runtime.py +1146 -0
  249. yaga_cli-0.1.0/tests/test_git_tree.py +323 -0
  250. yaga_cli-0.1.0/tests/test_github.py +315 -0
  251. yaga_cli-0.1.0/tests/test_github_pull_request.py +572 -0
  252. yaga_cli-0.1.0/tests/test_github_reporting.py +227 -0
  253. yaga_cli-0.1.0/tests/test_installation.py +173 -0
  254. yaga_cli-0.1.0/tests/test_installers.py +175 -0
  255. yaga_cli-0.1.0/tests/test_mode_checker.py +200 -0
  256. yaga_cli-0.1.0/tests/test_mode_cli.py +368 -0
  257. yaga_cli-0.1.0/tests/test_mode_git.py +442 -0
  258. yaga_cli-0.1.0/tests/test_mode_models.py +278 -0
  259. yaga_cli-0.1.0/tests/test_mode_patterns.py +81 -0
  260. yaga_cli-0.1.0/tests/test_mode_policy.py +121 -0
  261. yaga_cli-0.1.0/tests/test_mode_reporting.py +357 -0
  262. yaga_cli-0.1.0/tests/test_mode_service.py +116 -0
  263. yaga_cli-0.1.0/tests/test_models.py +119 -0
  264. yaga_cli-0.1.0/tests/test_path_checker.py +341 -0
  265. yaga_cli-0.1.0/tests/test_path_cli.py +348 -0
  266. yaga_cli-0.1.0/tests/test_path_git.py +408 -0
  267. yaga_cli-0.1.0/tests/test_path_models.py +335 -0
  268. yaga_cli-0.1.0/tests/test_path_policy.py +101 -0
  269. yaga_cli-0.1.0/tests/test_path_reporting.py +343 -0
  270. yaga_cli-0.1.0/tests/test_path_service.py +118 -0
  271. yaga_cli-0.1.0/tests/test_release.py +50 -0
  272. yaga_cli-0.1.0/tests/test_repo_cli.py +805 -0
  273. yaga_cli-0.1.0/tests/test_repository_checker.py +792 -0
  274. yaga_cli-0.1.0/tests/test_repository_contract.py +772 -0
  275. yaga_cli-0.1.0/tests/test_repository_models.py +185 -0
  276. yaga_cli-0.1.0/tests/test_repository_plan.py +710 -0
  277. yaga_cli-0.1.0/tests/test_repository_reporting.py +522 -0
  278. yaga_cli-0.1.0/tests/test_size_checker.py +164 -0
  279. yaga_cli-0.1.0/tests/test_size_cli.py +323 -0
  280. yaga_cli-0.1.0/tests/test_size_git.py +540 -0
  281. yaga_cli-0.1.0/tests/test_size_models.py +231 -0
  282. yaga_cli-0.1.0/tests/test_size_patterns.py +64 -0
  283. yaga_cli-0.1.0/tests/test_size_policy.py +107 -0
  284. yaga_cli-0.1.0/tests/test_size_reporting.py +293 -0
  285. yaga_cli-0.1.0/tests/test_size_service.py +91 -0
  286. yaga_cli-0.1.0/tests/test_status.py +60 -0
  287. yaga_cli-0.1.0/tests/test_tooling.py +436 -0
  288. yaga_cli-0.1.0/tests/test_tree_checker.py +101 -0
  289. yaga_cli-0.1.0/tests/test_tree_cli.py +327 -0
  290. yaga_cli-0.1.0/tests/test_tree_git.py +366 -0
  291. yaga_cli-0.1.0/tests/test_tree_models.py +233 -0
  292. yaga_cli-0.1.0/tests/test_tree_patterns.py +126 -0
  293. yaga_cli-0.1.0/tests/test_tree_policy.py +106 -0
  294. yaga_cli-0.1.0/tests/test_tree_reporting.py +256 -0
  295. yaga_cli-0.1.0/tests/test_tree_service.py +106 -0
  296. yaga_cli-0.1.0/tests/test_workflow_checker.py +220 -0
  297. yaga_cli-0.1.0/tests/test_workflow_inputs.py +204 -0
  298. yaga_cli-0.1.0/tests/test_workflow_lint.py +545 -0
  299. yaga_cli-0.1.0/tests/test_workflow_lint_hardening.py +1431 -0
  300. yaga_cli-0.1.0/tests/test_workflow_lint_reporting.py +229 -0
  301. yaga_cli-0.1.0/tests/test_workflow_provider_inputs.py +346 -0
  302. yaga_cli-0.1.0/tests/test_workflow_references.py +332 -0
  303. yaga_cli-0.1.0/tests/test_workflow_reporting.py +285 -0
  304. yaga_cli-0.1.0/tests/test_workflow_security_cli.py +362 -0
  305. yaga_cli-0.1.0/tests/test_workflow_security_facts.py +263 -0
  306. yaga_cli-0.1.0/tests/test_workflow_security_models.py +134 -0
  307. yaga_cli-0.1.0/tests/test_workflow_security_reporting.py +339 -0
  308. yaga_cli-0.1.0/tests/test_workflow_security_rules.py +639 -0
  309. yaga_cli-0.1.0/tests/test_workflow_security_selection.py +93 -0
  310. yaga_cli-0.1.0/tests/test_workflow_security_service.py +257 -0
  311. yaga_cli-0.1.0/tests/test_workflow_yaml.py +563 -0
  312. yaga_cli-0.1.0/uv.lock +1280 -0
  313. yaga_cli-0.1.0/zensical.toml +86 -0
@@ -0,0 +1,2 @@
1
+ # Downloaded shell scripts must remain executable by POSIX shells from any checkout.
2
+ docs/install.sh text eol=lf
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ - package-ecosystem: pip
8
+ directory: /
9
+ schedule:
10
+ interval: weekly
@@ -0,0 +1,172 @@
1
+ name: CI
2
+ run-name: >-
3
+ ${{ github.event_name == 'pull_request' &&
4
+ format('YAGA CI {0} for #{1} at base {2}', github.event.action,
5
+ github.event.pull_request.number, github.event.pull_request.base.sha) ||
6
+ format('CI {0} on {1}', github.event_name, github.ref_name) }}
7
+
8
+ on:
9
+ pull_request:
10
+ types: [opened, synchronize, reopened, ready_for_review]
11
+ push:
12
+ branches: [main]
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ check:
19
+ name: Check
20
+ runs-on: ubuntu-latest
21
+ timeout-minutes: 10
22
+ steps:
23
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24
+ with:
25
+ ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
26
+ fetch-depth: 0
27
+ persist-credentials: false
28
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
29
+ with:
30
+ enable-cache: true
31
+ version: "0.12.7"
32
+ - name: Cache Typos registry
33
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
34
+ with:
35
+ path: ~/.cargo/registry
36
+ key: yaga-typos-${{ runner.os }}-1.49.0
37
+ restore-keys: yaga-typos-${{ runner.os }}-
38
+ - name: Install Typos CLI
39
+ run: cargo install typos-cli --version 1.49.0 --locked
40
+ - run: uv sync --frozen --group dev --python 3.12
41
+ - run: uv run --frozen --python 3.12 ruff check .
42
+ - run: uv run --frozen --python 3.12 ruff format --check .
43
+ - run: uv run --frozen --python 3.12 ty check
44
+ - run: uv run --frozen --python 3.12 yaga --help
45
+ - run: uv run --frozen --python 3.12 python -m yaga --help
46
+ - run: |
47
+ yaga_message="$(printf '%s\n\n%s' \
48
+ 'feat(ci): exercise the installed CLI' \
49
+ 'Keep the installed command path covered by this CI smoke test.')"
50
+ uv run --frozen --python 3.12 yaga commit check --message "$yaga_message"
51
+ - name: Check pull-request branch name
52
+ if: github.event_name == 'pull_request'
53
+ env:
54
+ YAGA_BRANCH_NAME: ${{ github.head_ref }}
55
+ run: >-
56
+ uv run --frozen --python 3.12 yaga branch check
57
+ --policy .yaga/branch-policy.toml
58
+ --name "$YAGA_BRANCH_NAME"
59
+ --format github
60
+ - name: Check pushed branch name
61
+ if: >-
62
+ github.event_name == 'push' &&
63
+ github.ref_type == 'branch' &&
64
+ github.event.deleted == false
65
+ env:
66
+ YAGA_BRANCH_NAME: ${{ github.ref_name }}
67
+ run: >-
68
+ uv run --frozen --python 3.12 yaga branch check
69
+ --policy .yaga/branch-policy.toml
70
+ --name "$YAGA_BRANCH_NAME"
71
+ --format github
72
+ - name: Exercise the pre-commit provider
73
+ run: |
74
+ printf '%s\n' 'not conventional' > "$RUNNER_TEMP/YAGA_COMMIT_EDITMSG"
75
+ YAGA_PRE_COMMIT_STATUS=0
76
+ uv run --frozen --python 3.12 pre-commit try-repo . yaga-commit-check \
77
+ --hook-stage commit-msg \
78
+ --commit-msg-filename "$RUNNER_TEMP/YAGA_COMMIT_EDITMSG" \
79
+ > "$RUNNER_TEMP/yaga-pre-commit.log" 2>&1 || YAGA_PRE_COMMIT_STATUS=$?
80
+ cat "$RUNNER_TEMP/yaga-pre-commit.log"
81
+ test "$YAGA_PRE_COMMIT_STATUS" -eq 1
82
+ grep -F -- 'hook id: yaga-commit-check' "$RUNNER_TEMP/yaga-pre-commit.log"
83
+ grep -F -- 'exit code: 1' "$RUNNER_TEMP/yaga-pre-commit.log"
84
+ grep -F -- '[syntax.header]' "$RUNNER_TEMP/yaga-pre-commit.log"
85
+ - name: Run aggregate repository checks
86
+ env:
87
+ YAGA_REPOSITORY_REVISION: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
88
+ run: >-
89
+ uv run --frozen --python 3.12 yaga repo check
90
+ --plan .yaga/checks/ci.toml
91
+ --commit "$YAGA_REPOSITORY_REVISION"
92
+ --revision "$YAGA_REPOSITORY_REVISION"
93
+ --format github
94
+ - name: Run changed-path policy
95
+ env:
96
+ YAGA_CHANGE_BASE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
97
+ YAGA_CHANGE_HEAD: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
98
+ YAGA_CHANGE_SEPARATOR: ${{ github.event_name == 'pull_request' && '...' || '..' }}
99
+ run: >-
100
+ uv run --frozen --python 3.12 yaga change check
101
+ --policy .yaga/change-policy.toml
102
+ --range "${YAGA_CHANGE_BASE}${YAGA_CHANGE_SEPARATOR}${YAGA_CHANGE_HEAD}"
103
+ --format github
104
+ - name: Exercise the cached actionlint integration
105
+ run: >-
106
+ uv run --frozen --python 3.12 pytest -q
107
+ tests/test_workflow_lint.py tests/test_workflow_lint_hardening.py
108
+ - run: bash -n scripts/composite_smoke_python
109
+ - run: uv run --frozen --python 3.12 python scripts/check_build.py
110
+ - name: Build documentation
111
+ run: |
112
+ uv run --frozen --python 3.12 zensical build --strict --clean
113
+ uv run --frozen --python 3.12 python scripts/check_docs.py
114
+ - name: Install the composite smoke interpreter
115
+ run: |
116
+ install -D --mode=0755 \
117
+ scripts/composite_smoke_python \
118
+ "$RUNNER_TEMP/yaga-smoke-bin/python"
119
+ echo "$RUNNER_TEMP/yaga-smoke-bin" >> "$GITHUB_PATH"
120
+ - name: Exercise the composite action manifest and wiring
121
+ id: action_smoke
122
+ uses: ./
123
+ with:
124
+ gate: agent-review
125
+ operation: invalidate
126
+ github-token: not-used
127
+ owner-id: "15094983"
128
+ job-timeout-minutes: 15
129
+ - name: Require the composite smoke outcome
130
+ env:
131
+ ACTION_OUTCOME: ${{ steps.action_smoke.outcome }}
132
+ run: |
133
+ test "$ACTION_OUTCOME" = success
134
+
135
+ test:
136
+ name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
137
+ strategy:
138
+ fail-fast: false
139
+ matrix:
140
+ python-version: ["3.12", "3.13", "3.14"]
141
+ os: [ubuntu-latest]
142
+ include:
143
+ - python-version: "3.12"
144
+ os: windows-latest
145
+ runs-on: ${{ matrix.os }}
146
+ timeout-minutes: 10
147
+ steps:
148
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
149
+ with:
150
+ persist-credentials: false
151
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
152
+ with:
153
+ 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
157
+
158
+ gate:
159
+ name: CI Prerequisites
160
+ if: always()
161
+ needs: [check, test]
162
+ runs-on: ubuntu-latest
163
+ timeout-minutes: 1
164
+ steps:
165
+ - name: Require the complete blocking matrix
166
+ env:
167
+ CHECK_RESULT: ${{ needs.check.result }}
168
+ TEST_RESULT: ${{ needs.test.result }}
169
+ run: |
170
+ set -euo pipefail
171
+ [[ "$CHECK_RESULT" == success ]]
172
+ [[ "$TEST_RESULT" == success ]]
@@ -0,0 +1,35 @@
1
+ name: Commit Policy
2
+ run-name: >-
3
+ Commit policy ${{ github.event.action }} for #${{ github.event.pull_request.number }}
4
+
5
+ on:
6
+ pull_request:
7
+ types: [opened, synchronize, reopened, edited, ready_for_review]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: yaga-commit-policy-${{ github.event.pull_request.number }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ commit-policy:
18
+ name: Commit Messages
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 5
21
+ steps:
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
+ with:
24
+ ref: ${{ github.event.pull_request.head.sha }}
25
+ fetch-depth: 0
26
+ persist-credentials: false
27
+ - name: Cache Typos registry
28
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
29
+ with:
30
+ path: ~/.cargo/registry
31
+ key: yaga-typos-${{ runner.os }}-1.49.0
32
+ restore-keys: yaga-typos-${{ runner.os }}-
33
+ - name: Install Typos CLI
34
+ run: cargo install typos-cli --version 1.49.0 --locked
35
+ - uses: ./actions/commit-check
@@ -0,0 +1,98 @@
1
+ name: Commit Quality
2
+ run-name: >-
3
+ Commit quality ${{ github.event_name }} on ${{ github.ref_name }}
4
+
5
+ on:
6
+ pull_request:
7
+ types: [opened, synchronize, reopened, ready_for_review]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: commit-quality-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ env:
18
+ HF_HOME: ${{ github.workspace }}/.yaga-huggingface
19
+ YAGA_QUALITY_TASK: classification
20
+ YAGA_QUALITY_MODEL_ID: saridormi/commit-message-quality-codebert
21
+ YAGA_QUALITY_MODEL_REVISION: 30c7895b3eb0270a3246ef3db7b43c837d8e553a
22
+ YAGA_QUALITY_BASE_SHA: ${{ github.event.pull_request.base.sha || '' }}
23
+ YAGA_QUALITY_HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
24
+
25
+ jobs:
26
+ quality:
27
+ name: Hugging Face commit quality
28
+ runs-on: ubuntu-latest
29
+ timeout-minutes: 20
30
+ steps:
31
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
32
+ with:
33
+ ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
34
+ fetch-depth: 0
35
+ persist-credentials: false
36
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
37
+ with:
38
+ enable-cache: true
39
+ version: "0.12.7"
40
+ - id: model-cache
41
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
42
+ with:
43
+ path: ${{ github.workspace }}/.yaga-huggingface
44
+ key: yaga-quality-${{ runner.os }}-python3.12-${{ env.YAGA_QUALITY_TASK }}-${{ env.YAGA_QUALITY_MODEL_ID }}-${{ env.YAGA_QUALITY_MODEL_REVISION }}
45
+ - run: uv sync --frozen --group dev --extra quality --python 3.12
46
+ - name: Populate cache and prove offline reuse
47
+ shell: bash
48
+ run: |
49
+ set -euo pipefail
50
+ if [[ "$GITHUB_EVENT_NAME" == pull_request ]]; then
51
+ source_arguments=(--range "$YAGA_QUALITY_BASE_SHA..$YAGA_QUALITY_HEAD_SHA")
52
+ else
53
+ source_arguments=(--commit "$YAGA_QUALITY_HEAD_SHA")
54
+ fi
55
+ online_status=0
56
+ online_report="$(uv run --frozen --python 3.12 yaga commit quality \
57
+ "${source_arguments[@]}" \
58
+ --provider huggingface \
59
+ --task "$YAGA_QUALITY_TASK" \
60
+ --model "$YAGA_QUALITY_MODEL_ID" \
61
+ --input-mode message \
62
+ --revision "$YAGA_QUALITY_MODEL_REVISION" \
63
+ --format github 2>&1)" || online_status=$?
64
+ printf '%s\n' "$online_report"
65
+ {
66
+ printf '%s\n' '### YAGA commit quality (online)'
67
+ printf '%s\n' 'Model cache hit: ${{ steps.model-cache.outputs.cache-hit }}'
68
+ printf '%s\n' '<pre>'
69
+ printf '%s\n' "$online_report" | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g'
70
+ printf '%s\n' '</pre>'
71
+ } >> "$GITHUB_STEP_SUMMARY"
72
+ offline_status=0
73
+ offline_report="$(uv run --frozen --python 3.12 yaga commit quality \
74
+ "${source_arguments[@]}" \
75
+ --provider huggingface \
76
+ --task "$YAGA_QUALITY_TASK" \
77
+ --model "$YAGA_QUALITY_MODEL_ID" \
78
+ --input-mode message \
79
+ --revision "$YAGA_QUALITY_MODEL_REVISION" \
80
+ --offline \
81
+ --format github 2>&1)" || offline_status=$?
82
+ printf '%s\n' "$offline_report"
83
+ {
84
+ printf '%s\n' '### YAGA commit quality (offline replay)'
85
+ printf '%s\n' '<pre>'
86
+ printf '%s\n' "$offline_report" | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g'
87
+ printf '%s\n' '</pre>'
88
+ } >> "$GITHUB_STEP_SUMMARY"
89
+ for status in "$online_status" "$offline_status"; do
90
+ case "$status" in
91
+ 0|1) ;;
92
+ *) exit 2 ;;
93
+ esac
94
+ done
95
+ if [[ "$online_status" -eq 1 || "$offline_status" -eq 1 ]]; then
96
+ exit 1
97
+ fi
98
+ exit 0
@@ -0,0 +1,44 @@
1
+ name: Documentation
2
+ run-name: >-
3
+ Documentation ${{ github.event_name }} on ${{ github.ref_name }}
4
+
5
+ on:
6
+ push:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: pages
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ deploy:
18
+ name: Publish
19
+ permissions:
20
+ contents: read
21
+ pages: write
22
+ id-token: write
23
+ environment:
24
+ name: github-pages
25
+ url: ${{ steps.deployment.outputs.page_url }}
26
+ runs-on: ubuntu-latest
27
+ timeout-minutes: 10
28
+ steps:
29
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
30
+ with:
31
+ persist-credentials: false
32
+ - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6
33
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
34
+ with:
35
+ version: "0.12.7"
36
+ - run: uv sync --frozen --group dev --python 3.12
37
+ - run: uv run --frozen --python 3.12 zensical build --strict --clean
38
+ - run: uv run --frozen --python 3.12 python scripts/check_docs.py
39
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
40
+ with:
41
+ path: site
42
+ - name: Deploy to GitHub Pages
43
+ id: deployment
44
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5
@@ -0,0 +1,72 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: yaga-release
13
+ cancel-in-progress: false
14
+
15
+ jobs:
16
+ build:
17
+ name: Validate and build
18
+ if: >-
19
+ github.event_name == 'push' ||
20
+ github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
21
+ runs-on: ubuntu-latest
22
+ timeout-minutes: 20
23
+ steps:
24
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
25
+ with:
26
+ fetch-depth: 0
27
+ persist-credentials: false
28
+ - name: Require source on the default branch
29
+ env:
30
+ DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
31
+ EVENT_SHA: ${{ github.sha }}
32
+ run: |
33
+ test "$(git rev-parse HEAD)" = "$EVENT_SHA"
34
+ git merge-base --is-ancestor HEAD "refs/remotes/origin/$DEFAULT_BRANCH"
35
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
36
+ with:
37
+ version: "0.12.7"
38
+ enable-cache: false
39
+ - run: uv sync --frozen --group dev --python 3.12
40
+ - name: Validate production version and release notes
41
+ if: github.event_name == 'push'
42
+ env:
43
+ RELEASE_TAG: ${{ github.ref_name }}
44
+ run: uv run --frozen python scripts/check_release.py "$RELEASE_TAG"
45
+ - name: Install pinned Typos CLI
46
+ run: cargo install typos-cli --version 1.49.0 --locked
47
+ - name: Run the full gate and retain its validated distributions
48
+ run: uv run --frozen make ci BUILD_ARGS="--output-dir dist"
49
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
50
+ with:
51
+ name: distributions
52
+ path: dist/
53
+ if-no-files-found: error
54
+ retention-days: 7
55
+
56
+ publish:
57
+ name: Publish to PyPI
58
+ needs: build
59
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
60
+ runs-on: ubuntu-latest
61
+ timeout-minutes: 10
62
+ environment:
63
+ name: pypi
64
+ url: https://pypi.org/p/yaga-cli
65
+ permissions:
66
+ id-token: write
67
+ steps:
68
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
69
+ with:
70
+ name: distributions
71
+ path: dist/
72
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -0,0 +1,10 @@
1
+ __pycache__/
2
+ .pytest_cache/
3
+ .ruff_cache/
4
+ .venv/
5
+ *.py[cod]
6
+ .coverage
7
+ *.egg-info/
8
+ dist/
9
+ htmlcov/
10
+ site/
@@ -0,0 +1,8 @@
1
+ - id: yaga-commit-check
2
+ name: YAGA commit check
3
+ description: Validate the pending commit message with repository-local YAGA policy.
4
+ entry: yaga commit check --file
5
+ language: python
6
+ stages: [commit-msg]
7
+ pass_filenames: true
8
+ minimum_pre_commit_version: "3.2.0"
@@ -0,0 +1,7 @@
1
+ branch-policy-version = 1
2
+ allowed-patterns = [
3
+ "main",
4
+ "feat/*",
5
+ "fix/*",
6
+ "dependabot/*/**",
7
+ ]
@@ -0,0 +1,6 @@
1
+ change-policy-version = 1
2
+
3
+ [[rules]]
4
+ name = "python-source-needs-tests"
5
+ when-any = ["src/**/*.py"]
6
+ require-any = ["tests/**/*.py"]
@@ -0,0 +1,17 @@
1
+ plan-version = 2
2
+ checks = [
3
+ "commit",
4
+ "workflow",
5
+ "workflow-security",
6
+ "workflow-lint",
7
+ "mode",
8
+ "path",
9
+ "size",
10
+ "tree",
11
+ ]
12
+ workflow-paths = [".github/workflows", "examples"]
13
+ workflow-security-profile = "recommended-v3"
14
+ mode-policy = ".yaga/mode-policy.toml"
15
+ path-policy = ".yaga/path-policy.toml"
16
+ size-policy = ".yaga/size-policy.toml"
17
+ tree-policy = ".yaga/tree-policy.toml"
@@ -0,0 +1,2 @@
1
+ mode-policy-version = 1
2
+ default-allowed-modes = ["regular"]
@@ -0,0 +1,2 @@
1
+ path-policy-version = 1
2
+ profile = "windows-compatible-v1"
@@ -0,0 +1,12 @@
1
+ size-policy-version = 1
2
+ default-max-blob-bytes = 131072
3
+ max-total-blob-bytes = 8388608
4
+
5
+ [[path-limits]]
6
+ pattern = "uv.lock"
7
+ max-blob-bytes = 1048576
8
+
9
+ # Preserve original branding PNGs and the transparent web logo.
10
+ [[path-limits]]
11
+ pattern = "docs/assets/branding/*.png"
12
+ max-blob-bytes = 2097152
@@ -0,0 +1,27 @@
1
+ tree-policy-version = 1
2
+ required-paths = [
3
+ ".yaga/mode-policy.toml",
4
+ ".yaga/path-policy.toml",
5
+ ".yaga/size-policy.toml",
6
+ ".yaga/tree-policy.toml",
7
+ "LICENSE",
8
+ "README.md",
9
+ "SECURITY.md",
10
+ "pyproject.toml",
11
+ "uv.lock",
12
+ ]
13
+ forbidden-patterns = [
14
+ "**/.env",
15
+ "**/__pycache__/**",
16
+ "**/.mypy_cache/**",
17
+ "**/.pytest_cache/**",
18
+ "**/.ruff_cache/**",
19
+ "**/.tox/**",
20
+ "**/.venv/**",
21
+ "**/*.pyc",
22
+ "**/*.pyo",
23
+ "build/**",
24
+ "dist/**",
25
+ "htmlcov/**",
26
+ "**/.coverage",
27
+ ]