yaga-cli 0.2.0__tar.gz → 0.3.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.
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/ci.yml +9 -7
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/commit-adoption-qualification.yml +1 -1
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/commit-quality.yml +1 -1
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/docs.yml +1 -1
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/release.yml +7 -7
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/AGENTS.md +32 -3
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/CHANGELOG.md +2 -2
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/CONTRIBUTING.md +66 -7
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/PKG-INFO +6 -2
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/README.md +3 -0
- yaga_cli-0.3.0/_typos.toml +3 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/changelog.md +73 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/commands.md +3 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/commit-policy.md +34 -5
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/commit-quality.md +6 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/configuration.md +11 -2
- yaga_cli-0.3.0/docs/designs/examples/test-planning/django-ray.toml +234 -0
- yaga_cli-0.3.0/docs/designs/examples/test-planning/polyglot.toml +138 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-full-shadow-result.json +242 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/cohort.json +219 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-01.json +1804 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-02.json +1700 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-03.json +1817 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-04.json +1728 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-05.json +1860 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/observations-06.json +295 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay/report.json +281 -0
- yaga_cli-0.3.0/docs/designs/experiments/django-ray-shadow-replay.md +130 -0
- yaga_cli-0.3.0/docs/designs/test-planning.md +812 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/getting-started.md +6 -2
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/github-actions.md +16 -4
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/index.md +2 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/releasing.md +2 -1
- yaga_cli-0.3.0/docs/test-planning-handoff.md +328 -0
- yaga_cli-0.3.0/docs/test-planning.md +281 -0
- yaga_cli-0.3.0/examples/test-planning/fixed_handoff.py +152 -0
- yaga_cli-0.3.0/examples/test-planning/replay_django_ray.py +431 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/pyproject.toml +5 -4
- yaga_cli-0.3.0/release-notes.md +50 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/check_build.py +432 -1
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/prepare_commit_action_control.py +10 -1
- yaga_cli-0.3.0/src/yaga/changes/git.py +20 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/models.py +9 -27
- yaga_cli-0.3.0/src/yaga/changes/patterns.py +57 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/cli.py +2 -0
- yaga_cli-0.3.0/src/yaga/commands/test.py +220 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/config.py +12 -0
- yaga_cli-0.3.0/src/yaga/commits/dependabot.py +119 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/github_event.py +30 -12
- yaga_cli-0.3.0/src/yaga/commits/github_signature.py +268 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/models.py +1 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/reporting.py +3 -0
- yaga_cli-0.3.0/src/yaga/files.py +48 -0
- yaga_cli-0.2.0/src/yaga/changes/git.py → yaga_cli-0.3.0/src/yaga/git/changes.py +51 -20
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/git/runtime.py +31 -11
- yaga_cli-0.2.0/src/yaga/changes/patterns.py → yaga_cli-0.3.0/src/yaga/path_patterns.py +83 -60
- yaga_cli-0.3.0/src/yaga/test_planning/__init__.py +1 -0
- yaga_cli-0.3.0/src/yaga/test_planning/diagnostics.py +366 -0
- yaga_cli-0.3.0/src/yaga/test_planning/evaluation.py +349 -0
- yaga_cli-0.3.0/src/yaga/test_planning/evaluation_service.py +95 -0
- yaga_cli-0.3.0/src/yaga/test_planning/git.py +55 -0
- yaga_cli-0.3.0/src/yaga/test_planning/handoff.py +208 -0
- yaga_cli-0.3.0/src/yaga/test_planning/limits.py +21 -0
- yaga_cli-0.3.0/src/yaga/test_planning/models.py +228 -0
- yaga_cli-0.3.0/src/yaga/test_planning/planner.py +281 -0
- yaga_cli-0.3.0/src/yaga/test_planning/policy.py +164 -0
- yaga_cli-0.3.0/src/yaga/test_planning/reporting.py +172 -0
- yaga_cli-0.3.0/src/yaga/test_planning/reports.py +150 -0
- yaga_cli-0.3.0/src/yaga/test_planning/results.py +269 -0
- yaga_cli-0.3.0/src/yaga/test_planning/selection.py +49 -0
- yaga_cli-0.3.0/src/yaga/test_planning/service.py +45 -0
- yaga_cli-0.3.0/src/yaga/test_planning/source.py +73 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/version_requirement.py +1 -1
- yaga_cli-0.3.0/tests/fixtures/github-signatures/.gitattributes +4 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/.typos.toml +3 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/README.md +45 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/dependabot-setup-uv.commit +37 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/dependabot-urllib3-parent.commit +20 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/dependabot-urllib3.commit +37 -0
- yaga_cli-0.3.0/tests/fixtures/github-signatures/web-flow.asc +41 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_git.py +60 -15
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_cli.py +18 -4
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_action.py +94 -5
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_action_controls.py +11 -2
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_config.py +41 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_reporting.py +15 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_trusted_policy.py +19 -2
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_config_init.py +10 -0
- yaga_cli-0.3.0/tests/test_dependabot_commit_filter.py +383 -0
- yaga_cli-0.3.0/tests/test_github_commit_signature.py +373 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_github_pull_request.py +15 -5
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_installation.py +2 -2
- yaga_cli-0.3.0/tests/test_path_patterns.py +180 -0
- yaga_cli-0.3.0/tests/test_regular_file_prefix.py +115 -0
- yaga_cli-0.3.0/tests/test_test_planning_cli.py +450 -0
- yaga_cli-0.3.0/tests/test_test_planning_diagnostics.py +494 -0
- yaga_cli-0.3.0/tests/test_test_planning_evaluate_cli.py +475 -0
- yaga_cli-0.3.0/tests/test_test_planning_evaluation.py +471 -0
- yaga_cli-0.3.0/tests/test_test_planning_examples.py +665 -0
- yaga_cli-0.3.0/tests/test_test_planning_git.py +283 -0
- yaga_cli-0.3.0/tests/test_test_planning_handoff.py +545 -0
- yaga_cli-0.3.0/tests/test_test_planning_handoff_example.py +106 -0
- yaga_cli-0.3.0/tests/test_test_planning_planner.py +350 -0
- yaga_cli-0.3.0/tests/test_test_planning_policy.py +532 -0
- yaga_cli-0.3.0/tests/test_test_planning_replay.py +563 -0
- yaga_cli-0.3.0/tests/test_test_planning_reporting.py +490 -0
- yaga_cli-0.3.0/tests/test_test_planning_results.py +277 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tooling.py +35 -4
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/uv.lock +13 -13
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/zensical.toml +3 -0
- yaga_cli-0.2.0/release-notes.md +0 -21
- yaga_cli-0.2.0/src/yaga/files.py +0 -13
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.gitattributes +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/dependabot.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.github/workflows/commit-policy.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.gitignore +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.pre-commit-hooks.yaml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/branch-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/change-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/checks/ci.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/mode-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/path-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/size-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/.yaga/tree-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/LICENSE +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/Makefile +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/SECURITY.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/action.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/actions/commit-check/action.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/agent-review-gate.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/assets/branding/isometric_terminal_y_logo.png +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/assets/branding/isometric_terminal_y_logo_transparent.png +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/assets/branding/yaga_cli_brand_concept_board.png +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/branch-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/change-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/ci-adoption.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/commit-policy-direction.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/contributing.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/github-review-adapter.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/install.ps1 +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/install.sh +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/mode-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/path-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/recipes.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/repository-checks.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/repository-plans.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/security.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/size-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/stylesheets/extra.css +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/tree-policy.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/troubleshooting.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/usage.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/docs/workflow-checks.md +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/examples/agent-review-policy.toml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/examples/agent-review-results.json +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/examples/agent-review.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/examples/commit-policy.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/examples/review-policy.yml +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/overrides/404.html +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/check_description.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/check_docs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/check_release.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/scripts/composite_smoke_python +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/__main__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/_update_worker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/action.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/action_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/evaluation.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/boundary.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/candidate.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/constants.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/events.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/evidence.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/gate.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/publication.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/requests.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/runs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/github/runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/plan.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/results.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/agent_review/runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/branches/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/changes/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/branch.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/change.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/commit.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/config.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/gate.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/github.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/mode.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/path.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/repo.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/self_manage.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/size.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/tree.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commands/workflow.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commit_action_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commit_action_runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/config_explain.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/config_init.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/content_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/github_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/parser.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/quality.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/severity.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/sources.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/template.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/trusted_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/commits/typos.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/config_scope.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/errors.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/git/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/git/process.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/git/tree.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/github.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/modes/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/paths/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/repository/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/repository/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/repository/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/repository/plan.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/repository/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/self_update.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/sizes/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/status.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/trees/service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/actionlint_runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/actionlint_snapshot.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/inputs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/lint.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/parser.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/references.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/security.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/security_facts.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/security_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/security_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/security_rules.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/src/yaga/workflows/yaml.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/__init__.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/codex_support.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/fixtures/commit_consumer_parity.json +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_action.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_agent_review_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_agent_review_evaluation.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_agent_review_plan.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_agent_review_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_agent_review_results.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_branch_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_change_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_events.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_evidence.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_evidence_literals.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_gate.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_publication.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_requests.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_runs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_codex_runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_body_customization.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_consumer_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_content_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_explicit_inputs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_parser.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_quality.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_quality_workflow.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_sources.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_template.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_typos.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_commit_warnings.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_config_workflows.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_consumer_policy_entrypoints.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_description.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_docs_links.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_files.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_git_runtime.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_git_tree.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_github.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_github_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_installers.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_mode_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_path_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_plain_messages.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_pr_proposed_message.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_release.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repo_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repository_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repository_contract.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repository_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repository_plan.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_repository_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_size_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_status.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_git.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_patterns.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_policy.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_tree_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_checker.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_inputs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_lint.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_lint_hardening.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_lint_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_provider_inputs.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_references.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_cli.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_facts.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_models.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_reporting.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_rules.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_selection.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_security_service.py +0 -0
- {yaga_cli-0.2.0 → yaga_cli-0.3.0}/tests/test_workflow_yaml.py +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@
|
|
28
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
29
29
|
with:
|
|
30
30
|
enable-cache: true
|
|
31
|
-
version: "0.
|
|
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@
|
|
153
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
152
154
|
with:
|
|
153
155
|
enable-cache: true
|
|
154
|
-
version: "0.
|
|
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
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
strategy:
|
|
16
16
|
fail-fast: false
|
|
17
17
|
matrix:
|
|
18
|
-
scenario: [valid, invalid, stale, nondefault, nondefault-invalid, advanced-main, typos-valid, typos-message, typos-title, typos-missing, typos-broken, typos-bot, typos-author-bot, typos-author-unlisted, typos-author-stale]
|
|
18
|
+
scenario: [valid, invalid, stale, nondefault, nondefault-invalid, advanced-main, typos-valid, typos-message, typos-title, typos-missing, typos-broken, typos-bot, typos-bot-unsigned, typos-author-bot, typos-author-unlisted, typos-author-stale]
|
|
19
19
|
steps:
|
|
20
20
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
21
|
with:
|
|
@@ -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@
|
|
36
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.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@
|
|
33
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.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@
|
|
35
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
36
36
|
with:
|
|
37
37
|
version: "0.12.7"
|
|
38
38
|
enable-cache: false
|
|
@@ -51,14 +51,14 @@ jobs:
|
|
|
51
51
|
run: cargo install typos-cli --version 1.49.0 --locked
|
|
52
52
|
- name: Run the full gate and retain its validated distributions
|
|
53
53
|
run: uv run --frozen make ci BUILD_ARGS="--output-dir dist"
|
|
54
|
-
- uses: actions/upload-artifact@
|
|
54
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
55
55
|
with:
|
|
56
56
|
name: distributions
|
|
57
57
|
path: dist/
|
|
58
58
|
if-no-files-found: error
|
|
59
59
|
retention-days: 7
|
|
60
60
|
|
|
61
|
-
- uses: actions/upload-artifact@
|
|
61
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
62
62
|
with:
|
|
63
63
|
name: release-notes
|
|
64
64
|
path: release-notes.md
|
|
@@ -77,7 +77,7 @@ jobs:
|
|
|
77
77
|
permissions:
|
|
78
78
|
id-token: write
|
|
79
79
|
steps:
|
|
80
|
-
- uses: actions/download-artifact@
|
|
80
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
81
81
|
with:
|
|
82
82
|
name: distributions
|
|
83
83
|
path: dist/
|
|
@@ -92,11 +92,11 @@ jobs:
|
|
|
92
92
|
permissions:
|
|
93
93
|
contents: write
|
|
94
94
|
steps:
|
|
95
|
-
- uses: actions/download-artifact@
|
|
95
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
96
96
|
with:
|
|
97
97
|
name: distributions
|
|
98
98
|
path: dist/
|
|
99
|
-
- uses: actions/download-artifact@
|
|
99
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
100
100
|
with:
|
|
101
101
|
name: release-notes
|
|
102
102
|
path: release-notes/
|
|
@@ -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}
|
|
110
|
+
--verify-tag --title "YAGA ${RELEASE_TAG#v}"
|
|
111
111
|
--notes-file release-notes/release-notes.md
|
|
@@ -27,9 +27,19 @@ Agent review gate is the public review contract. Its current provider adapter re
|
|
|
27
27
|
read-only commit Action after complete event, runner-context, checkout, configuration, and range
|
|
28
28
|
validation. Require an exact strictly parsed PR author login `dependabot[bot]`, type `Bot`, and
|
|
29
29
|
bounded positive ID. Never infer trusted bot identity from Git author/committer data, messages,
|
|
30
|
-
titles, branches, actors, or footers.
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
titles, branches, actors, or footers. Narrow this already eligible quality exemption per commit
|
|
31
|
+
using bounded exact author/committer metadata compatibility. Keep the schema-v1 boolean
|
|
32
|
+
`dependabot-require-github-signature` defaulted to `true`: additionally verify each skipped
|
|
33
|
+
commit's exact object bytes offline against the pinned GitHub signing key using a trusted
|
|
34
|
+
bounded `gpgv` process and private keyring. Missing, failed, unsupported, or over-budget
|
|
35
|
+
verification runs normal checks. `false` retains the forgeable per-commit metadata filter only.
|
|
36
|
+
Ordinary human additions and human rebases must be checked, and mixed PR titles/proposed
|
|
37
|
+
messages must be checked. The shared GitHub key is not exclusive Dependabot identity; never
|
|
38
|
+
use a Signed-off-by footer as proof, query a live badge, fetch keys, or import REST/token code.
|
|
39
|
+
The separate `skip-pull-request-authors` list remains a broad independent explicit exemption;
|
|
40
|
+
do not turn this option into generic bot identity configuration. Preserve the complete selected
|
|
41
|
+
SHA set and stable `Dependabot pull request` skip reason; ordinary commit/repository checks and
|
|
42
|
+
every other provider keep running.
|
|
33
43
|
- Keep `scope-policy-by-type` as an empty-default schema-v1 mapping with at most 128 safe,
|
|
34
44
|
case-insensitively unique type keys and closed presence-policy values. Overrides replace the
|
|
35
45
|
global scope policy for full commits and PR titles; `scope-case` and `allowed-scopes` remain
|
|
@@ -100,6 +110,25 @@ Agent review gate is the public review contract. Its current provider adapter re
|
|
|
100
110
|
Git paths, visible gitlink changes, disabled rename/external-diff/textconv behavior,
|
|
101
111
|
unique-pattern caching, and the shared 10,000,000-unit matcher-work ceiling. Keep it out of both
|
|
102
112
|
Action import graphs.
|
|
113
|
+
- Keep test planning installed-only under `src/yaga/test_planning/`. `test policy check` requires
|
|
114
|
+
one explicit file and no Git access. `test plan` requires explicit policy, profile, and exactly
|
|
115
|
+
one range or revision; revision-only planning requires a full profile. Never discover policy,
|
|
116
|
+
infer HEAD/event/branch/worktree state, fetch, or execute bindings. Keep the pure planner free
|
|
117
|
+
of I/O and collect Git sources through the shared bounded runtime and neutral changed-path
|
|
118
|
+
reader. Require complete range history, one three-dot merge base, and exact endpoint/comparison/
|
|
119
|
+
execution identities; allow shallow revision-only plans with the selected commit/tree present.
|
|
120
|
+
Reject graft overlays before and after collection. Preserve version-one semantic/envelope
|
|
121
|
+
contracts, exact policy-byte SHA-256, optional binding identity, canonical plan digests, complete
|
|
122
|
+
JSON within 4 MiB, at most 256 human reasons with exact omitted counts, and exits 0/2 only.
|
|
123
|
+
Planning never claims tests passed and stays outside repository plans and both Action graphs.
|
|
124
|
+
Keep executor handoff pure and installed-only: a complete fixed registry maps every suite exactly
|
|
125
|
+
once, preserves all variants and required capabilities, and binds executor-definition hashes.
|
|
126
|
+
Require non-null matching binding identity and independent expected policy/commit/tree identities.
|
|
127
|
+
Preserve version-one registry/handoff documents, complete 4 MiB bounded output, prerequisite
|
|
128
|
+
order, and one dispatch per suite even for a matrix. No commands or receipt evaluation enter this
|
|
129
|
+
API. Consumer adapters own real capability checks, execution, cancellation, acceptance, and cleanup.
|
|
130
|
+
Shadow jobs remain advisory and cannot change or cancel required CI. Measure first; set the
|
|
131
|
+
feedback-time adoption threshold before activation, after real pilot observations.
|
|
103
132
|
- Keep `branch check` installed-only and require an explicit versioned policy plus exact short
|
|
104
133
|
branch name. Never inspect Git, infer checkout or event state, discover policy, normalize full
|
|
105
134
|
refs/remotes, or read environment in the domain layer. Schema v1 is a bounded ordered list of
|
|
@@ -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.
|
|
7
|
-
|
|
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,14 +39,58 @@ 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`,
|
|
43
|
-
`path`, `repo`, `self`, `size`, `tree`, `workflow`, and `gate`.
|
|
48
|
+
`path`, `repo`, `self`, `size`, `test`, `tree`, `workflow`, and `gate`.
|
|
44
49
|
Keep Typer declarations in `src/yaga/commands/`; keep commit parsing, policy, Git selection,
|
|
45
50
|
configuration, GitHub event adaptation, and reporting in focused dependency-light modules under
|
|
46
51
|
`src/yaga/commits/`. Domain behavior must remain directly testable without invoking Typer.
|
|
47
52
|
|
|
53
|
+
Test planning lives under `src/yaga/test_planning/`; see the [command guide](docs/test-planning.md)
|
|
54
|
+
and [design](docs/designs/test-planning.md). Keep explicit policy parsing separate from pure
|
|
55
|
+
selection, reuse the neutral bounded matcher in `src/yaga/path_patterns.py`, and keep both examples
|
|
56
|
+
executable in tests. `test policy check` requires one explicit file and no Git access; `test plan`
|
|
57
|
+
requires policy, profile, and exactly one explicit range or revision. A revision-only plan requires
|
|
58
|
+
a full profile. Keep Git collection in the source adapter, using `src/yaga/git/changes.py` and the
|
|
59
|
+
shared bounded runtime; the pure planner must not discover Git or environment state. Range plans
|
|
60
|
+
require complete history and exact endpoint/comparison/execution identities; revision plans need
|
|
61
|
+
their selected commit and tree only. Both reject graft overlays and never fetch. Preserve exact
|
|
62
|
+
policy-byte identity, optional binding SHA-256, canonical version-one plan digests, complete JSON
|
|
63
|
+
within 4 MiB, and at most 256 human reasons with exact omitted counts. Emit successful output on
|
|
64
|
+
stdout and bounded error envelopes on stderr, with exits 0/2 only. Planning never executes bindings
|
|
65
|
+
or claims tests passed. Keep both commands outside repository plans and both Action runtimes.
|
|
66
|
+
|
|
67
|
+
Keep executor handoff pure and installed-only. `ExecutorRegistry` must map the complete catalog
|
|
68
|
+
exactly once to fixed dispatch IDs, preserve every variant, satisfy declared capabilities, and
|
|
69
|
+
bind immutable executor-definition hashes. `create_handoff` requires a non-preview plan plus
|
|
70
|
+
independent expected policy/commit/tree identities; keep the version-one manifest/handoff shapes
|
|
71
|
+
and 4 MiB complete-output limit. No binding may become a command or credential source. Consumer
|
|
72
|
+
adapters own real capability checks, execution, cancellation, custom acceptance, and cleanup.
|
|
73
|
+
Keep shadow comparisons advisory and full shadow jobs isolated from required CI cancellation.
|
|
74
|
+
Do not claim measured savings or enable skips before actual observations, a documented adoption
|
|
75
|
+
threshold, and complete-result gating. See the [handoff guide](docs/test-planning-handoff.md).
|
|
76
|
+
|
|
77
|
+
Keep selection diagnostics pure and separate from the frozen plan/handoff/comparison documents.
|
|
78
|
+
Retain exact source and policy/registry/plan identities, distinguish selection breadth from the
|
|
79
|
+
reason for full mode, and expose paths bypassed by early full decisions. A missing baseline is
|
|
80
|
+
different from an explicitly empty selection. Strict offline decoding checks closed version-one
|
|
81
|
+
plan semantics and canonical digests; callers still own bounded JSON reads and duplicate-key
|
|
82
|
+
rejection. Complete diagnostic reports must fit within 4 MiB including the final newline.
|
|
83
|
+
Recorded reasons are not proof of dependency coverage, trusted origin, or runtime savings.
|
|
84
|
+
|
|
85
|
+
Keep version-one normalized test results and evaluation separate from frozen plan/handoff formats.
|
|
86
|
+
`test evaluate` requires explicit bounded plan/results files plus independent expected policy,
|
|
87
|
+
manifest, source, run, and aggregate-attempt identities. Keep the evaluator pure and validate every
|
|
88
|
+
selected variant and prerequisite; missing or non-passed work returns 1, malformed or mismatched
|
|
89
|
+
inputs return 2, and only complete passed obligations return 0. Bound complete JSON to 4 MiB and
|
|
90
|
+
diagnostics to 256 with exact omitted counts. Adapters own provenance, custom acceptance, cleanup,
|
|
91
|
+
and retry lineage; an artifact hash or green job alone cannot prove these. No execution, discovery,
|
|
92
|
+
Git access, provider API, required-CI changes, or selective activation belongs in evaluation.
|
|
93
|
+
|
|
48
94
|
All revision-bound providers use the dependency-free runtime under `src/yaga/git/`. Keep repository
|
|
49
95
|
and executable discovery, metadata and alternate-object-store boundaries, process execution,
|
|
50
96
|
environment isolation, time and output limits, object identity parsing, and complete-history checks
|
|
@@ -85,9 +131,22 @@ opt-in alternative. Apply it only in the event-aware `github pull-request check`
|
|
|
85
131
|
read-only commit Action. Identify Dependabot from one strictly parsed PR author record with exact
|
|
86
132
|
`dependabot[bot]` login, `Bot` type, and a bounded positive ID; never from Git author/committer
|
|
87
133
|
metadata, a title, message, branch, actor, or footer. Complete event/context/checkout/config/range
|
|
88
|
-
validation before
|
|
89
|
-
|
|
90
|
-
|
|
134
|
+
validation before applying the stable `Dependabot pull request` skip reason. Narrow this already
|
|
135
|
+
eligible quality exemption per commit with bounded exact author/committer metadata compatibility.
|
|
136
|
+
`dependabot-require-github-signature` is a strict schema-v1 boolean defaulting to `true`; it affects
|
|
137
|
+
only this opt-in exemption. Require offline verification of each candidate's exact object bytes
|
|
138
|
+
against the pinned GitHub key using a trusted bounded `gpgv` process and private keyring. Missing
|
|
139
|
+
or failed verification, unsupported signatures, and resource exhaustion run normal checks.
|
|
140
|
+
An explicit `false` retains only the forgeable metadata filter. Check ordinary human additions
|
|
141
|
+
and human rebases, and check titles/proposed messages in mixed PRs. Require metadata for exactly
|
|
142
|
+
the previously selected SHA set, rejecting missing/duplicate records. Preserve that complete set
|
|
143
|
+
in reports. The shared GitHub key does not prove exclusive Dependabot identity. Do not fetch keys,
|
|
144
|
+
query live badges/revocation state, import REST/token code, or treat Signed-off-by as proof.
|
|
145
|
+
The explicit `skip-pull-request-authors` list remains a broad independent exemption, including for
|
|
146
|
+
human additions; do not generalize this option into Renovate/custom bot identity configuration.
|
|
147
|
+
Never use these exemptions to skip tests/security checks. Ordinary `commit check` and repository
|
|
148
|
+
plans keep checking, and every non-commit provider remains independent. Preserve frozen starter
|
|
149
|
+
bytes: omitted signature settings inherit the new default without rewriting existing starters.
|
|
91
150
|
`breaking-markers` is a schema-v1 enum with `either` as its default. `either` accepts a header `!`,
|
|
92
151
|
a recognized final `BREAKING CHANGE:` or `BREAKING-CHANGE:` footer, or both; `paired` requires both
|
|
93
152
|
markers or neither and reports `breaking.marker-pair` for exactly one. Apply marker pairing only to
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: yaga-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
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.
|
|
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'
|
|
@@ -48,6 +49,7 @@ become another review conversation. Start with one check and adopt more as your
|
|
|
48
49
|
| Unwanted files, oversized blobs, or incompatible paths enter the repository | [Committed-file checks](https://dariuszpanas.github.io/yaga/repository-checks.html) for contents, sizes, names, and entry modes |
|
|
49
50
|
| GitHub Actions workflows drift from your security and maintenance rules | [Workflow checks](https://dariuszpanas.github.io/yaga/workflow-checks.html) for immutable references, permission and checkout rules, and syntax |
|
|
50
51
|
| Local checks and CI enforce different policies | An explicit [repository plan](https://dariuszpanas.github.io/yaga/repository-plans.html) used in both places |
|
|
52
|
+
| A small change needs a clear test and qualification plan | [Test planning](https://dariuszpanas.github.io/yaga/test-planning.html) selects suites and required variants from explicit changed paths |
|
|
51
53
|
|
|
52
54
|
Checks produce actionable findings and reports for automation. You choose the policies and checks;
|
|
53
55
|
YAGA does not require adopting the entire CLI at once.
|
|
@@ -58,6 +60,8 @@ YAGA does not require adopting the entire CLI at once.
|
|
|
58
60
|
|
|
59
61
|
YAGA requires Python 3.12 or newer. Its PyPI distribution is **`yaga-cli`** and its command is
|
|
60
62
|
**`yaga`**; the distribution named `yaga` is an unrelated project.
|
|
63
|
+
The core CLI is tested on Python 3.12 through 3.15. Optional model dependencies have their own
|
|
64
|
+
[installation requirements](https://dariuszpanas.github.io/yaga/commit-quality.html).
|
|
61
65
|
|
|
62
66
|
- [Adoption recipes](https://dariuszpanas.github.io/yaga/recipes.html) — add checks to an existing workflow.
|
|
63
67
|
- [Assess YAGA for CI](https://dariuszpanas.github.io/yaga/ci-adoption.html) — match your problem to a check and its prerequisites.
|
|
@@ -17,6 +17,7 @@ become another review conversation. Start with one check and adopt more as your
|
|
|
17
17
|
| Unwanted files, oversized blobs, or incompatible paths enter the repository | [Committed-file checks](https://dariuszpanas.github.io/yaga/repository-checks.html) for contents, sizes, names, and entry modes |
|
|
18
18
|
| GitHub Actions workflows drift from your security and maintenance rules | [Workflow checks](https://dariuszpanas.github.io/yaga/workflow-checks.html) for immutable references, permission and checkout rules, and syntax |
|
|
19
19
|
| Local checks and CI enforce different policies | An explicit [repository plan](https://dariuszpanas.github.io/yaga/repository-plans.html) used in both places |
|
|
20
|
+
| A small change needs a clear test and qualification plan | [Test planning](https://dariuszpanas.github.io/yaga/test-planning.html) selects suites and required variants from explicit changed paths |
|
|
20
21
|
|
|
21
22
|
Checks produce actionable findings and reports for automation. You choose the policies and checks;
|
|
22
23
|
YAGA does not require adopting the entire CLI at once.
|
|
@@ -27,6 +28,8 @@ YAGA does not require adopting the entire CLI at once.
|
|
|
27
28
|
|
|
28
29
|
YAGA requires Python 3.12 or newer. Its PyPI distribution is **`yaga-cli`** and its command is
|
|
29
30
|
**`yaga`**; the distribution named `yaga` is an unrelated project.
|
|
31
|
+
The core CLI is tested on Python 3.12 through 3.15. Optional model dependencies have their own
|
|
32
|
+
[installation requirements](https://dariuszpanas.github.io/yaga/commit-quality.html).
|
|
30
33
|
|
|
31
34
|
- [Adoption recipes](https://dariuszpanas.github.io/yaga/recipes.html) — add checks to an existing workflow.
|
|
32
35
|
- [Assess YAGA for CI](https://dariuszpanas.github.io/yaga/ci-adoption.html) — match your problem to a check and its prerequisites.
|
|
@@ -2,6 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.3.0] - 2026-10-18
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Add the internal version-one test qualification policy and pure selection planner, with
|
|
10
|
+
strict bounded validation, additive path/tag rules, full-suite fallback, complete variants,
|
|
11
|
+
prerequisite ordering, and tested polyglot and django-ray examples.
|
|
12
|
+
|
|
13
|
+
- Add installed `test policy check` and `test plan` commands, with explicit policy/profile and
|
|
14
|
+
Git range or full-profile revision inputs. Plans bind exact commit/tree and policy identities,
|
|
15
|
+
carry deterministic version-one JSON digests, and explain selected suites and variants.
|
|
16
|
+
Git collection remains bounded and never fetches. Planning does not run tests or enable skips;
|
|
17
|
+
normalized receipt evaluation is available separately.
|
|
18
|
+
|
|
19
|
+
- Add a pure version-one executor registry and handoff API with complete fixed job mappings,
|
|
20
|
+
binding/source/policy identity checks, exact variant preservation, capability preflight,
|
|
21
|
+
and bounded dispatch/cell output. Add runnable polyglot and django-ray examples, installed-wheel
|
|
22
|
+
smoke, and a django-ray shadow-pilot guide. Existing required CI stays enabled. Historical
|
|
23
|
+
selection replay and one full shadow observation are recorded; measured selective feedback
|
|
24
|
+
savings, an adoption threshold, and selective activation remain pending.
|
|
25
|
+
|
|
26
|
+
- Add pure version-one selection diagnostics and strict offline plan decoding, preserving
|
|
27
|
+
source/policy identities, fallback causes, selection breadth, unclassified paths, and explicit
|
|
28
|
+
baseline comparisons. Add optional separate replay diagnostics without changing existing plan
|
|
29
|
+
or comparison formats. Complete reports stay within 4 MiB and make no execution claims.
|
|
30
|
+
|
|
31
|
+
- Add version-one normalized test results and pure evaluation, plus installed `test evaluate`
|
|
32
|
+
with explicit plan/results files and independent policy, manifest, source, run, and attempt
|
|
33
|
+
identities. Missing prerequisites or variants and non-passed outcomes block success; malformed,
|
|
34
|
+
stale, duplicate, or extra results fail validation. Preserve bounded reports, offline operation,
|
|
35
|
+
both Action import boundaries, and existing required CI. Selective activation remains pending.
|
|
36
|
+
|
|
37
|
+
- Add the schema-v1 boolean `dependabot-require-github-signature`, defaulting to `true`.
|
|
38
|
+
Each otherwise eligible Dependabot-skipped commit must verify offline against the pinned
|
|
39
|
+
GitHub signing key. Missing or failed verification runs normal checks. An explicit `false`
|
|
40
|
+
retains the per-commit metadata filter; explicit PR-author exemptions remain independent.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- Map eight exact application-test files to application qualification in the django-ray example,
|
|
45
|
+
include latency for changes to the shared Docker scenario helper, and preserve the shared lease
|
|
46
|
+
dependencies added by the coordinated django-ray release work. Add complete historical
|
|
47
|
+
path, unknown-path, lockfile, rename/deletion, and variant regressions. Required CI and the
|
|
48
|
+
conservative full/unknown fallback behavior remain enabled.
|
|
49
|
+
|
|
50
|
+
- Narrow the opt-in Dependabot commit-message exemption per commit, so ordinary human additions
|
|
51
|
+
and human rebases are checked even inside a Dependabot PR. Mixed PR titles and proposed
|
|
52
|
+
messages are checked too. Signature verification requires an available trusted `gpgv` and
|
|
53
|
+
adds no API or token access. The shared GitHub key does not prove exclusive bot authorship,
|
|
54
|
+
and this quality exemption does not authorize skipping other checks.
|
|
55
|
+
|
|
56
|
+
## [0.2.1] - 2026-10-10
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
- Declare Python 3.15 support and add blocking Linux and Windows test jobs. Run the
|
|
61
|
+
Python compatibility matrix against a non-editable package installation.
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- Update locked urllib3 to 2.8.0 for upstream proxy TLS and streaming denial-of-service fixes
|
|
66
|
+
in the optional Bedrock dependency chain.
|
|
67
|
+
- Update locked virtualenv to 21.7.13 for upstream activation-script, configuration, and
|
|
68
|
+
seed-wheel verification security fixes in development tooling.
|
|
69
|
+
- Align the Hatchling 1.32.4 build and development pins with the lockfile and tooling contract.
|
|
70
|
+
- Raise the optional quality extra's PyTorch minimum to 2.13 to exclude older releases with
|
|
71
|
+
known security advisories; the locked PyTorch version remains 2.14.0.
|
|
72
|
+
- Repair the pipx installation link in the getting-started guide.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- Refresh CI tooling with setup-uv 10.2.0 and uv 0.13.0, including stable Python 3.15 downloads.
|
|
77
|
+
|
|
5
78
|
## [0.2.0] - 2026-09-20
|
|
6
79
|
|
|
7
80
|
### Added
|
|
@@ -29,6 +29,9 @@ or `yaga self update --dry-run` to verify a uv tool installation without updatin
|
|
|
29
29
|
| `yaga workflow security` | Versioned permission and checkout policies | [Workflow checks](workflow-checks.md) |
|
|
30
30
|
| `yaga workflow lint` | Syntax checks through Docker actionlint | [Workflow checks](workflow-checks.md) |
|
|
31
31
|
| `yaga github pull-request check` | Exact event-bound title and commit validation | [GitHub Actions](github-actions.md) |
|
|
32
|
+
| `yaga test policy check` | Validate an explicit test-suite catalog and selection policy | [Test planning](test-planning.md) |
|
|
33
|
+
| `yaga test plan` | Select suites and variants for an explicit Git source and profile | [Test planning](test-planning.md) |
|
|
34
|
+
| `yaga test evaluate` | Check normalized cell results against a trusted plan and explicit execution identities | [Test evaluation](test-planning.md#evaluate-normalized-results) |
|
|
32
35
|
|
|
33
36
|
Evaluating YAGA for another repository? Start with [Assess and adopt in CI](ci-adoption.md).
|
|
34
37
|
|
|
@@ -63,6 +63,7 @@ body-min-words = 8
|
|
|
63
63
|
# Omit body-max-line-length unless this repository wants a wrapping limit.
|
|
64
64
|
# Set body-paragraph-splitting = "check" to catch sentence-like prose split by blank lines.
|
|
65
65
|
dependabot-pull-requests = "skip" # check or skip in event-aware PR checks
|
|
66
|
+
dependabot-require-github-signature = true # default; applies only to the Dependabot skip
|
|
66
67
|
merge-commits = "reject" # ignore, check, or reject
|
|
67
68
|
ignored-headers = ['Revert "*"'] # bounded, case-sensitive glob patterns
|
|
68
69
|
max-commits = 64
|
|
@@ -78,10 +79,38 @@ policy evaluation only in `yaga github pull-request check` and the read-only com
|
|
|
78
79
|
and only when the event's pull-request author is exactly the GitHub `dependabot[bot]` Bot account,
|
|
79
80
|
following [GitHub's event-author guidance for Dependabot
|
|
80
81
|
automation](https://docs.github.com/en/code-security/tutorials/secure-your-dependencies/automate-dependabot-with-actions?learn=dependency_version_updates).
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
`
|
|
84
|
-
|
|
82
|
+
After validating the complete event, runner context, checkout, configuration, and exact commit
|
|
83
|
+
range, the adapter filters each selected commit independently. An exemption requires exact
|
|
84
|
+
`dependabot[bot]` author metadata with either `49699333+dependabot[bot]@users.noreply.github.com`
|
|
85
|
+
or `dependabot[bot]@users.noreply.github.com`, plus a committer with that bot name/email or
|
|
86
|
+
`GitHub <noreply@github.com>`. The default `dependabot-require-github-signature = true` additionally
|
|
87
|
+
requires a valid signature over the exact selected commit object using the pinned GitHub signing
|
|
88
|
+
key with full fingerprint `968479A1AFF927E37D1A566BB5690EEEBB952194`. YAGA verifies this offline
|
|
89
|
+
with an available trusted `gpgv` executable and a private keyring containing
|
|
90
|
+
[GitHub's published public key](https://github.com/web-flow.gpg). It does not call the GitHub API,
|
|
91
|
+
accept a token, download keys during a check, or use the user's keyring.
|
|
92
|
+
|
|
93
|
+
Missing signatures, unavailable verification tools, unsupported or invalid signatures, verification
|
|
94
|
+
errors, and exhausted verification limits all run normal checks for the affected commits.
|
|
95
|
+
Ordinary human additions and bot-authored commits rebased by a human are also checked. If any
|
|
96
|
+
commit is ineligible for the exemption, the title and optional proposed message are checked too.
|
|
97
|
+
Otherwise their exemption is retained. Skipped results retain the `Dependabot pull request`
|
|
98
|
+
reason, and every selected commit remains in the report.
|
|
99
|
+
|
|
100
|
+
This option is a strict schema-v1 boolean and affects only `dependabot-pull-requests = "skip"`.
|
|
101
|
+
Explicitly setting `dependabot-require-github-signature = false` retains only the per-commit
|
|
102
|
+
metadata filter. Those metadata fields are forgeable, so this opt-out permits a human who forges
|
|
103
|
+
both identities inside an eligible Dependabot PR to evade the filter. `Signed-off-by` footers are
|
|
104
|
+
never consulted as proof. With the default requirement, the signature proves that the payload
|
|
105
|
+
was signed by the pinned GitHub key; that shared key alone does not establish exclusive Dependabot
|
|
106
|
+
authorship. This offline check does not query GitHub's live verification badge or refresh key
|
|
107
|
+
revocation information. Keep `dependabot-pull-requests = "check"` to check every commit message.
|
|
108
|
+
The exemption never skips change, mode, path, size, tree, workflow, test, or review-gate checks.
|
|
109
|
+
|
|
110
|
+
The separate [`skip-pull-request-authors`](configuration.md#explicit-pr-author-exemptions) list
|
|
111
|
+
remains a broader explicit exemption for the entire PR and does not require this signature check.
|
|
112
|
+
Adding Dependabot to that list therefore bypasses the narrower per-commit policy. Signature-based
|
|
113
|
+
identity policies for Renovate or custom bots are not part of this option.
|
|
85
114
|
|
|
86
115
|
Ordinary `commit check` and the `commit` provider inside `repo check` never infer Dependabot from a
|
|
87
116
|
Git author name, email, message, or branch because those values are author-controlled. They keep
|
|
@@ -263,7 +292,7 @@ Typos configuration is used; direct message and Git-backed sources follow the sa
|
|
|
263
292
|
|
|
264
293
|
With the commit Action's `trusted-config` mode, `typos = "check"` applies to both the
|
|
265
294
|
PR title and every selected full commit message. Structural title checks remain header-only.
|
|
266
|
-
|
|
295
|
+
Eligible Dependabot commit exemptions and existing skipped commit types also skip spelling checks.
|
|
267
296
|
Findings fail with exit `1`; a missing or broken tool fails with exit `2`.
|
|
268
297
|
|
|
269
298
|
Install a pinned Typos executable outside the checkout before invoking the Action.
|
|
@@ -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:
|
|
@@ -128,7 +128,8 @@ version. Pin the installation separately when CI must always use one exact relea
|
|
|
128
128
|
| `body-max-line-length` | Optional maximum body-line length; omitted means unlimited. |
|
|
129
129
|
| `body-paragraph-splitting` | `skip` (default) or `check` for likely sentence splits across blank lines. |
|
|
130
130
|
| `skip-pull-request-authors` | Empty-default list of up to 128 explicit GitHub PR author logins exempt from title and commit checks. |
|
|
131
|
-
| `dependabot-pull-requests` | `check` (default) or `skip` in event-aware PR checks only. |
|
|
131
|
+
| `dependabot-pull-requests` | `check` (default) or a per-commit metadata/signature-filtered `skip` in eligible event-aware PR checks only. |
|
|
132
|
+
| `dependabot-require-github-signature` | Boolean, default `true`. Requires offline verification against the pinned GitHub signing key for each Dependabot-skipped commit. Missing or failed verification runs normal checks. Only affects `dependabot-pull-requests = "skip"`; `false` retains the metadata filter alone. |
|
|
132
133
|
| `typos` | `skip` (default) or `check` with an installed Typos CLI. |
|
|
133
134
|
| `typos-config` | `repository` (default) discovers Typos settings; `isolated` disables discovery. Trusted Actions always isolate. |
|
|
134
135
|
| `quality` | Nested non-secret defaults for `commit quality`; provider, task, model, revision, threshold, region, max-tokens, max-input-tokens, and input-mode. |
|
|
@@ -378,7 +379,15 @@ checkout, policy, and commit-range validation. Reports use `Configured pull requ
|
|
|
378
379
|
It does not exempt ordinary `commit check`, repository checks, or other providers.
|
|
379
380
|
Unlike the narrower `dependabot-pull-requests = "skip"` option in trusted mode, this explicit
|
|
380
381
|
list applies regardless of head repository or branch. Listing an account opts into that scope.
|
|
381
|
-
The
|
|
382
|
+
The Dependabot option retains its identity and trusted same-repository/branch checks, then narrows
|
|
383
|
+
the exemption per commit with the [metadata and signature checks](commit-policy.md).
|
|
384
|
+
`dependabot-require-github-signature` defaults to `true`; an unavailable `gpgv`, missing signature,
|
|
385
|
+
or failed verification runs normal checks. Setting it to `false` retains a forgeable metadata
|
|
386
|
+
filter. The pinned GitHub key is shared, and verification does not prove exclusive bot authorship
|
|
387
|
+
or query live revocation state. Explicit author exemptions remain broader and intentionally skip
|
|
388
|
+
the entire PR even when it contains human-added commits. They bypass the Dependabot signature
|
|
389
|
+
requirement, including when `dependabot[bot]` itself appears in this list. This does not add a
|
|
390
|
+
generic signature or identity policy for Renovate or custom bots.
|
|
382
391
|
|
|
383
392
|
Use `trusted-config` when the exemption must come from the default-branch policy. Default
|
|
384
393
|
PR-head mode intentionally reads PR policy, including this list; it is not trusted merge authority.
|