yaga-cli 0.2.1__tar.gz → 0.4.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.1 → yaga_cli-0.4.0}/.github/workflows/ci.yml +2 -2
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/workflows/commit-adoption-qualification.yml +2 -2
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/workflows/commit-quality.yml +1 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/workflows/docs.yml +1 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/workflows/release.yml +7 -7
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/AGENTS.md +55 -3
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/CONTRIBUTING.md +119 -5
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/Makefile +2 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/PKG-INFO +4 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/README.md +2 -0
- yaga_cli-0.4.0/_typos.toml +3 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/changelog.md +110 -0
- yaga_cli-0.4.0/docs/commands.md +135 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/commit-policy.md +34 -5
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/commit-quality.md +9 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/configuration.md +27 -5
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/contributing.md +16 -1
- yaga_cli-0.4.0/docs/designs/examples/test-planning/django-ray.toml +234 -0
- yaga_cli-0.4.0/docs/designs/examples/test-planning/polyglot.toml +138 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-full-shadow-result.json +242 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/cohort.json +219 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-01.json +1804 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-02.json +1700 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-03.json +1817 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-04.json +1728 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-05.json +1860 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/observations-06.json +295 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay/report.json +281 -0
- yaga_cli-0.4.0/docs/designs/experiments/django-ray-shadow-replay.md +130 -0
- yaga_cli-0.4.0/docs/designs/staged-checks.md +93 -0
- yaga_cli-0.4.0/docs/designs/test-planning.md +812 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/getting-started.md +1 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/github-actions.md +16 -4
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/github-review-adapter.md +1 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/index.md +6 -2
- yaga_cli-0.4.0/docs/minimum-runtime.md +44 -0
- yaga_cli-0.4.0/docs/pull-request-descriptions.md +335 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/repository-checks.md +3 -0
- yaga_cli-0.4.0/docs/test-planning-handoff.md +328 -0
- yaga_cli-0.4.0/docs/test-planning.md +281 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/troubleshooting.md +31 -13
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/usage.md +16 -9
- yaga_cli-0.4.0/examples/description-policy.toml +8 -0
- yaga_cli-0.4.0/examples/pull-request-template.md +7 -0
- yaga_cli-0.4.0/examples/test-planning/fixed_handoff.py +152 -0
- yaga_cli-0.4.0/examples/test-planning/replay_django_ray.py +431 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/pyproject.toml +2 -1
- yaga_cli-0.4.0/release-notes.md +58 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/check_build.py +677 -34
- yaga_cli-0.4.0/scripts/check_minimum_runtime.py +168 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/prepare_commit_action_control.py +10 -1
- yaga_cli-0.4.0/src/yaga/changes/git.py +20 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/models.py +9 -27
- yaga_cli-0.4.0/src/yaga/changes/patterns.py +57 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/cli.py +10 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/commit.py +4 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/github.py +2 -0
- yaga_cli-0.4.0/src/yaga/commands/pull_request.py +124 -0
- yaga_cli-0.4.0/src/yaga/commands/test.py +220 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/config.py +12 -0
- yaga_cli-0.4.0/src/yaga/commits/dependabot.py +119 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/github_event.py +30 -12
- yaga_cli-0.4.0/src/yaga/commits/github_signature.py +268 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/models.py +1 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/reporting.py +3 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/typos.py +22 -3
- yaga_cli-0.4.0/src/yaga/descriptions/__init__.py +1 -0
- yaga_cli-0.4.0/src/yaga/descriptions/checker.py +213 -0
- yaga_cli-0.4.0/src/yaga/descriptions/github.py +294 -0
- yaga_cli-0.4.0/src/yaga/descriptions/hygiene.py +70 -0
- yaga_cli-0.4.0/src/yaga/descriptions/markdown.py +428 -0
- yaga_cli-0.4.0/src/yaga/descriptions/models.py +177 -0
- yaga_cli-0.4.0/src/yaga/descriptions/policy.py +64 -0
- yaga_cli-0.4.0/src/yaga/descriptions/reporting.py +117 -0
- yaga_cli-0.4.0/src/yaga/descriptions/service.py +104 -0
- yaga_cli-0.4.0/src/yaga/descriptions/sources.py +137 -0
- yaga_cli-0.4.0/src/yaga/files.py +48 -0
- yaga_cli-0.2.1/src/yaga/changes/git.py → yaga_cli-0.4.0/src/yaga/git/changes.py +53 -20
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/git/runtime.py +31 -11
- yaga_cli-0.2.1/src/yaga/changes/patterns.py → yaga_cli-0.4.0/src/yaga/path_patterns.py +83 -60
- yaga_cli-0.4.0/src/yaga/test_planning/__init__.py +1 -0
- yaga_cli-0.4.0/src/yaga/test_planning/diagnostics.py +366 -0
- yaga_cli-0.4.0/src/yaga/test_planning/evaluation.py +349 -0
- yaga_cli-0.4.0/src/yaga/test_planning/evaluation_service.py +95 -0
- yaga_cli-0.4.0/src/yaga/test_planning/git.py +55 -0
- yaga_cli-0.4.0/src/yaga/test_planning/handoff.py +208 -0
- yaga_cli-0.4.0/src/yaga/test_planning/limits.py +21 -0
- yaga_cli-0.4.0/src/yaga/test_planning/models.py +228 -0
- yaga_cli-0.4.0/src/yaga/test_planning/planner.py +281 -0
- yaga_cli-0.4.0/src/yaga/test_planning/policy.py +164 -0
- yaga_cli-0.4.0/src/yaga/test_planning/reporting.py +172 -0
- yaga_cli-0.4.0/src/yaga/test_planning/reports.py +150 -0
- yaga_cli-0.4.0/src/yaga/test_planning/results.py +269 -0
- yaga_cli-0.4.0/src/yaga/test_planning/selection.py +49 -0
- yaga_cli-0.4.0/src/yaga/test_planning/service.py +45 -0
- yaga_cli-0.4.0/src/yaga/test_planning/source.py +73 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/version_requirement.py +1 -1
- yaga_cli-0.4.0/tests/fixtures/github-signatures/.gitattributes +4 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/.typos.toml +3 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/README.md +45 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/dependabot-setup-uv.commit +37 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/dependabot-urllib3-parent.commit +20 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/dependabot-urllib3.commit +37 -0
- yaga_cli-0.4.0/tests/fixtures/github-signatures/web-flow.asc +41 -0
- yaga_cli-0.4.0/tests/test_build_git_isolation.py +68 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_cli.py +51 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_git.py +91 -15
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_cli.py +53 -9
- yaga_cli-0.4.0/tests/test_command_guide.py +114 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_action.py +94 -5
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_action_controls.py +11 -2
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_config.py +41 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_reporting.py +15 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_trusted_policy.py +19 -2
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_typos.py +81 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_warnings.py +35 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_config_init.py +10 -0
- yaga_cli-0.4.0/tests/test_dependabot_commit_filter.py +383 -0
- yaga_cli-0.4.0/tests/test_description_checker.py +297 -0
- yaga_cli-0.4.0/tests/test_description_cli.py +664 -0
- yaga_cli-0.4.0/tests/test_description_github.py +407 -0
- yaga_cli-0.4.0/tests/test_description_hygiene.py +301 -0
- yaga_cli-0.4.0/tests/test_description_markdown.py +181 -0
- yaga_cli-0.4.0/tests/test_description_policy.py +138 -0
- yaga_cli-0.4.0/tests/test_description_remote_cli.py +317 -0
- yaga_cli-0.4.0/tests/test_description_sources.py +296 -0
- yaga_cli-0.4.0/tests/test_description_structure.py +222 -0
- yaga_cli-0.4.0/tests/test_github_commit_signature.py +373 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_github_pull_request.py +15 -5
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_installation.py +2 -2
- yaga_cli-0.4.0/tests/test_minimum_runtime.py +71 -0
- yaga_cli-0.4.0/tests/test_path_patterns.py +180 -0
- yaga_cli-0.4.0/tests/test_regular_file_prefix.py +115 -0
- yaga_cli-0.4.0/tests/test_test_planning_cli.py +450 -0
- yaga_cli-0.4.0/tests/test_test_planning_diagnostics.py +494 -0
- yaga_cli-0.4.0/tests/test_test_planning_evaluate_cli.py +475 -0
- yaga_cli-0.4.0/tests/test_test_planning_evaluation.py +471 -0
- yaga_cli-0.4.0/tests/test_test_planning_examples.py +665 -0
- yaga_cli-0.4.0/tests/test_test_planning_git.py +283 -0
- yaga_cli-0.4.0/tests/test_test_planning_handoff.py +545 -0
- yaga_cli-0.4.0/tests/test_test_planning_handoff_example.py +106 -0
- yaga_cli-0.4.0/tests/test_test_planning_planner.py +350 -0
- yaga_cli-0.4.0/tests/test_test_planning_policy.py +532 -0
- yaga_cli-0.4.0/tests/test_test_planning_replay.py +563 -0
- yaga_cli-0.4.0/tests/test_test_planning_reporting.py +490 -0
- yaga_cli-0.4.0/tests/test_test_planning_results.py +277 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tooling.py +41 -1
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/uv.lock +20 -18
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/zensical.toml +6 -0
- yaga_cli-0.2.1/docs/commands.md +0 -48
- yaga_cli-0.2.1/release-notes.md +0 -21
- yaga_cli-0.2.1/src/yaga/files.py +0 -13
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.gitattributes +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/dependabot.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.github/workflows/commit-policy.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.gitignore +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.pre-commit-hooks.yaml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/branch-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/change-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/checks/ci.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/mode-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/path-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/size-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/.yaga/tree-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/CHANGELOG.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/LICENSE +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/SECURITY.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/action.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/actions/commit-check/action.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/agent-review-gate.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/assets/branding/isometric_terminal_y_logo.png +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/assets/branding/isometric_terminal_y_logo_transparent.png +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/assets/branding/yaga_cli_brand_concept_board.png +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/branch-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/change-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/ci-adoption.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/commit-policy-direction.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/install.ps1 +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/install.sh +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/mode-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/path-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/recipes.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/releasing.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/repository-plans.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/security.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/size-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/stylesheets/extra.css +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/tree-policy.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/docs/workflow-checks.md +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/examples/agent-review-policy.toml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/examples/agent-review-results.json +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/examples/agent-review.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/examples/commit-policy.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/examples/review-policy.yml +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/overrides/404.html +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/check_description.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/check_docs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/check_release.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/scripts/composite_smoke_python +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/__main__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/_update_worker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/action.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/action_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/evaluation.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/boundary.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/candidate.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/constants.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/events.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/evidence.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/gate.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/publication.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/requests.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/runs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/github/runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/plan.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/results.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/agent_review/runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/branches/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/changes/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/branch.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/change.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/config.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/gate.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/mode.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/path.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/repo.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/self_manage.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/size.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/tree.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commands/workflow.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commit_action_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commit_action_runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/config_explain.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/config_init.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/content_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/github_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/parser.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/quality.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/severity.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/sources.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/template.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/commits/trusted_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/config_scope.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/errors.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/git/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/git/process.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/git/tree.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/github.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/modes/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/paths/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/repository/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/repository/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/repository/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/repository/plan.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/repository/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/self_update.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/sizes/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/status.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/trees/service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/actionlint_runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/actionlint_snapshot.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/inputs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/lint.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/parser.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/references.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/security.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/security_facts.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/security_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/security_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/security_rules.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/src/yaga/workflows/yaml.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/__init__.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/codex_support.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/fixtures/commit_consumer_parity.json +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_action.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_agent_review_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_agent_review_evaluation.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_agent_review_plan.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_agent_review_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_agent_review_results.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_branch_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_change_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_events.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_evidence.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_evidence_literals.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_gate.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_publication.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_requests.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_runs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_codex_runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_body_customization.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_consumer_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_content_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_explicit_inputs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_parser.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_quality.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_quality_workflow.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_sources.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_commit_template.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_config_workflows.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_consumer_policy_entrypoints.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_description.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_docs_links.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_files.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_git_runtime.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_git_tree.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_github.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_github_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_installers.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_mode_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_path_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_plain_messages.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_pr_proposed_message.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_release.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repo_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repository_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repository_contract.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repository_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repository_plan.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_repository_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_size_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_status.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_git.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_patterns.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_policy.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_tree_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_checker.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_inputs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_lint.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_lint_hardening.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_lint_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_provider_inputs.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_references.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_cli.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_facts.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_models.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_reporting.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_rules.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_selection.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_security_service.py +0 -0
- {yaga_cli-0.2.1 → yaga_cli-0.4.0}/tests/test_workflow_yaml.py +0 -0
|
@@ -25,7 +25,7 @@ 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@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
29
29
|
with:
|
|
30
30
|
enable-cache: true
|
|
31
31
|
version: "0.13.0"
|
|
@@ -150,7 +150,7 @@ jobs:
|
|
|
150
150
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
151
151
|
with:
|
|
152
152
|
persist-credentials: false
|
|
153
|
-
- uses: astral-sh/setup-uv@
|
|
153
|
+
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
154
154
|
with:
|
|
155
155
|
enable-cache: true
|
|
156
156
|
version: "0.13.0"
|
|
@@ -15,12 +15,12 @@ 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:
|
|
22
22
|
persist-credentials: false
|
|
23
|
-
- uses: actions/setup-python@
|
|
23
|
+
- uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
24
24
|
with:
|
|
25
25
|
python-version: "3.12"
|
|
26
26
|
- name: Install pinned Typos for spelling controls
|
|
@@ -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@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
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@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
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@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
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,11 +77,11 @@ 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/
|
|
84
|
-
- uses: pypa/gh-action-pypi-publish@
|
|
84
|
+
- uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
85
85
|
|
|
86
86
|
github-release:
|
|
87
87
|
name: Create GitHub Release
|
|
@@ -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/
|
|
@@ -13,6 +13,29 @@ Agent review gate is the public review contract. Its current provider adapter re
|
|
|
13
13
|
|
|
14
14
|
## Preserve the CLI contract
|
|
15
15
|
|
|
16
|
+
- Keep pull-request description checks installed-only under `src/yaga/descriptions/`, with one
|
|
17
|
+
explicit versioned policy and file/stdin/event/PR source plus an optional explicit Markdown template.
|
|
18
|
+
Keep the checker pure, Markdown support deliberate, and Typos execution bounded and isolated.
|
|
19
|
+
Require meaningful content and unique ordered template headings; preserve schema-v1 reports,
|
|
20
|
+
exact finding counts, 256 stored diagnostics, 64 KiB policy/body/template and 1 MiB event limits.
|
|
21
|
+
Keep `heading-min-level` defaulted to 2 and `heading-max-length` to 120, with strict integer
|
|
22
|
+
ranges 1–6 and 1–256. Apply these rules to top-level ATX and Setext headings, reject raw HTML
|
|
23
|
+
heading tags outside comments/code/escaped literals, and reject conflicting templates.
|
|
24
|
+
Preserve the `description.heading-*` and `description.html-heading` diagnostic boundaries;
|
|
25
|
+
structural checks are neither a complete Markdown renderer nor an HTML sanitizer.
|
|
26
|
+
Keep text hygiene source-located and code/comment/escape-aware. Diagnose invisible format
|
|
27
|
+
controls, prose tabs, high-confidence literal newline escapes, and unmatched backticks without
|
|
28
|
+
rejecting ordinary Unicode joining/emoji sequences or guessing arbitrary emphasis. Reject
|
|
29
|
+
unsupported control characters and bare CR before normalization; preserve LF/CRLF input.
|
|
30
|
+
Keep file/stdin/event sources offline. Only explicit `--pr` may fetch the current body through
|
|
31
|
+
the installed authenticated `gh` CLI: require a canonical HTTPS URL or a positive number plus
|
|
32
|
+
`--repo [HOST/]OWNER/REPO`, reject mixed sources and URL/repository ambiguity, and never infer
|
|
33
|
+
checkout or environment selection. Use shell-free bounded process execution, verify returned
|
|
34
|
+
PR identity and strict JSON, preserve the 64 KiB decoded-body limit, and never expose raw process
|
|
35
|
+
output or credentials. Keep the 30-second, 512 KiB stdout, and 64 KiB stderr bounds. Fetches may
|
|
36
|
+
check open/closed/merged PRs, without retrieving historical descriptions or writing to GitHub.
|
|
37
|
+
Never discover templates or policy, access Git history, or inherit commit-author exemptions.
|
|
38
|
+
Keep this provider outside repository plans and both Action import graphs.
|
|
16
39
|
- `commit check` accepts one explicit source or defaults to `HEAD`; never silently combine sources,
|
|
17
40
|
fetch history, reduce a Git selection, or ignore a missing base.
|
|
18
41
|
- Treat commit messages, Git output, revisions, paths, and displayed labels as untrusted. Bound
|
|
@@ -27,9 +50,19 @@ Agent review gate is the public review contract. Its current provider adapter re
|
|
|
27
50
|
read-only commit Action after complete event, runner-context, checkout, configuration, and range
|
|
28
51
|
validation. Require an exact strictly parsed PR author login `dependabot[bot]`, type `Bot`, and
|
|
29
52
|
bounded positive ID. Never infer trusted bot identity from Git author/committer data, messages,
|
|
30
|
-
titles, branches, actors, or footers.
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
titles, branches, actors, or footers. Narrow this already eligible quality exemption per commit
|
|
54
|
+
using bounded exact author/committer metadata compatibility. Keep the schema-v1 boolean
|
|
55
|
+
`dependabot-require-github-signature` defaulted to `true`: additionally verify each skipped
|
|
56
|
+
commit's exact object bytes offline against the pinned GitHub signing key using a trusted
|
|
57
|
+
bounded `gpgv` process and private keyring. Missing, failed, unsupported, or over-budget
|
|
58
|
+
verification runs normal checks. `false` retains the forgeable per-commit metadata filter only.
|
|
59
|
+
Ordinary human additions and human rebases must be checked, and mixed PR titles/proposed
|
|
60
|
+
messages must be checked. The shared GitHub key is not exclusive Dependabot identity; never
|
|
61
|
+
use a Signed-off-by footer as proof, query a live badge, fetch keys, or import REST/token code.
|
|
62
|
+
The separate `skip-pull-request-authors` list remains a broad independent explicit exemption;
|
|
63
|
+
do not turn this option into generic bot identity configuration. Preserve the complete selected
|
|
64
|
+
SHA set and stable `Dependabot pull request` skip reason; ordinary commit/repository checks and
|
|
65
|
+
every other provider keep running.
|
|
33
66
|
- Keep `scope-policy-by-type` as an empty-default schema-v1 mapping with at most 128 safe,
|
|
34
67
|
case-insensitively unique type keys and closed presence-policy values. Overrides replace the
|
|
35
68
|
global scope policy for full commits and PR titles; `scope-case` and `allowed-scopes` remain
|
|
@@ -100,6 +133,25 @@ Agent review gate is the public review contract. Its current provider adapter re
|
|
|
100
133
|
Git paths, visible gitlink changes, disabled rename/external-diff/textconv behavior,
|
|
101
134
|
unique-pattern caching, and the shared 10,000,000-unit matcher-work ceiling. Keep it out of both
|
|
102
135
|
Action import graphs.
|
|
136
|
+
- Keep test planning installed-only under `src/yaga/test_planning/`. `test policy check` requires
|
|
137
|
+
one explicit file and no Git access. `test plan` requires explicit policy, profile, and exactly
|
|
138
|
+
one range or revision; revision-only planning requires a full profile. Never discover policy,
|
|
139
|
+
infer HEAD/event/branch/worktree state, fetch, or execute bindings. Keep the pure planner free
|
|
140
|
+
of I/O and collect Git sources through the shared bounded runtime and neutral changed-path
|
|
141
|
+
reader. Require complete range history, one three-dot merge base, and exact endpoint/comparison/
|
|
142
|
+
execution identities; allow shallow revision-only plans with the selected commit/tree present.
|
|
143
|
+
Reject graft overlays before and after collection. Preserve version-one semantic/envelope
|
|
144
|
+
contracts, exact policy-byte SHA-256, optional binding identity, canonical plan digests, complete
|
|
145
|
+
JSON within 4 MiB, at most 256 human reasons with exact omitted counts, and exits 0/2 only.
|
|
146
|
+
Planning never claims tests passed and stays outside repository plans and both Action graphs.
|
|
147
|
+
Keep executor handoff pure and installed-only: a complete fixed registry maps every suite exactly
|
|
148
|
+
once, preserves all variants and required capabilities, and binds executor-definition hashes.
|
|
149
|
+
Require non-null matching binding identity and independent expected policy/commit/tree identities.
|
|
150
|
+
Preserve version-one registry/handoff documents, complete 4 MiB bounded output, prerequisite
|
|
151
|
+
order, and one dispatch per suite even for a matrix. No commands or receipt evaluation enter this
|
|
152
|
+
API. Consumer adapters own real capability checks, execution, cancellation, acceptance, and cleanup.
|
|
153
|
+
Shadow jobs remain advisory and cannot change or cancel required CI. Measure first; set the
|
|
154
|
+
feedback-time adoption threshold before activation, after real pilot observations.
|
|
103
155
|
- Keep `branch check` installed-only and require an explicit versioned policy plus exact short
|
|
104
156
|
branch name. Never inspect Git, infer checkout or event state, discover policy, normalize full
|
|
105
157
|
refs/remotes, or read environment in the domain layer. Schema v1 is a bounded ordered list of
|
|
@@ -42,14 +42,81 @@ with project and Python environment leakage removed.
|
|
|
42
42
|
That strict build gate runs on Python 3.12. The Python 3.15 test jobs permit PyYAML's source-build
|
|
43
43
|
fallback because the locked PyYAML release does not publish Python 3.15 wheels.
|
|
44
44
|
|
|
45
|
+
The default `make ci` changed-path check covers only `HEAD^..HEAD`. To qualify a complete pull
|
|
46
|
+
request, use exact base/head SHAs that are already available in complete local history, and run
|
|
47
|
+
from the head checkout:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uv run yaga commit check --range '<base-sha>..<head-sha>'
|
|
51
|
+
uv run make ci CHANGE_RANGE='<base-sha>...<head-sha>'
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The independent two-dot commit check selects branch-only commits; the three-dot changed-path
|
|
55
|
+
check compares the head against its unique merge base. Neither command fetches or infers a remote
|
|
56
|
+
branch. The range override does not change workflow, formatting, or test inputs: those still use
|
|
57
|
+
the current checkout. A final docs-only commit must not hide an earlier source change from the
|
|
58
|
+
complete PR check.
|
|
59
|
+
|
|
60
|
+
Minimum runtime compatibility has a separate optional check:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
uv run --locked --python 3.12 python scripts/check_minimum_runtime.py --report minimum-runtime.json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
It builds a fresh base wheel, resolves the lowest runtime dependency versions outside the checkout,
|
|
67
|
+
checks installed provenance and dependency consistency, and exercises representative CLI/report
|
|
68
|
+
paths. See [minimum runtime qualification](docs/minimum-runtime.md) for scope and retained evidence;
|
|
69
|
+
this complements the frozen-lock `make ci` and strict package build gates.
|
|
70
|
+
|
|
45
71
|
## CLI and commit policy contract
|
|
46
72
|
|
|
47
73
|
The public installed command groups are `branch`, `change`, `commit`, `config`, `github`, `mode`,
|
|
48
|
-
`path`, `repo`, `self`, `size`, `tree`, `workflow`, and `gate`.
|
|
74
|
+
`path`, `pull-request`, `repo`, `self`, `size`, `test`, `tree`, `workflow`, and `gate`.
|
|
49
75
|
Keep Typer declarations in `src/yaga/commands/`; keep commit parsing, policy, Git selection,
|
|
50
76
|
configuration, GitHub event adaptation, and reporting in focused dependency-light modules under
|
|
51
77
|
`src/yaga/commits/`. Domain behavior must remain directly testable without invoking Typer.
|
|
52
78
|
|
|
79
|
+
Test planning lives under `src/yaga/test_planning/`; see the [command guide](docs/test-planning.md)
|
|
80
|
+
and [design](docs/designs/test-planning.md). Keep explicit policy parsing separate from pure
|
|
81
|
+
selection, reuse the neutral bounded matcher in `src/yaga/path_patterns.py`, and keep both examples
|
|
82
|
+
executable in tests. `test policy check` requires one explicit file and no Git access; `test plan`
|
|
83
|
+
requires policy, profile, and exactly one explicit range or revision. A revision-only plan requires
|
|
84
|
+
a full profile. Keep Git collection in the source adapter, using `src/yaga/git/changes.py` and the
|
|
85
|
+
shared bounded runtime; the pure planner must not discover Git or environment state. Range plans
|
|
86
|
+
require complete history and exact endpoint/comparison/execution identities; revision plans need
|
|
87
|
+
their selected commit and tree only. Both reject graft overlays and never fetch. Preserve exact
|
|
88
|
+
policy-byte identity, optional binding SHA-256, canonical version-one plan digests, complete JSON
|
|
89
|
+
within 4 MiB, and at most 256 human reasons with exact omitted counts. Emit successful output on
|
|
90
|
+
stdout and bounded error envelopes on stderr, with exits 0/2 only. Planning never executes bindings
|
|
91
|
+
or claims tests passed. Keep both commands outside repository plans and both Action runtimes.
|
|
92
|
+
|
|
93
|
+
Keep executor handoff pure and installed-only. `ExecutorRegistry` must map the complete catalog
|
|
94
|
+
exactly once to fixed dispatch IDs, preserve every variant, satisfy declared capabilities, and
|
|
95
|
+
bind immutable executor-definition hashes. `create_handoff` requires a non-preview plan plus
|
|
96
|
+
independent expected policy/commit/tree identities; keep the version-one manifest/handoff shapes
|
|
97
|
+
and 4 MiB complete-output limit. No binding may become a command or credential source. Consumer
|
|
98
|
+
adapters own real capability checks, execution, cancellation, custom acceptance, and cleanup.
|
|
99
|
+
Keep shadow comparisons advisory and full shadow jobs isolated from required CI cancellation.
|
|
100
|
+
Do not claim measured savings or enable skips before actual observations, a documented adoption
|
|
101
|
+
threshold, and complete-result gating. See the [handoff guide](docs/test-planning-handoff.md).
|
|
102
|
+
|
|
103
|
+
Keep selection diagnostics pure and separate from the frozen plan/handoff/comparison documents.
|
|
104
|
+
Retain exact source and policy/registry/plan identities, distinguish selection breadth from the
|
|
105
|
+
reason for full mode, and expose paths bypassed by early full decisions. A missing baseline is
|
|
106
|
+
different from an explicitly empty selection. Strict offline decoding checks closed version-one
|
|
107
|
+
plan semantics and canonical digests; callers still own bounded JSON reads and duplicate-key
|
|
108
|
+
rejection. Complete diagnostic reports must fit within 4 MiB including the final newline.
|
|
109
|
+
Recorded reasons are not proof of dependency coverage, trusted origin, or runtime savings.
|
|
110
|
+
|
|
111
|
+
Keep version-one normalized test results and evaluation separate from frozen plan/handoff formats.
|
|
112
|
+
`test evaluate` requires explicit bounded plan/results files plus independent expected policy,
|
|
113
|
+
manifest, source, run, and aggregate-attempt identities. Keep the evaluator pure and validate every
|
|
114
|
+
selected variant and prerequisite; missing or non-passed work returns 1, malformed or mismatched
|
|
115
|
+
inputs return 2, and only complete passed obligations return 0. Bound complete JSON to 4 MiB and
|
|
116
|
+
diagnostics to 256 with exact omitted counts. Adapters own provenance, custom acceptance, cleanup,
|
|
117
|
+
and retry lineage; an artifact hash or green job alone cannot prove these. No execution, discovery,
|
|
118
|
+
Git access, provider API, required-CI changes, or selective activation belongs in evaluation.
|
|
119
|
+
|
|
53
120
|
All revision-bound providers use the dependency-free runtime under `src/yaga/git/`. Keep repository
|
|
54
121
|
and executable discovery, metadata and alternate-object-store boundaries, process execution,
|
|
55
122
|
environment isolation, time and output limits, object identity parsing, and complete-history checks
|
|
@@ -90,9 +157,22 @@ opt-in alternative. Apply it only in the event-aware `github pull-request check`
|
|
|
90
157
|
read-only commit Action. Identify Dependabot from one strictly parsed PR author record with exact
|
|
91
158
|
`dependabot[bot]` login, `Bot` type, and a bounded positive ID; never from Git author/committer
|
|
92
159
|
metadata, a title, message, branch, actor, or footer. Complete event/context/checkout/config/range
|
|
93
|
-
validation before
|
|
94
|
-
|
|
95
|
-
|
|
160
|
+
validation before applying the stable `Dependabot pull request` skip reason. Narrow this already
|
|
161
|
+
eligible quality exemption per commit with bounded exact author/committer metadata compatibility.
|
|
162
|
+
`dependabot-require-github-signature` is a strict schema-v1 boolean defaulting to `true`; it affects
|
|
163
|
+
only this opt-in exemption. Require offline verification of each candidate's exact object bytes
|
|
164
|
+
against the pinned GitHub key using a trusted bounded `gpgv` process and private keyring. Missing
|
|
165
|
+
or failed verification, unsupported signatures, and resource exhaustion run normal checks.
|
|
166
|
+
An explicit `false` retains only the forgeable metadata filter. Check ordinary human additions
|
|
167
|
+
and human rebases, and check titles/proposed messages in mixed PRs. Require metadata for exactly
|
|
168
|
+
the previously selected SHA set, rejecting missing/duplicate records. Preserve that complete set
|
|
169
|
+
in reports. The shared GitHub key does not prove exclusive Dependabot identity. Do not fetch keys,
|
|
170
|
+
query live badges/revocation state, import REST/token code, or treat Signed-off-by as proof.
|
|
171
|
+
The explicit `skip-pull-request-authors` list remains a broad independent exemption, including for
|
|
172
|
+
human additions; do not generalize this option into Renovate/custom bot identity configuration.
|
|
173
|
+
Never use these exemptions to skip tests/security checks. Ordinary `commit check` and repository
|
|
174
|
+
plans keep checking, and every non-commit provider remains independent. Preserve frozen starter
|
|
175
|
+
bytes: omitted signature settings inherit the new default without rewriting existing starters.
|
|
96
176
|
`breaking-markers` is a schema-v1 enum with `either` as its default. `either` accepts a header `!`,
|
|
97
177
|
a recognized final `BREAKING CHANGE:` or `BREAKING-CHANGE:` footer, or both; `paired` requires both
|
|
98
178
|
markers or neither and reports `breaking.marker-pair` for exactly one. Apply marker pairing only to
|
|
@@ -126,6 +206,36 @@ diagnostics.
|
|
|
126
206
|
must refuse to shadow any effective discovered configuration, never edit `pyproject.toml`, and keep
|
|
127
207
|
its deterministic starter template round-trippable through the strict loader.
|
|
128
208
|
|
|
209
|
+
Pull-request description policy lives under `src/yaga/descriptions/` and remains installed-only.
|
|
210
|
+
Require one explicit versioned policy and description source, plus an optional explicit template.
|
|
211
|
+
Keep the Markdown subset and checker pure; file/stdin/event loading, explicit current-PR fetching,
|
|
212
|
+
and bounded isolated Typos execution belong in adapters. File/stdin/event sources remain offline.
|
|
213
|
+
Only `--pr` invokes the installed authenticated `gh` CLI to read the current description. Require
|
|
214
|
+
a canonical HTTPS PR URL or a positive number plus `--repo [HOST/]OWNER/REPO`; reject mixed sources,
|
|
215
|
+
URL/repository ambiguity, and implicit checkout/environment selection. Use the shared shell-free
|
|
216
|
+
bounded process runtime with a 30-second timeout, 512 KiB stdout, and 64 KiB stderr; strictly parse
|
|
217
|
+
JSON and verify returned PR identity before checking its bounded body. Do not expose raw process
|
|
218
|
+
output or credentials. Support open, closed, and merged PRs without historical-description reads.
|
|
219
|
+
No Git history access, policy/template discovery, author exemptions, or writes belong in this
|
|
220
|
+
provider. Schema v1 controls prose word minimum, total character maximum,
|
|
221
|
+
heading level/length, whole-line placeholders, task completion, and optional spelling. Default
|
|
222
|
+
`heading-min-level` to 2 (strict integer 1 through 6) and `heading-max-length` to 120 (strict integer
|
|
223
|
+
1 through 256). Apply level/length/content checks to top-level ATX and Setext headings; Setext
|
|
224
|
+
paragraphs do not contribute prose words. Reject raw HTML `h1` through `h6` tags outside comments,
|
|
225
|
+
code, and escaped literal markup; this narrow rule does not sanitize or forbid other HTML.
|
|
226
|
+
Template headings must occur once in order with meaningful section content; hidden comments and
|
|
227
|
+
fenced code cannot satisfy it. Reject template/policy conflicts as configuration errors.
|
|
228
|
+
Keep fixed text hygiene checks code/comment/escape-aware: suspicious invisible Unicode characters,
|
|
229
|
+
prose tabs, high-confidence literal newline escapes, and unmatched backtick delimiters. Preserve
|
|
230
|
+
ordinary Unicode joining/emoji behavior and source byte-column locations. Reject unsupported
|
|
231
|
+
control characters and bare CR before normalization; accept LF and CRLF. Do not infer lost text,
|
|
232
|
+
rewrite descriptions, or claim complete Markdown rendering or HTML sanitization.
|
|
233
|
+
Preserve 64 KiB policy/body/template bounds, the 1 MiB event bound, 64 template headings, exact
|
|
234
|
+
finding counts with 256 stored diagnostics, schema-v1 reports, and exits 0/1/2. The GitHub body
|
|
235
|
+
adapter validates supported open-PR events without claiming authenticated identity or requiring
|
|
236
|
+
commit metadata. Keep both commands outside repository plans and both Action import graphs.
|
|
237
|
+
See [pull-request descriptions](docs/pull-request-descriptions.md) for the complete public contract.
|
|
238
|
+
|
|
129
239
|
Branch-name policy lives under `src/yaga/branches/` and remains installed-only. `branch check`
|
|
130
240
|
requires one explicit versioned policy and one explicit short name; never inspect Git, infer the
|
|
131
241
|
current branch, discover policy, parse an event, normalize `refs/` or remote prefixes, or read an
|
|
@@ -345,7 +455,11 @@ gate. Its PR-head configuration is contributor-controlled and is only a quality
|
|
|
345
455
|
## Action contract
|
|
346
456
|
|
|
347
457
|
The public inputs are exactly `gate`, `operation`, `github-token`, `prerequisite-workflow`,
|
|
348
|
-
`lifecycle-workflow`, `owner-id`, `approval-marker`, `request-timeout`,
|
|
458
|
+
`lifecycle-workflow`, `owner-id`, `approval-marker`, `request-timeout`, `job-timeout-minutes`, and
|
|
459
|
+
`agent-review-policy-file`. The last input defaults to empty; nonempty values are deliberately
|
|
460
|
+
rejected before API access because this fixed GitHub adapter cannot execute named lenses or bind
|
|
461
|
+
their outcomes to a policy digest. Provider-neutral `gate agent-review policy` commands remain
|
|
462
|
+
available to external adapters.
|
|
349
463
|
`operation` is closed to `invalidate`, `prepare`, `authorize`, `observe`, `request`, and `finalize`.
|
|
350
464
|
Only `prepare` emits the closed `route` capability and `pull_request_number` used by the template;
|
|
351
465
|
its routes are `skip`, `done`, `observe`, `owner`, `external`, and `approved`. Candidate identity
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
DOCS_ADDR ?= localhost:9000
|
|
4
4
|
BUILD_ARGS ?=
|
|
5
|
+
CHANGE_RANGE ?= HEAD^..HEAD
|
|
5
6
|
|
|
6
7
|
actionlint:
|
|
7
8
|
uv run yaga workflow lint .github/workflows examples
|
|
@@ -23,7 +24,7 @@ check:
|
|
|
23
24
|
uv run ty check
|
|
24
25
|
uv run pre-commit validate-manifest .pre-commit-hooks.yaml
|
|
25
26
|
uv run yaga repo check --plan .yaga/checks/ci.toml --commit HEAD --revision HEAD
|
|
26
|
-
uv run yaga change check --policy .yaga/change-policy.toml --range
|
|
27
|
+
uv run yaga change check --policy .yaga/change-policy.toml --range "$(CHANGE_RANGE)"
|
|
27
28
|
bash -n scripts/composite_smoke_python
|
|
28
29
|
|
|
29
30
|
test:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: yaga-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
|
@@ -24,6 +24,7 @@ Requires-Python: >=3.12
|
|
|
24
24
|
Requires-Dist: pyyaml<7,>=6.0.3
|
|
25
25
|
Requires-Dist: typer<1,>=0.27.2
|
|
26
26
|
Provides-Extra: quality
|
|
27
|
+
Requires-Dist: certifi>=2026.10.19; extra == 'quality'
|
|
27
28
|
Requires-Dist: torch<3,>=2.13; extra == 'quality'
|
|
28
29
|
Requires-Dist: transformers<6,>=5.10; extra == 'quality'
|
|
29
30
|
Provides-Extra: quality-bedrock
|
|
@@ -45,10 +46,12 @@ become another review conversation. Start with one check and adopt more as your
|
|
|
45
46
|
| Problem | What YAGA checks |
|
|
46
47
|
| --- | --- |
|
|
47
48
|
| Commit messages and branch names follow inconsistent conventions | [Commit policy](https://dariuszpanas.github.io/yaga/commit-policy.html) and [branch naming](https://dariuszpanas.github.io/yaga/branch-policy.html) defined by your team |
|
|
49
|
+
| Pull requests omit useful context or leave template sections unfinished | [Description checks](https://dariuszpanas.github.io/yaga/pull-request-descriptions.html) for required content, templates, and optional spelling |
|
|
48
50
|
| A change lands without the related files your project expects | [Changed-path rules](https://dariuszpanas.github.io/yaga/change-policy.html), such as source changes accompanied by tests |
|
|
49
51
|
| 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 |
|
|
50
52
|
| 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 |
|
|
51
53
|
| Local checks and CI enforce different policies | An explicit [repository plan](https://dariuszpanas.github.io/yaga/repository-plans.html) used in both places |
|
|
54
|
+
| 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 |
|
|
52
55
|
|
|
53
56
|
Checks produce actionable findings and reports for automation. You choose the policies and checks;
|
|
54
57
|
YAGA does not require adopting the entire CLI at once.
|
|
@@ -13,10 +13,12 @@ become another review conversation. Start with one check and adopt more as your
|
|
|
13
13
|
| Problem | What YAGA checks |
|
|
14
14
|
| --- | --- |
|
|
15
15
|
| Commit messages and branch names follow inconsistent conventions | [Commit policy](https://dariuszpanas.github.io/yaga/commit-policy.html) and [branch naming](https://dariuszpanas.github.io/yaga/branch-policy.html) defined by your team |
|
|
16
|
+
| Pull requests omit useful context or leave template sections unfinished | [Description checks](https://dariuszpanas.github.io/yaga/pull-request-descriptions.html) for required content, templates, and optional spelling |
|
|
16
17
|
| A change lands without the related files your project expects | [Changed-path rules](https://dariuszpanas.github.io/yaga/change-policy.html), such as source changes accompanied by tests |
|
|
17
18
|
| 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
19
|
| 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
20
|
| Local checks and CI enforce different policies | An explicit [repository plan](https://dariuszpanas.github.io/yaga/repository-plans.html) used in both places |
|
|
21
|
+
| 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
22
|
|
|
21
23
|
Checks produce actionable findings and reports for automation. You choose the policies and checks;
|
|
22
24
|
YAGA does not require adopting the entire CLI at once.
|
|
@@ -2,6 +2,116 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.4.0] - 2026-10-29
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Add installed `pull-request description check` and `github pull-request description check`
|
|
10
|
+
commands for explicit Markdown files, stdin, and GitHub event bodies. Version-one policies
|
|
11
|
+
check meaningful content, word and character limits, unfinished placeholders, optional task
|
|
12
|
+
completion, and isolated Typos spelling. Explicit templates require ordered, filled sections
|
|
13
|
+
and replacement of unchanged prompts. Reports support text, JSON, and GitHub annotations;
|
|
14
|
+
existing commit checks and composite Actions retain their separate contracts.
|
|
15
|
+
|
|
16
|
+
- Check description heading structure even without a template. Default to H2 or deeper and at
|
|
17
|
+
most 120 heading-text characters; reject empty headings and raw HTML heading tags. Recognize
|
|
18
|
+
top-level Setext headings so a whole paragraph formatted as an H1 or H2 cannot count as prose.
|
|
19
|
+
Reject templates whose headings conflict with the selected policy.
|
|
20
|
+
|
|
21
|
+
- Detect suspicious invisible characters, prose tabs, literal escaped line breaks, and unmatched
|
|
22
|
+
backticks outside code and comments. Reject bare carriage returns and identify unsupported
|
|
23
|
+
control characters without rendering them. Document literal UTF-8 file authoring to preserve
|
|
24
|
+
Markdown through shell commands.
|
|
25
|
+
|
|
26
|
+
- Add `pull-request description check --pr` for the current body of an existing GitHub pull
|
|
27
|
+
request. Accept an explicit URL or a number with `--repo`, fetch through the installed
|
|
28
|
+
authenticated `gh` CLI with bounded process execution, and run the same policy/template checks
|
|
29
|
+
without a checkout or Actions. File, stdin, and event checks remain offline.
|
|
30
|
+
|
|
31
|
+
- Add a separate minimum-runtime qualification helper that builds a fresh base wheel, installs
|
|
32
|
+
the lowest resolved runtime dependencies outside the checkout, checks installed imports, and
|
|
33
|
+
runs the shared CLI smoke checks. Its JSON receipt records actual versions and the wheel hash;
|
|
34
|
+
the frozen-lock matrix and strict package build gate remain required.
|
|
35
|
+
|
|
36
|
+
- Make source types, prerequisites, network behavior, reports, repository-plan membership, and
|
|
37
|
+
Action availability discoverable from installed help and the command guide, with tested local
|
|
38
|
+
and complete-PR recipes.
|
|
39
|
+
|
|
40
|
+
- Document the staged-check design assessment, including index semantics, report compatibility,
|
|
41
|
+
and implementation acceptance criteria. Staged execution is not included in this release.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- Reject Git object-path selectors in changed-path range endpoints before repository access, so
|
|
46
|
+
a crafted gitlink cannot redirect the selected comparison and hide policy findings.
|
|
47
|
+
|
|
48
|
+
- Isolate installed-wheel smoke Git setup from ambient repository variables, user/system
|
|
49
|
+
configuration, and templates, preserving unrelated repositories during qualification.
|
|
50
|
+
|
|
51
|
+
- Allow an explicit `CHANGE_RANGE` override for local `make ci` qualification. Document the
|
|
52
|
+
independent full commit range check and the default last-commit-only comparison.
|
|
53
|
+
|
|
54
|
+
- Require `certifi>=2026.10.19` in the published `quality` extra, including wheel metadata, to
|
|
55
|
+
prevent supported model-download stacks retaining older affected certificate bundles. This
|
|
56
|
+
applies when installing/upgrading with the extra; base and Bedrock requirements are unchanged.
|
|
57
|
+
|
|
58
|
+
- Reject inconsistent Typos success/finding responses instead of silently accepting unexpected
|
|
59
|
+
output as a clean spelling result.
|
|
60
|
+
|
|
61
|
+
- Correct the documented repository-plan key, stdout/stderr capture, lifecycle exit codes,
|
|
62
|
+
quality-provider help, and the fixed GitHub Action's rejecting policy-file input.
|
|
63
|
+
|
|
64
|
+
## [0.3.0] - 2026-10-18
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- Add the internal version-one test qualification policy and pure selection planner, with
|
|
69
|
+
strict bounded validation, additive path/tag rules, full-suite fallback, complete variants,
|
|
70
|
+
prerequisite ordering, and tested polyglot and django-ray examples.
|
|
71
|
+
|
|
72
|
+
- Add installed `test policy check` and `test plan` commands, with explicit policy/profile and
|
|
73
|
+
Git range or full-profile revision inputs. Plans bind exact commit/tree and policy identities,
|
|
74
|
+
carry deterministic version-one JSON digests, and explain selected suites and variants.
|
|
75
|
+
Git collection remains bounded and never fetches. Planning does not run tests or enable skips;
|
|
76
|
+
normalized receipt evaluation is available separately.
|
|
77
|
+
|
|
78
|
+
- Add a pure version-one executor registry and handoff API with complete fixed job mappings,
|
|
79
|
+
binding/source/policy identity checks, exact variant preservation, capability preflight,
|
|
80
|
+
and bounded dispatch/cell output. Add runnable polyglot and django-ray examples, installed-wheel
|
|
81
|
+
smoke, and a django-ray shadow-pilot guide. Existing required CI stays enabled. Historical
|
|
82
|
+
selection replay and one full shadow observation are recorded; measured selective feedback
|
|
83
|
+
savings, an adoption threshold, and selective activation remain pending.
|
|
84
|
+
|
|
85
|
+
- Add pure version-one selection diagnostics and strict offline plan decoding, preserving
|
|
86
|
+
source/policy identities, fallback causes, selection breadth, unclassified paths, and explicit
|
|
87
|
+
baseline comparisons. Add optional separate replay diagnostics without changing existing plan
|
|
88
|
+
or comparison formats. Complete reports stay within 4 MiB and make no execution claims.
|
|
89
|
+
|
|
90
|
+
- Add version-one normalized test results and pure evaluation, plus installed `test evaluate`
|
|
91
|
+
with explicit plan/results files and independent policy, manifest, source, run, and attempt
|
|
92
|
+
identities. Missing prerequisites or variants and non-passed outcomes block success; malformed,
|
|
93
|
+
stale, duplicate, or extra results fail validation. Preserve bounded reports, offline operation,
|
|
94
|
+
both Action import boundaries, and existing required CI. Selective activation remains pending.
|
|
95
|
+
|
|
96
|
+
- Add the schema-v1 boolean `dependabot-require-github-signature`, defaulting to `true`.
|
|
97
|
+
Each otherwise eligible Dependabot-skipped commit must verify offline against the pinned
|
|
98
|
+
GitHub signing key. Missing or failed verification runs normal checks. An explicit `false`
|
|
99
|
+
retains the per-commit metadata filter; explicit PR-author exemptions remain independent.
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Map eight exact application-test files to application qualification in the django-ray example,
|
|
104
|
+
include latency for changes to the shared Docker scenario helper, and preserve the shared lease
|
|
105
|
+
dependencies added by the coordinated django-ray release work. Add complete historical
|
|
106
|
+
path, unknown-path, lockfile, rename/deletion, and variant regressions. Required CI and the
|
|
107
|
+
conservative full/unknown fallback behavior remain enabled.
|
|
108
|
+
|
|
109
|
+
- Narrow the opt-in Dependabot commit-message exemption per commit, so ordinary human additions
|
|
110
|
+
and human rebases are checked even inside a Dependabot PR. Mixed PR titles and proposed
|
|
111
|
+
messages are checked too. Signature verification requires an available trusted `gpgv` and
|
|
112
|
+
adds no API or token access. The shared GitHub key does not prove exclusive bot authorship,
|
|
113
|
+
and this quality exemption does not authorize skipping other checks.
|
|
114
|
+
|
|
5
115
|
## [0.2.1] - 2026-10-10
|
|
6
116
|
|
|
7
117
|
### Added
|