Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR syncs the repository’s Rhiza-managed GitHub Actions workflows and Rhiza template tests to match the upstream cvxrisk template approach, primarily by delegating local workflows to canonical reusable workflows in jebel-quant/rhiza.
Changes:
- Replaced several in-repo workflow implementations with calls to pinned
jebel-quant/rhizareusable workflows (CI, weekly, release, sync, marimo, CodeQL, book). - Updated
.rhiza/testsworkflow structure tests to assert reusable-workflow delegation instead of validating inlined job definitions. - Adjusted the standalone
release.ymlworkflow build step fromuv buildtouvx hatch build.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| .rhiza/tests/api/test_weekly_workflow.py | Updates structural assertions to validate reusable workflow delegation for weekly workflow. |
| .rhiza/tests/api/test_release_workflow.py | Updates structural assertions to validate reusable workflow delegation for release workflow. |
| .rhiza/tests/api/test_github_targets.py | Adds tests intended to validate GitHub-related Make targets (currently guarded by existence checks). |
| .rhiza/tests/api/test_gh_aw_targets.py | Adds tests intended to validate gh-aw Make targets (currently guarded by existence checks). |
| .rhiza/tests/api/test_ci_workflow.py | Removes YAML-structure assertions; keeps Make-based OS matrix validation. |
| .github/workflows/rhiza_weekly.yml | Switches weekly workflow to call the canonical reusable workflow. |
| .github/workflows/rhiza_sync.yml | Switches sync workflow to call the canonical reusable workflow with inputs. |
| .github/workflows/rhiza_release.yml | Switches release workflow to call the canonical reusable workflow. |
| .github/workflows/rhiza_marimo.yml | Switches marimo workflow to call the canonical reusable workflow. |
| .github/workflows/rhiza_codeql.yml | Switches CodeQL workflow to call the canonical reusable workflow; adds top-level permissions. |
| .github/workflows/rhiza_ci.yml | Switches CI workflow to call the canonical reusable workflow. |
| .github/workflows/rhiza_book.yml | Switches book workflow to call the canonical reusable workflow (retaining permissions). |
| .github/workflows/release.yml | Changes build command to use uvx hatch build. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+3
to
+4
| These tests validate that the .github/github.mk targets are correctly exposed | ||
| and emit the expected commands without actually executing them. |
| # Import run_make from local conftest (setup_tmp_makefile is autouse) | ||
| from api.conftest import run_make | ||
|
|
||
| _GITHUB_MK = Path(__file__).resolve().parents[3] / ".rhiza" / "make.d" / "github.mk" |
Comment on lines
+17
to
+95
| if not _GH_AW_MK.exists(): | ||
| pytest.skip("gh-aw.mk not found, skipping gh-aw tests", allow_module_level=True) | ||
|
|
||
|
|
||
| def test_gh_aw_targets_exist(logger): | ||
| """Verify that gh-aw targets are listed in help.""" | ||
| result = run_make(logger, ["help"], dry_run=False) | ||
| output = result.stdout | ||
|
|
||
| expected_targets = [ | ||
| "install-gh-aw", | ||
| "gh-aw-compile", | ||
| "gh-aw-compile-strict", | ||
| "gh-aw-status", | ||
| "gh-aw-run", | ||
| "gh-aw-init", | ||
| "gh-aw-secrets", | ||
| "gh-aw-logs", | ||
| "gh-aw-validate", | ||
| "gh-aw-setup", | ||
| ] | ||
|
|
||
| for target in expected_targets: | ||
| assert target in output, f"Target {target} not found in help output" | ||
|
|
||
|
|
||
| def test_install_gh_aw_dry_run(logger): | ||
| """Verify install-gh-aw target dry-run.""" | ||
| result = run_make(logger, ["install-gh-aw"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_compile_dry_run(logger): | ||
| """Verify gh-aw-compile target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-compile"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_compile_strict_dry_run(logger): | ||
| """Verify gh-aw-compile-strict target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-compile-strict"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_status_dry_run(logger): | ||
| """Verify gh-aw-status target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-status"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_init_dry_run(logger): | ||
| """Verify gh-aw-init target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-init"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_secrets_dry_run(logger): | ||
| """Verify gh-aw-secrets target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-secrets"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_logs_dry_run(logger): | ||
| """Verify gh-aw-logs target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-logs"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_validate_dry_run(logger): | ||
| """Verify gh-aw-validate target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-validate"]) | ||
| assert result.returncode == 0 | ||
|
|
||
|
|
||
| def test_gh_aw_setup_dry_run(logger): | ||
| """Verify gh-aw-setup target dry-run.""" | ||
| result = run_make(logger, ["gh-aw-setup"]) | ||
| # gh-aw-setup is interactive, so dry-run should succeed without interaction | ||
| assert result.returncode == 0 |
|
|
||
| - name: Build | ||
| run: uv build | ||
| run: uvx hatch build |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.github/workflowsfrom cvxrisk.rhiza/testsfrom cvxrisk🤖 Generated with Claude Code