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.

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

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

      - name: set up python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
          cache: 'pip'

      - name: install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -e . pyyaml pytest

      - name: verify lane SHAs
        env:
          PYTHONPATH: ${{ github.workspace }}
        run: |
          python scripts/verify_lane_shas.py

      - name: verify CLAIMS.md is current
        env:
          PYTHONPATH: ${{ github.workspace }}
        run: |
          python scripts/generate_claims.py --check

      - name: emit machine-readable report (on failure)
        if: failure()
        env:
          PYTHONPATH: ${{ github.workspace }}
        run: |
          python scripts/verify_lane_shas.py --json || true
