core/.github/workflows/nightly-full-pytest.yml
Shay 576c2e13e3
Some checks failed
smoke / smoke (-m "not quarantine") (pull_request) Failing after 1m13s
lane-shas / verify pinned lane SHAs (pull_request) Failing after 16m56s
ci: install locked dependency universe in all workflows (uv sync --locked)
Root cause of the simultaneous lane-shas failures on PRs #46 and #47:
workflows installed with unlocked 'uv pip install -e .' against floor-only
specs (numpy>=1.26, ...) while the repo maintains uv.lock — so a PyPI
release landing between runs shifts the runner's resolved set, and the
byte-exact lane SHA pins move with it. Timeline: main lane run green at
23:40Z, both PR runs (diffs no lane executes) red after 00:02Z; the
identical trees verify 9/9 locally against the locked venv, and
'uv lock --check' is clean.

All six workflows now 'uv sync --locked' (--extra dev where [dev] was
installed) — CI tests the locked universe, so lane pins can only move when
code moves. Locked-sync also fails loudly on a stale lock instead of
silently resolving fresh.

Self-validating: this PR's own lane-shas run uses this branch's workflow.

[Verification]: smoke suite passed locally (175 passed); lane repro on the
failing PRs' tree: 9/9 pinned SHAs; uv lock --check clean.
2026-07-15 19:48:18 -07:00

72 lines
2.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: nightly-full-pytest
# Nightly FULL lane — complete non-quarantine suite including the slow registry.
#
# Marker: -m "not quarantine"
# Includes soak / bench / proof / register-matrix (SLOW_FILES + SLOW_TESTS).
# Intentionally off the PR and post-merge critical path so a single 2-vCPU
# Act runner is not held for 12h after every main push (see docs/ci-optimization.md).
#
# Risk owned here: a main merge can break slow tests until the next nightly
# (or a manual workflow_dispatch). Treat red nightlies as release-blocking
# debt; re-run via Actions → nightly-full-pytest → Run workflow after fixes.
#
# See docs/testing-lanes.md for the full CI policy.
on:
schedule:
# 02:00 UTC daily — off peak for human PR iteration.
- cron: '0 2 * * *'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: nightly-full-pytest
cancel-in-progress: false
jobs:
pytest:
name: full pytest (-m "not quarantine" -n 2)
runs-on: ubuntu-latest
# Full suite parallel floor includes ~16 min phase2 fixture; thrashing on a
# 2-vCPU Act host has been observed well past 60 min. Prefer a red timeout
# only after a genuine hang, not under normal soak load.
timeout-minutes: 120
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: main
- name: set up uv
uses: astral-sh/setup-uv@v5
with:
python-version: '3.12.13'
enable-cache: true
- name: install dependencies
run: |
uv sync --locked --extra dev
- name: pytest (parallel, full suite, quarantine excluded)
env:
PYTHONPATH: ${{ github.workspace }}
CORE_SHOWCASE_SKIP_BUDGET: "1"
run: |
uv run pytest -m "not quarantine" -n 2 --tb=short -q --maxfail=10
- name: report quarantine size (informational)
if: always()
env:
PYTHONPATH: ${{ github.workspace }}
run: |
uv run python -c "
import sys
sys.path.insert(0, '.')
from conftest import QUARANTINE
print(f'::notice title=Quarantine size::{len(QUARANTINE)} tests currently quarantined. Goal: shrink this number.')
"