name: lane-shas # Verify that every ADR-0092..0099 lane produces its pinned SHA-256 # report. A failing job means a lane's deterministic output changed # without an explicit ADR-tracked pin update via: # # python scripts/verify_lane_shas.py --update # # Single source of truth for the pinned values is scripts/verify_lane_shas.py. # # PR path filter: skip the multi-lane wall-clock cost when the change cannot # affect pin bytes (e.g. docs-only, pure physics off the demo path). Main # still always verifies after merge. on: push: branches: [main] pull_request: branches: [main] paths: - "scripts/verify_lane_shas.py" - "scripts/generate_claims.py" - "CLAIMS.md" - "evals/**" - "demos/**" - "core/demos/**" - "chat/**" - "generate/**" - "packs/**" - "teaching/**" - "vault/**" - "algebra/**" - "core/physics/**" - "core/cognition/**" - "core/capability/**" - "pyproject.toml" - ".github/workflows/lane-shas.yml" permissions: contents: read concurrency: group: lane-shas-${{ github.ref }} cancel-in-progress: true jobs: verify: name: verify pinned lane SHAs runs-on: ubuntu-latest timeout-minutes: 20 steps: - name: checkout uses: actions/checkout@v4 with: fetch-depth: 1 # setup-uv (not actions/setup-python) provisions Python on the aarch64 # self-hosted runner; actions/setup-python has no arm64 build for the # pinned 3.12.13. Matches smoke.yml / full-pytest.yml. - name: set up uv uses: astral-sh/setup-uv@v5 with: python-version: '3.12.13' enable-cache: true - name: install dependencies run: | uv pip install -e . pyyaml pytest - name: verify lane SHAs env: PYTHONPATH: ${{ github.workspace }} UV_LINK_MODE: copy # public_demo wall-clock is soft by default (see evals/public_demo/runner.py). # Do not set CORE_SHOWCASE_HARD_BUDGET here — cold Act runners exceed 60s. # Content cases (claims, determinism, pure composition) remain hard gates. run: | uv run python scripts/verify_lane_shas.py - name: verify CLAIMS.md is current env: PYTHONPATH: ${{ github.workspace }} run: | uv run python scripts/generate_claims.py --check - name: emit machine-readable report (on failure) if: failure() env: PYTHONPATH: ${{ github.workspace }} run: | uv run python scripts/verify_lane_shas.py --json || true