feat: upload the smoke report dir so per-script timings persist #326
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" |