diff --git a/.github/workflows/fail-fast-spec-validation.yml b/.github/workflows/fail-fast-spec-validation.yml index 0cef999e8..1422b030a 100644 --- a/.github/workflows/fail-fast-spec-validation.yml +++ b/.github/workflows/fail-fast-spec-validation.yml @@ -1,26 +1,9 @@ name: Fail-Fast Spec Validation on: - pull_request: - paths: - - 'spec/**' - - '.ae/**' - push: - branches: [main] - paths: - - 'spec/**' - - '.ae/**' - - 'artifacts/**' - - 'schema/**' - - 'docs/schemas/**' - - 'specs/formal/**' - - 'packages/spec-compiler/**' - - 'src/cli/**' - - 'package.json' - - 'pnpm-lock.yaml' - - '.github/workflows/fail-fast-spec-validation.yml' workflow_call: # Allow this workflow to be called by other workflows + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} @@ -198,10 +181,3 @@ jobs: AE_IR_SIZE=$(du -h .ae/ae-ir.json | cut -f1) printf "%s\n" "::notice::Generated AE-IR size: $AE_IR_SIZE" fi - - # Call dependent workflows only after validation passes - downstream-validation: - needs: fail-fast-validation - if: success() - uses: ./.github/workflows/spec-validation.yml - secrets: inherit diff --git a/.github/workflows/spec-check.yml b/.github/workflows/spec-check.yml index 83be33541..85b2dbf33 100644 --- a/.github/workflows/spec-check.yml +++ b/.github/workflows/spec-check.yml @@ -1,12 +1,7 @@ name: Spec Check on: - pull_request: - paths: - - 'specs/formal/**' - - '.github/workflows/spec-check.yml' - - 'scripts/formal/verify-tla.mjs' - - 'package.json' + workflow_call: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} diff --git a/.github/workflows/spec-validation.yml b/.github/workflows/spec-validation.yml index 691b662bb..8d0b4ae7d 100644 --- a/.github/workflows/spec-validation.yml +++ b/.github/workflows/spec-validation.yml @@ -8,8 +8,15 @@ on: - 'schema/**' - 'docs/schemas/**' - 'specs/formal/**' + - 'packages/spec-compiler/**' + - 'src/cli/**' + - 'scripts/formal/verify-tla.mjs' + - 'package.json' + - 'pnpm-lock.yaml' - '.github/workflows/spec-validation.yml' - '.github/workflows/validate-artifacts-ajv.yml' + - '.github/workflows/fail-fast-spec-validation.yml' + - '.github/workflows/spec-check.yml' push: branches: [main, develop] paths: @@ -19,8 +26,16 @@ on: - 'schema/**' - 'docs/schemas/**' - 'specs/formal/**' + - 'packages/spec-compiler/**' + - 'src/cli/**' + - 'scripts/formal/verify-tla.mjs' + - 'package.json' + - 'pnpm-lock.yaml' - '.github/workflows/spec-validation.yml' - '.github/workflows/validate-artifacts-ajv.yml' + - '.github/workflows/fail-fast-spec-validation.yml' + - '.github/workflows/spec-check.yml' + workflow_dispatch: workflow_call: # Allow other workflows to call this validation @@ -33,7 +48,20 @@ permissions: pull-requests: write jobs: + fail-fast-spec: + name: Fail-Fast Spec Validation + if: github.event_name != 'push' || github.ref == 'refs/heads/main' + uses: ./.github/workflows/fail-fast-spec-validation.yml + + spec-check: + name: Spec Check + needs: fail-fast-spec + if: (github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch') && needs.fail-fast-spec.result != 'failure' + uses: ./.github/workflows/spec-check.yml + spec-validation: + needs: fail-fast-spec + if: always() && needs.fail-fast-spec.result != 'failure' runs-on: ubuntu-latest timeout-minutes: 10 @@ -221,7 +249,8 @@ jobs: printf "%s\n" "See documentation for AE-Spec format guidelines." validate-artifacts: - if: github.event_name == 'pull_request' + needs: fail-fast-spec + if: always() && needs.fail-fast-spec.result != 'failure' && github.event_name == 'pull_request' uses: ./.github/workflows/validate-artifacts-ajv.yml with: strict: ${{ contains(github.event.pull_request.labels.*.name, 'enforce-artifacts') }}