Skip to content

Sync rhiza#604

Merged
tschm merged 4 commits into
mainfrom
syncRhiza
Mar 17, 2026
Merged

Sync rhiza#604
tschm merged 4 commits into
mainfrom
syncRhiza

Conversation

@tschm
Copy link
Copy Markdown
Owner

@tschm tschm commented Mar 17, 2026

Summary by CodeRabbit

  • New Features

    • Added artifact capture and storage for Marimo notebooks.
  • Chores

    • Updated tool and action versions: setup-uv to v7.5.0, uv to 0.10.9, ruff to v0.15.6.
    • Updated Rhiza version from 0.11.6 to 0.12.1 and template branch to v0.8.12.
    • Standardized error and status messaging across scripts.
  • Refactor

    • Removed experimental sync functionality.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 17, 2026

📝 Walkthrough

Walkthrough

This PR systematically updates tool versions across GitHub Actions workflows (uv 0.10.8 → 0.10.9, setup-uv v7.3.1 → v7.5.0), standardizes shell script message formatting with bracketed tags, modifies Rhiza template sync to enforce exact version pinning, introduces artifact handling for Marimo notebooks, and updates related configuration files.

Changes

Cohort / File(s) Summary
Shell Script Formatting
.github/hooks/session-end.sh, .github/hooks/session-start.sh
Replaced emoji-based formatting (❌, ✓, 💡) with standardized bracketed tags ([ERROR], [INFO], [OK], [WARN]) in user-facing messages. No control flow changes.
GitHub Actions Version Bumps
.github/workflows/copilot-setup-steps.yml, .github/workflows/rhiza_benchmarks.yml, .github/workflows/rhiza_book.yml, .github/workflows/rhiza_ci.yml, .github/workflows/rhiza_sync.yml, .github/workflows/rhiza_validate.yml
Updated astral-sh/setup-uv from v7.3.1 to v7.5.0 and uv version from 0.10.8 to 0.10.9 across all workflows.
Workflow Trigger & Release Updates
.github/workflows/renovate_rhiza_sync.yml, .github/workflows/rhiza_release.yml
Updated setup-uv versions; renovate_rhiza_sync adds 'rhiza/\\' push trigger branch. rhiza_release replaces softprops/action-gh-release with ncipollo/release-action, updates attest actions, adds release note assembly logic, and updates artifact handling.
Marimo Notebook Artifact Handling
.github/workflows/rhiza_marimo.yml, .rhiza/make.d/marimo.mk
Added artifact folder creation and notebook artifact upload step in workflow. Updated Makefile to compute artifact folders, set NOTEBOOK_OUTPUT_FOLDER during validation, and adjust Marimo startup flags for explicit directory handling.
Rhiza Configuration & Testing
.rhiza/.rhiza-version, .rhiza/template.yml, .rhiza/rhiza.mk, .rhiza/tests/sync/test_rhiza_version.py
Bumped .rhiza-version from 0.11.6 to 0.12.1; updated template branch to v0.8.12. Changed rhiza version pinning from \>= (minimum) to == (exact) in sync/validate targets; removed sync-experimental target and dynamic makefile inclusion. Updated tests to expect exact version matching and removed TestSyncExperimental class.
Notebook Content & Linting
book/marimo/notebooks/rhiza.py, ruff.toml
Added three new cells (cell_38, cell_39, cell_40) introducing notebook artifacts section with CSV export functionality. Enabled D100 lint rule for marimo notebooks by removing it from per-file ignores.
Pre-commit Dependencies
.pre-commit-config.yaml
Bumped ruff-pre-commit from v0.15.5 to v0.15.6 and uv-pre-commit from 0.10.8 to 0.10.9.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • chore: Sync with rhiza #556: Performs Rhiza template sync with overlapping updates to astral-sh/setup-uv and uv version pins across GitHub workflows.
  • chore: Sync with rhiza #537: Synchronizes template-driven Rhiza changes affecting .rhiza files, Makefile targets, and test expectations with similar scope.
  • Update template branch to v0.8.5 #598: Modifies Rhiza/template workflow and sync tooling with overlapping changes to GitHub Actions uv setup and .rhiza configuration files.

Poem

🐰 Hops with glee through workflows bright,
Version bumps and tags taking flight,
Artifacts saved in folders neat,
Exact versions make the sync complete!
Rhiza template sync refined,
Bracketed tags of every kind! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Sync rhiza' accurately reflects the main changes in the PR, which involve syncing the rhiza template and dependencies across the repository.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch syncRhiza
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/rhiza_validate.yml (1)

32-37: ⚠️ Potential issue | 🟠 Major

Use exact Rhiza version in validation step.

Line 37 uses a floating constraint (rhiza>=0.8.0), which breaks reproducibility against the pinned version 0.12.1 in .rhiza/.rhiza-version. Update this workflow to use exact version pinning like the other workflows.

Proposed fix
       - name: Validate Rhiza config
         # don't run this in rhiza itself. Rhiza has no template.yml file.
         if: ${{ github.repository != 'jebel-quant/rhiza' }}
         shell: bash
         run: |
-          uvx "rhiza>=0.8.0" validate .
+          RHIZA_VERSION="$(cat .rhiza/.rhiza-version)"
+          uvx "rhiza==${RHIZA_VERSION}" validate .
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/rhiza_validate.yml around lines 32 - 37, The workflow uses
a floating Rhiza constraint in the uvx call (uvx "rhiza>=0.8.0" validate .)
which breaks reproducibility versus the pinned version in .rhiza/.rhiza-version;
change the uvx invocation to use an exact pin (e.g., uvx "rhiza==0.12.1"
validate .) or programmatically read the version from .rhiza/.rhiza-version and
pass it as uvx "rhiza==<version>" so the validation step matches the pinned
Rhiza version.
🧹 Nitpick comments (4)
.rhiza/tests/sync/test_rhiza_version.py (4)

71-73: Stale comment doesn't match the updated assertion.

Same issue here - the comment references rhiza>= but the assertion checks for rhiza==.

         out = proc.stdout
-        # Check that rhiza>= is used with the version variable
+        # Check that rhiza== is used with the version variable
         assert 'uvx "rhiza==' in out or "rhiza==" in out
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.rhiza/tests/sync/test_rhiza_version.py around lines 71 - 73, The comment
above the assertion in test_rhiza_version.py is stale: update the comment that
currently says "Check that rhiza>= is used with the version variable" to reflect
the actual assertion which checks for equality (rhiza==); locate the block using
the variable out and the assertion line containing assert 'uvx "rhiza==' in out
or "rhiza==" in out and modify the comment to describe that the test verifies
rhiza== is present (or alternatively change the assertion to check for >= if you
intended a range), ensuring comment text matches the implemented assertion.

134-137: Stale comment doesn't match the updated assertion.

The comment on line 135 still references rhiza>=VERSION but the assertion checks for rhiza==.

-        # The format should be: uvx "rhiza>=VERSION" summarise .
+        # The format should be: uvx "rhiza==VERSION" summarise .
         assert 'uvx "rhiza==' in out
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.rhiza/tests/sync/test_rhiza_version.py around lines 134 - 137, Update the
stale test comment to match the actual assertion: the test checks for 'uvx
"rhiza==' so change the comment that currently says `rhiza>=VERSION` to reflect
the equality format (e.g., `rhiza==VERSION`) or invert the assertion to check
for `>=` if that was intended; modify the comment near the assertions and/or
adjust the assertion string in the test to keep them consistent with each other
(referencing the assertion lines that contain 'uvx "rhiza==' and "summarise").

64-66: Stale comment doesn't match the updated assertion.

The comment on line 65 still references rhiza>= but the assertion now checks for rhiza==. Consider updating the comment to reflect the exact version pinning behavior.

         out = proc.stdout
-        # Check that rhiza>= is used with the version variable
+        # Check that rhiza== is used with the version variable
         assert 'uvx "rhiza==' in out or "rhiza==" in out
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.rhiza/tests/sync/test_rhiza_version.py around lines 64 - 66, The comment
above the assertion in test_rhiza_version.py is outdated (mentions rhiza>=)
while the assertion checks for an exact pin (checks for 'uvx "rhiza==' or
"rhiza=="); update the comment to describe that the test verifies exact version
pinning (rhiza==) and mention the assertion using the variable out to avoid
confusion.

125-128: Stale comment doesn't match the updated assertion.

The comment on line 126 still references rhiza>=VERSION but the assertion checks for rhiza==.

-        # The format should be: uvx "rhiza>=VERSION" sync .
+        # The format should be: uvx "rhiza==VERSION" sync .
         assert 'uvx "rhiza==' in out
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.rhiza/tests/sync/test_rhiza_version.py around lines 125 - 128, Update the
stale inline comment that references `rhiza>=VERSION` to match the actual
assertion which checks for `rhiza==` in the test (`test_rhiza_version.py`), or
alternatively change the assertion to check for `rhiza>=` if that was intended;
locate the assertion lines containing the string checks ('uvx "rhiza==' and
"sync .") and make the comment text consistent with the checked operator (`==`)
so the comment and the assertions (`assert 'uvx "rhiza==' in out`) are aligned.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.github/workflows/rhiza_validate.yml:
- Around line 32-37: The workflow uses a floating Rhiza constraint in the uvx
call (uvx "rhiza>=0.8.0" validate .) which breaks reproducibility versus the
pinned version in .rhiza/.rhiza-version; change the uvx invocation to use an
exact pin (e.g., uvx "rhiza==0.12.1" validate .) or programmatically read the
version from .rhiza/.rhiza-version and pass it as uvx "rhiza==<version>" so the
validation step matches the pinned Rhiza version.

---

Nitpick comments:
In @.rhiza/tests/sync/test_rhiza_version.py:
- Around line 71-73: The comment above the assertion in test_rhiza_version.py is
stale: update the comment that currently says "Check that rhiza>= is used with
the version variable" to reflect the actual assertion which checks for equality
(rhiza==); locate the block using the variable out and the assertion line
containing assert 'uvx "rhiza==' in out or "rhiza==" in out and modify the
comment to describe that the test verifies rhiza== is present (or alternatively
change the assertion to check for >= if you intended a range), ensuring comment
text matches the implemented assertion.
- Around line 134-137: Update the stale test comment to match the actual
assertion: the test checks for 'uvx "rhiza==' so change the comment that
currently says `rhiza>=VERSION` to reflect the equality format (e.g.,
`rhiza==VERSION`) or invert the assertion to check for `>=` if that was
intended; modify the comment near the assertions and/or adjust the assertion
string in the test to keep them consistent with each other (referencing the
assertion lines that contain 'uvx "rhiza==' and "summarise").
- Around line 64-66: The comment above the assertion in test_rhiza_version.py is
outdated (mentions rhiza>=) while the assertion checks for an exact pin (checks
for 'uvx "rhiza==' or "rhiza=="); update the comment to describe that the test
verifies exact version pinning (rhiza==) and mention the assertion using the
variable out to avoid confusion.
- Around line 125-128: Update the stale inline comment that references
`rhiza>=VERSION` to match the actual assertion which checks for `rhiza==` in the
test (`test_rhiza_version.py`), or alternatively change the assertion to check
for `rhiza>=` if that was intended; locate the assertion lines containing the
string checks ('uvx "rhiza==' and "sync .") and make the comment text consistent
with the checked operator (`==`) so the comment and the assertions (`assert 'uvx
"rhiza==' in out`) are aligned.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e7be992c-90a4-43e3-8fae-254c822bcfdb

📥 Commits

Reviewing files that changed from the base of the PR and between b7dc09b and e515f01.

⛔ Files ignored due to path filters (1)
  • .rhiza/template.lock is excluded by !**/*.lock
📒 Files selected for processing (19)
  • .github/hooks/session-end.sh
  • .github/hooks/session-start.sh
  • .github/workflows/copilot-setup-steps.yml
  • .github/workflows/renovate_rhiza_sync.yml
  • .github/workflows/rhiza_benchmarks.yml
  • .github/workflows/rhiza_book.yml
  • .github/workflows/rhiza_ci.yml
  • .github/workflows/rhiza_marimo.yml
  • .github/workflows/rhiza_release.yml
  • .github/workflows/rhiza_sync.yml
  • .github/workflows/rhiza_validate.yml
  • .pre-commit-config.yaml
  • .rhiza/.rhiza-version
  • .rhiza/make.d/marimo.mk
  • .rhiza/rhiza.mk
  • .rhiza/template.yml
  • .rhiza/tests/sync/test_rhiza_version.py
  • book/marimo/notebooks/rhiza.py
  • ruff.toml

@tschm tschm merged commit 5b2f9ba into main Mar 17, 2026
18 checks passed
@tschm tschm deleted the syncRhiza branch March 17, 2026 06:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant