Skip to content

feat: upload the smoke report dir so per-script timings persist #326

feat: upload the smoke report dir so per-script timings persist

feat: upload the smoke report dir so per-script timings persist #326

Workflow file for this run

name: Heart Tests
# Heart's own unit suite — the gate's self-test. This answers "is Heart's
# measuring logic (readiness.compute, ci_status.rollup, the classifiers …)
# correct?", which nothing else runs automatically: the health agent runs
# Heart's checks *against other repos*, never Heart's own tests.
#
# pytest plus ONE drift leg. The suite must not run `pyauto-heart tick`/
# `readiness` or any health check — those need live repo checkouts + network
# and are the scheduled health agent's job, not a PR gate. The suite is stdlib
# + PyYAML only, so it stays fast and flake-free. The one non-pytest step is
# the tenant-firewall gate (PyAutoMind#198): every firewall finding to date
# merged through a green PR because no PR CI ran the check, so the leg an
# organ PR can cause is verified here, in the PR that authors it.
#
# TWO repos are checked out on purpose: the firewall gate is
# `PyAutoMind/scripts/repos_sync.py --only "tenant firewall (organ code)"`,
# which reads the body map from a PyAutoMind sibling — the same workspace
# layout a local checkout has. `--only` keeps Mind-side legs (map blocks,
# registries) from reddening Heart PRs on drift Heart cannot cause; organs not
# checked out (Brain, Hands) are skipped by the check itself, so this gates
# exactly Heart. Both repos are public — the default GITHUB_TOKEN suffices.
# One run per commit: PR events carry the CI; pushes only build main
# (Heart's ws_ci gate reads main-HEAD conclusions). Superseded runs are
# cancelled on PR refs only — a cancelled main run would read as red CI
# (cancelled is in Heart's FAILURE_CONCLUSIONS).
on:
push:
branches: [main]
pull_request:
concurrency:
group: heart-tests-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
pytest:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13"]
steps:
- name: Checkout PyAutoHeart
uses: actions/checkout@v4
with:
path: PyAutoHeart
# The body map + firewall checker. Pinned to main: this gate tests
# Heart against the CURRENT organism identity, the same pairing a local
# workspace has.
- name: Checkout PyAutoMind (the body map — the firewall gate reads it)
uses: actions/checkout@v4
with:
repository: PyAutoLabs/PyAutoMind
path: PyAutoMind
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: PyAutoHeart/pyproject.toml
- name: Install (PyYAML core + pytest dev extra)
working-directory: PyAutoHeart
run: pip install -e ".[dev]"
- name: Run tests
working-directory: PyAutoHeart
run: pytest tests/ -q
- name: Tenant firewall (instance facts stay in declared config surfaces)
run: >
python3 PyAutoMind/scripts/repos_sync.py --check
--only "tenant firewall (organ code)"
--root "$GITHUB_WORKSPACE"