Zero-to-Receipt showcase, planning-state hygiene, and Windows fork fi… #269
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: Tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| optimizer-proof: | |
| name: optimizer proof and public beacon | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Verify optimizer contracts and frozen request | |
| run: node scripts/test-optimizer.js | |
| - name: Install pinned official drand verifier | |
| if: ${{ hashFiles('benchmarks/optimizer-proof/external-selection.json') != '' }} | |
| run: npm install --no-save --package-lock=false --ignore-scripts drand-client@1.4.2 | |
| - name: Verify committed beacon BLS signature | |
| if: ${{ hashFiles('benchmarks/optimizer-proof/external-selection.json') != '' }} | |
| run: node scripts/optimizer-drand-verify.js | |
| - name: Verify committed optimizer proof bundle | |
| if: ${{ hashFiles('benchmarks/optimizer-proof/proof-bundle/manifest.json') != '' }} | |
| run: node scripts/optimizer-proof-bundle.js verify benchmarks/optimizer-proof/proof-bundle | |
| citadel-action-consumer: | |
| name: reusable Citadel verification action | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Consume Citadel verification action | |
| id: citadel | |
| uses: ./ | |
| with: | |
| workflow: verify-change | |
| evidence-path: .planning/action-evidence | |
| strict: "true" | |
| working-directory: "." | |
| repository-memory: | |
| name: repository memory on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Verify cross-clone identity, SQLite persistence, and safe restore | |
| run: node scripts/test-repository-memory.js | |
| test: | |
| name: node ${{ matrix.node }} on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| # Keep 18/20 until branch protection migrates to the supported 22/24 | |
| # check names. The public and release contract is Node 22+. | |
| node: [22, 24] | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: Run strict verification suite | |
| run: node scripts/test-all.js --strict | |
| golden-path-evidence: | |
| name: golden path on ${{ matrix.slug }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| slug: linux | |
| - os: macos-latest | |
| slug: macos | |
| - os: windows-latest | |
| slug: windows | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Collect five Claude and five Codex fixture journeys | |
| run: node scripts/golden-path-matrix.js --fixture scripts/fixtures/golden-path/minimal-node.json --runtime both --repeat 5 --output artifacts/golden-path-matrix-${{ matrix.slug }}.json | |
| - name: Upload platform evidence | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: golden-path-${{ matrix.slug }} | |
| path: artifacts/golden-path-matrix-${{ matrix.slug }}.json | |
| if-no-files-found: error | |
| retention-days: 30 | |
| golden-path-matrix: | |
| name: complete golden-path matrix | |
| needs: golden-path-evidence | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Download platform evidence | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| pattern: golden-path-* | |
| path: artifacts | |
| merge-multiple: true | |
| - name: Enforce the complete 30-run grid | |
| run: node scripts/golden-path-matrix.js --merge artifacts/golden-path-matrix-windows.json,artifacts/golden-path-matrix-linux.json,artifacts/golden-path-matrix-macos.json --output artifacts/golden-path-matrix-complete.json --require-complete | |
| - name: Upload complete matrix | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: golden-path-complete | |
| path: artifacts/golden-path-matrix-complete.json | |
| if-no-files-found: error | |
| retention-days: 30 |