Skip to content

Finance App 7

Finance App 7 #404

Workflow file for this run

name: Stack Matrix
# Runs the full 13-stack generate → install → lint → typecheck → pytest
# pipeline. This is the slow tier — gated off the default ``ci.yml`` run so
# day-to-day PRs stay fast, but it fires on any PR touching template or
# core-engine code (where drift lands) and nightly to catch anything that
# merged without touching a gated path.
on:
pull_request:
branches: [ main ]
paths:
- 'aegis/templates/**'
- 'aegis/core/**'
- 'aegis/cli/**'
- 'tests/cli/**'
- 'pyproject.toml'
- 'uv.lock'
- '.github/workflows/stack-matrix.yml'
schedule:
# 07:00 UTC daily — catches drift merged via PRs that didn't match the
# path filter above (e.g. docs-only PRs that inadvertently move a
# template Jinja file).
- cron: '0 7 * * *'
workflow_dispatch: {}
concurrency:
group: stack-matrix-${{ github.ref }}
cancel-in-progress: true
env:
# Deliberately NO UV_PYTHON here. This workflow generates and installs real
# stacks, and generated projects require Python >=3.13. A global UV_PYTHON
# would force their `uv sync` onto the tool's 3.11 and fail with
# "incompatible with the project's Python requirement: >=3.13". Each project
# must resolve its own interpreter.
UV_LINK_MODE: "copy" # Avoid broken cache hardlinks (partial-install errors)
jobs:
stack-matrix:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
# ubuntu-latest ships ~14 GB free on /, but this job generates every
# stack combination and `uv sync`s each into its own .venv (UV_LINK_MODE
# copy, so no hardlink dedup) — they coexist for the whole run and can
# exhaust the disk (the runner then can't even write its own _diag logs).
# Reclaim ~15 GB by dropping preinstalled toolchains this Python repo
# never uses. df before/after so the logs show the headroom.
- name: Free disk space
run: |
echo "== disk before =="; df -h /
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
echo "== disk after =="; df -h /
- uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Set up Python
run: uv python install 3.11
- name: Install dependencies
run: uv sync --all-extras
- name: Run full stack matrix
run: make test-stacks-full