Skip to content
This repository was archived by the owner on Mar 10, 2026. It is now read-only.

Commit e2aba8a

Browse files
authored
Merge pull request #540 from tschm/renovate/jebel-quant-rhiza-0.x
chore(deps): update dependency jebel-quant/rhiza to v0.8.3
2 parents 8393426 + 6b0f5f2 commit e2aba8a

42 files changed

Lines changed: 610 additions & 150 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/copilot-instructions.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,30 @@ For DevContainers and Codespaces, the `.devcontainer/` configuration and `bootst
151151
4. **Format**: Run `make fmt` before committing.
152152
5. **Verify**: Run `make deptry` to check dependencies.
153153

154+
## GitHub Agentic Workflows (gh-aw)
155+
156+
This repository uses GitHub Agentic Workflows for AI-driven automation.
157+
Agentic workflow files are Markdown files in `.github/workflows/` with
158+
`.lock.yml` compiled counterparts.
159+
160+
**Key Commands:**
161+
- `make gh-aw-compile` or `gh aw compile` — Compile workflow `.md` files to `.lock.yml`
162+
- `make gh-aw-run WORKFLOW=<name>` or `gh aw run <name>` — Run a specific workflow locally
163+
- `make gh-aw-status` — Check status of all agentic workflows
164+
- `make gh-aw-setup` — Configure secrets and engine for first-time setup
165+
166+
**Important Rules:**
167+
- **Never edit `.lock.yml` files directly** — Always edit the `.md` source and recompile
168+
- Workflows must be compiled before they can run in GitHub Actions
169+
- After editing any `.md` workflow, always run `make gh-aw-compile` and commit both files
170+
171+
**Available Starter Workflows:**
172+
- `daily-repo-status.md` — Daily repository health reports
173+
- `ci-doctor.md` — Automatic CI failure diagnosis
174+
- `issue-triage.md` — Automatic issue classification and labeling
175+
176+
For more details, see `docs/GH_AW.md`.
177+
154178
## Key Files
155179

156180
- `Makefile`: Main entry point for tasks.

.github/hooks/session-end.sh

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,31 @@ set -euo pipefail
66

77
echo "[copilot-hook] Running post-work quality gates..."
88

9+
# Format code
910
echo "[copilot-hook] Formatting code..."
10-
make fmt || {
11-
echo "[copilot-hook] WARNING: Formatting check failed."
11+
if ! make fmt; then
12+
echo "[copilot-hook] ❌ ERROR: Formatting check failed"
13+
echo "[copilot-hook] 💡 Remediation: Review the formatting errors above"
14+
echo "[copilot-hook] 💡 Common fixes:"
15+
echo "[copilot-hook] - Run 'make fmt' locally to see detailed errors"
16+
echo "[copilot-hook] - Check for syntax errors in modified files"
17+
echo "[copilot-hook] - Ensure all files follow project style guidelines"
1218
exit 1
13-
}
19+
fi
20+
echo "[copilot-hook] ✓ Code formatting passed"
1421

22+
# Run tests
1523
echo "[copilot-hook] Running tests..."
16-
make test || {
17-
echo "[copilot-hook] WARNING: Tests failed."
24+
if ! make test; then
25+
echo "[copilot-hook] ❌ ERROR: Tests failed"
26+
echo "[copilot-hook] 💡 Remediation: Review the test failures above"
27+
echo "[copilot-hook] 💡 Common fixes:"
28+
echo "[copilot-hook] - Run 'make test' locally to see detailed output"
29+
echo "[copilot-hook] - Check if new code broke existing functionality"
30+
echo "[copilot-hook] - Verify test assertions match expected behavior"
31+
echo "[copilot-hook] - Review test logs in _tests/ directory"
1832
exit 1
19-
}
33+
fi
34+
echo "[copilot-hook] ✓ Tests passed"
2035

21-
echo "[copilot-hook] All quality gates passed."
36+
echo "[copilot-hook] All quality gates passed"

.github/hooks/session-start.sh

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,29 @@ echo "[copilot-hook] Validating environment..."
99

1010
# Verify uv is available
1111
if ! command -v uv >/dev/null 2>&1 && [ ! -x "./bin/uv" ]; then
12-
echo "[copilot-hook] ERROR: uv not found. Run 'make install' to set up the environment."
12+
echo "[copilot-hook] ❌ ERROR: uv not found"
13+
echo "[copilot-hook] 💡 Remediation: Run 'make install' to set up the environment"
14+
echo "[copilot-hook] 💡 Alternative: Ensure uv is in PATH or ./bin/uv exists"
1315
exit 1
1416
fi
17+
echo "[copilot-hook] ✓ uv is available"
1518

1619
# Verify virtual environment exists
1720
if [ ! -d ".venv" ]; then
18-
echo "[copilot-hook] ERROR: .venv not found. Run 'make install' to set up the environment."
21+
echo "[copilot-hook] ❌ ERROR: .venv not found"
22+
echo "[copilot-hook] 💡 Remediation: Run 'make install' to create the virtual environment"
23+
echo "[copilot-hook] 💡 Details: The .venv directory should contain Python dependencies"
1924
exit 1
2025
fi
26+
echo "[copilot-hook] ✓ Virtual environment exists"
2127

2228
# Verify virtual environment is on PATH (activated via copilot-setup-steps.yml)
2329
if ! command -v python >/dev/null 2>&1 || [[ "$(command -v python)" != *".venv"* ]]; then
24-
echo "[copilot-hook] WARNING: .venv/bin is not on PATH. The agent may not use the correct Python."
30+
echo "[copilot-hook] ⚠️ WARNING: .venv/bin is not on PATH"
31+
echo "[copilot-hook] 💡 Note: The agent may not use the correct Python version"
32+
echo "[copilot-hook] 💡 Remediation: Ensure .venv/bin is added to PATH before running the agent"
33+
else
34+
echo "[copilot-hook] ✓ Virtual environment is activated"
2535
fi
2636

27-
echo "[copilot-hook] Environment validated successfully."
37+
echo "[copilot-hook] Environment validated successfully"

.github/workflows/rhiza_release.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,16 @@ jobs:
136136
TAG_VERSION=${TAG_VERSION#v}
137137
PROJECT_VERSION=$(uv version --short)
138138
139-
if [[ "$PROJECT_VERSION" != "$TAG_VERSION" ]]; then
140-
echo "::error::Version mismatch: pyproject.toml has '$PROJECT_VERSION' but tag is '$TAG_VERSION'"
139+
# Normalize tag version to PEP 440 format for comparison.
140+
# Tags use semver format (e.g., 0.11.1-beta.1) while uv version --short
141+
# returns PEP 440 normalized format (e.g., 0.11.1b1).
142+
NORMALIZED_TAG=$(uv run --with packaging --no-project python3 -c "from packaging.version import Version; print(Version('$TAG_VERSION'))")
143+
144+
if [[ "$PROJECT_VERSION" != "$NORMALIZED_TAG" ]]; then
145+
echo "::error::Version mismatch: pyproject.toml has '$PROJECT_VERSION' but tag is '$NORMALIZED_TAG' (from tag '$TAG_VERSION')"
141146
exit 1
142147
fi
143-
echo "Version verified: $PROJECT_VERSION matches tag"
148+
echo "Version verified: $PROJECT_VERSION matches tag (normalized: $NORMALIZED_TAG)"
144149
145150
- name: Detect buildable Python package
146151
id: buildable
@@ -174,8 +179,8 @@ jobs:
174179
run: |
175180
printf "[INFO] Generating SBOM in CycloneDX format...\n"
176181
# Note: uvx caches the tool environment, so the second call is fast
177-
uvx --from 'cyclonedx-bom>=7.0.0' cyclonedx-py environment --of JSON -o sbom.cdx.json
178-
uvx --from 'cyclonedx-bom>=7.0.0' cyclonedx-py environment --of XML -o sbom.cdx.xml
182+
uvx --from 'cyclonedx-bom>=7.0.0' cyclonedx-py environment --pyproject pyproject.toml --of JSON -o sbom.cdx.json
183+
uvx --from 'cyclonedx-bom>=7.0.0' cyclonedx-py environment --pyproject pyproject.toml --of XML -o sbom.cdx.xml
179184
printf "[INFO] SBOM generation complete\n"
180185
printf "Generated files:\n"
181186
ls -lh sbom.cdx.*

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ _marimushka
1616
_mkdocs
1717
_benchmarks
1818
_jupyter
19+
_site
1920

2021
# temp file used by Junie
2122
.output.txt
@@ -80,6 +81,9 @@ coverage.json
8081
.pytest_cache/
8182
cover/
8283

84+
# Security scanning baselines (regenerate as needed)
85+
.bandit-baseline.json
86+
8387
# Translations
8488
*.mo
8589
*.pot

.rhiza/.cfg.toml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tool.bumpversion]
2-
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(?:-(?P<release>[a-z]+)\\.(?P<pre_n>\\d+))?(?:\\+build\\.(?P<build_n>\\d+))?"
2+
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(?:[-]?(?P<release>[a-z]+)[\\.]?(?P<pre_n>\\d+))?(?:\\+build\\.(?P<build_n>\\d+))?"
33
serialize = ["{major}.{minor}.{patch}-{release}.{pre_n}+build.{build_n}", "{major}.{minor}.{patch}+build.{build_n}", "{major}.{minor}.{patch}-{release}.{pre_n}", "{major}.{minor}.{patch}"]
44
search = "{current_version}"
55
replace = "{new_version}"
@@ -21,7 +21,9 @@ optional_value = "prod"
2121
values = [
2222
"dev",
2323
"alpha",
24+
"a", # PEP 440 short form for alpha
2425
"beta",
26+
"b", # PEP 440 short form for beta
2527
"rc",
2628
"prod"
2729
]
@@ -30,8 +32,3 @@ values = [
3032
filename = "pyproject.toml"
3133
search = 'version = "{current_version}"'
3234
replace = 'version = "{new_version}"'
33-
34-
# [[tool.bumpversion.files]]
35-
# filename = ".rhiza/template-bundles.yml"
36-
# search = 'version: "{current_version}"'
37-
# replace = 'version: "{new_version}"'

.rhiza/.env

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
MARIMO_FOLDER=book/marimo/notebooks
22
SOURCE_FOLDER=src
3-
SCRIPTS_FOLDER=.rhiza/scripts
43

54
# Book-specific variables
65
BOOK_TITLE=Project Documentation

.rhiza/.rhiza-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.11.0
1+
0.11.2

.rhiza/docs/CONFIG.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Rhiza Configuration
22

3-
This directory contains platform-agnostic scripts and utilities for the repository that can be used by GitHub Actions, GitLab CI, or other CI/CD systems.
3+
This directory contains platform-agnostic utilities for the repository that can be used by GitHub Actions, GitLab CI, or other CI/CD systems.
44

55
## Important Documentation
66

@@ -14,8 +14,6 @@ This directory contains platform-agnostic scripts and utilities for the reposito
1414

1515
## Structure
1616

17-
- **scripts/** - Shell scripts for common tasks (book generation, release, etc.)
18-
- **scripts/customisations/** - Repository-specific customisation hooks
1917
- **utils/** - Python utilities for version management
2018

2119
GitHub-specific composite actions are located in `.github/rhiza/actions/`.

.rhiza/history

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Rhiza Template History
22
# This file lists all files managed by the Rhiza template.
33
# Template repository: jebel-quant/rhiza
4-
# Template branch: v0.8.0
4+
# Template branch: v0.8.3
55
#
66
# Files under template control:
77
.editorconfig
@@ -14,7 +14,9 @@
1414
.github/hooks/hooks.json
1515
.github/hooks/session-end.sh
1616
.github/hooks/session-start.sh
17+
.github/secret_scanning.yml
1718
.github/workflows/copilot-setup-steps.yml
19+
.github/workflows/renovate_rhiza_sync.yml
1820
.github/workflows/rhiza_benchmarks.yml
1921
.github/workflows/rhiza_book.yml
2022
.github/workflows/rhiza_ci.yml
@@ -48,6 +50,7 @@
4850
.rhiza/make.d/custom-env.mk
4951
.rhiza/make.d/custom-task.mk
5052
.rhiza/make.d/docs.mk
53+
.rhiza/make.d/gh-aw.mk
5154
.rhiza/make.d/github.mk
5255
.rhiza/make.d/marimo.mk
5356
.rhiza/make.d/quality.mk
@@ -59,10 +62,10 @@
5962
.rhiza/requirements/tests.txt
6063
.rhiza/requirements/tools.txt
6164
.rhiza/rhiza.mk
62-
.rhiza/scripts/.gitkeep
6365
.rhiza/templates/minibook/custom.html.jinja2
6466
.rhiza/tests/README.md
6567
.rhiza/tests/api/conftest.py
68+
.rhiza/tests/api/test_gh_aw_targets.py
6669
.rhiza/tests/api/test_github_targets.py
6770
.rhiza/tests/api/test_makefile_api.py
6871
.rhiza/tests/api/test_makefile_targets.py
@@ -75,6 +78,13 @@
7578
.rhiza/tests/integration/test_sbom.py
7679
.rhiza/tests/integration/test_test_mk.py
7780
.rhiza/tests/integration/test_virtual_env_unexport.py
81+
.rhiza/tests/security/test_security_patterns.py
82+
.rhiza/tests/shell/test_scripts.sh
83+
.rhiza/tests/stress/README.md
84+
.rhiza/tests/stress/__init__.py
85+
.rhiza/tests/stress/conftest.py
86+
.rhiza/tests/stress/test_git_stress.py
87+
.rhiza/tests/stress/test_makefile_stress.py
7888
.rhiza/tests/structure/test_lfs_structure.py
7989
.rhiza/tests/structure/test_project_layout.py
8090
.rhiza/tests/structure/test_requirements.py
@@ -89,6 +99,7 @@ CODE_OF_CONDUCT.md
8999
CONTRIBUTING.md
90100
LICENSE
91101
Makefile
102+
SECURITY.md
92103
book/marimo/notebooks/rhiza.py
93104
docs/ARCHITECTURE.md
94105
docs/BOOK.md
@@ -100,7 +111,6 @@ docs/QUICK_REFERENCE.md
100111
docs/SECURITY.md
101112
docs/TESTS.md
102113
pytest.ini
103-
renovate.json
104114
ruff.toml
105115
tests/benchmarks/conftest.py
106116
tests/benchmarks/test_benchmarks.py

0 commit comments

Comments
 (0)