Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
376 changes: 0 additions & 376 deletions .claude/plan.md

This file was deleted.

445 changes: 0 additions & 445 deletions .claude/quality.md

This file was deleted.

8 changes: 8 additions & 0 deletions .devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Dev Container

VS Code Dev Container configuration for Rhiza.

- **`devcontainer.json`** — container definition, extensions, and VS Code settings
- **`bootstrap.sh`** — post-create setup script

Open in VS Code and select **Reopen in Container**, or use [GitHub Codespaces](https://codespaces.new/jebel-quant/rhiza).
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/rhiza_book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down Expand Up @@ -88,5 +88,5 @@ jobs:
# If PUBLISH_COMPANION_BOOK is not set, it defaults to allowing deployment
- name: Deploy to GitHub Pages
if: ${{ !github.event.repository.fork && (vars.PUBLISH_COMPANION_BOOK == 'true' || vars.PUBLISH_COMPANION_BOOK == '') }}
uses: actions/deploy-pages@v4.0.5 # Official GitHub Pages deployment action
uses: actions/deploy-pages@v5.0.0 # Official GitHub Pages deployment action
continue-on-error: true
20 changes: 9 additions & 11 deletions .github/workflows/rhiza_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ permissions:
actions: read

on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
push

jobs:
generate-matrix:
Expand All @@ -32,13 +29,13 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
with:
token: ${{ secrets.GH_PAT }}

- id: versions
env:
UV_EXTRA_INDEX_URL: ${{ secrets.UV_EXTRA_INDEX_URL }}
Expand All @@ -53,10 +50,11 @@ jobs:

test:
needs: generate-matrix
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: false

steps:
Expand All @@ -68,7 +66,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"
python-version: ${{ matrix.python-version }}

- name: Configure git auth for private packages
Expand All @@ -83,7 +81,7 @@ jobs:
make test

- name: Upload coverage report
if: matrix.python-version == '3.12'
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v7
with:
name: coverage-report
Expand All @@ -100,7 +98,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down Expand Up @@ -128,7 +126,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Download coverage report
id: download-coverage
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_dep_compat_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down
48 changes: 0 additions & 48 deletions .github/workflows/rhiza_deptry.yml

This file was deleted.

45 changes: 0 additions & 45 deletions .github/workflows/rhiza_license.yml

This file was deleted.

44 changes: 44 additions & 0 deletions .github/workflows/rhiza_link_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
# Workflow: Link Check
#
# Purpose: This workflow checks that all hyperlinks in README.md are valid
# and not returning errors. It uses the lychee link checker.
#
# Trigger: This workflow runs on push/PR when README.md changes and on a
# weekly schedule every Monday at 08:00 UTC.

name: "(RHIZA) LINK CHECK"

# Permissions: Only read access to repository contents is needed
permissions:
contents: read

on:
push:
branches: [main]
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

This workflow’s push trigger is limited to branches: [main], but other Rhiza workflows consistently support both main and master (e.g., .github/workflows/rhiza_validate.yml:7-10, .github/workflows/rhiza_ci.yml:17-20). Consider changing this to branches: [ main, master ] for consistency and compatibility with repos still using master.

Suggested change
branches: [main]
branches: [ main, master ]

Copilot uses AI. Check for mistakes.
paths: [README.md]
pull_request:
paths: [README.md]
schedule:
- cron: "0 8 * * 1" # Every Monday at 08:00 UTC
workflow_dispatch:

jobs:
link-check:
name: Check links in README.md
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6.0.2

- name: Check links in README.md
uses: lycheeverse/lychee-action@v2
with:
args: >-
--verbose
--no-progress
--accept 200,206,429
README.md
fail: true
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_marimo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
- name: Install uv
uses: astral-sh/setup-uv@v7.6.0
with:
version: "0.10.12"
version: "0.11.2"

- name: Configure git auth for private packages
uses: ./.github/actions/configure-git-auth
Expand Down
108 changes: 108 additions & 0 deletions .github/workflows/rhiza_paper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
# Workflow: Paper
#
# Purpose: Compile the LaTeX paper (paper/*.tex) to a PDF and publish
# it as a downloadable workflow artifact.
# Only active when a *.tex file exists under paper/.
#
# Trigger: On push and pull requests to main/master branches, or whenever
# files under paper/ change. Also supports manual dispatch.

name: "(RHIZA) PAPER"

on:
push:
branches: [ main, master ]
paths:
- 'paper/**'
- '.github/workflows/rhiza_paper.yml'
pull_request:
branches: [ main, master ]
paths:
- 'paper/**'
- '.github/workflows/rhiza_paper.yml'
workflow_dispatch:

permissions:
contents: write

jobs:
build-pdf:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v6.0.2

- name: Detect paper/*.tex presence
id: check_tex
run: |
if compgen -G "paper/*.tex" > /dev/null 2>&1; then
echo "tex_present=true" >> "$GITHUB_OUTPUT"
else
echo "tex_present=false" >> "$GITHUB_OUTPUT"
fi

- name: Skip notice (no paper/*.tex present)
if: ${{ steps.check_tex.outputs.tex_present != 'true' }}
run: echo "No paper/*.tex found; skipping LaTeX compilation."

- name: Install TeX Live
if: ${{ steps.check_tex.outputs.tex_present == 'true' }}
run: |
sudo apt-get update
sudo apt-get install -y \
texlive-latex-extra \
texlive-fonts-recommended \
texlive-bibtex-extra \
latexmk

- name: Detect paper entry point
id: detect_tex
if: ${{ steps.check_tex.outputs.tex_present == 'true' }}
run: |
# Prefer basanos.tex if it exists; otherwise pick the first *.tex file found.
if [ -f paper/basanos.tex ]; then
tex_file="basanos.tex"
else
tex_file=$(find paper -maxdepth 1 -name "*.tex" | head -1 | xargs basename)
fi
pdf_file="${tex_file%.tex}.pdf"
echo "tex_file=${tex_file}" >> "$GITHUB_OUTPUT"
echo "pdf_file=${pdf_file}" >> "$GITHUB_OUTPUT"

- name: Compile LaTeX document
if: ${{ steps.check_tex.outputs.tex_present == 'true' }}
working-directory: paper
run: |
latexmk -pdf -interaction=nonstopmode "${{ steps.detect_tex.outputs.tex_file }}"

- name: Upload PDF artifact
if: ${{ steps.check_tex.outputs.tex_present == 'true' }}
uses: actions/upload-artifact@v7.0.0
with:
name: ${{ steps.detect_tex.outputs.pdf_file }}
path: paper/${{ steps.detect_tex.outputs.pdf_file }}
retention-days: 30

- name: Push PDF to paper branch
if: ${{ steps.check_tex.outputs.tex_present == 'true' && github.event_name != 'pull_request' }}
run: |
pdf_file="${{ steps.detect_tex.outputs.pdf_file }}"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
cp "paper/${pdf_file}" "/tmp/${pdf_file}"
git fetch origin paper 2>/dev/null || true
if git show-ref --verify --quiet refs/remotes/origin/paper; then
git checkout -b paper origin/paper
else
git checkout --orphan paper
git rm -rf --quiet . || true
git reset
fi
cp "/tmp/${pdf_file}" "${pdf_file}"
git add "${pdf_file}"
git diff --staged --quiet || git commit -m "Update ${pdf_file} [skip ci]"
git push origin paper
Loading
Loading