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