CleanBench full suite #24
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: CleanBench full suite | |
| on: | |
| schedule: | |
| - cron: "30 4 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| cleanbench: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| permissions: | |
| issues: write | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install | |
| run: | | |
| python -m pip install -U pip | |
| pip install -e ".[bench,cli]" | |
| - name: Restore perf baseline | |
| uses: actions/cache@v4 | |
| with: | |
| path: benchmarks/cleanbench/results/baseline_v1.json | |
| key: cleanbench-baseline-${{ runner.os }}-v1 | |
| - name: Full CleanBench T1-T5 (release gates + baselines) | |
| run: python -m benchmarks.cleanbench --tracks T1,T2,T3,T4,T5 --report site --reproduce-headline | |
| - name: Verify committed result is reproducible | |
| if: always() | |
| run: python -m benchmarks.cleanbench --verify-results benchmarks/cleanbench/results/latest.json | |
| - name: Audit README trust claims | |
| if: always() | |
| run: python -m benchmarks.cleanbench.reproducibility audit-readme | |
| - name: Upload results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cleanbench-results | |
| path: benchmarks/cleanbench/results/latest.* | |
| retention-days: 30 | |
| - name: Open/refresh alert issue on failure | |
| if: failure() | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const title = "nightly CleanBench suite failing"; | |
| const body = `The scheduled CleanBench full suite failed.\n\n` + | |
| `Run: ${context.serverUrl}/${context.repo.owner}/${context.repo.repo}` + | |
| `/actions/runs/${context.runId}`; | |
| const open = await github.rest.issues.listForRepo({ | |
| ...context.repo, state: "open", labels: "nightly-failure", | |
| }); | |
| const existing = open.data.find(i => i.title === title); | |
| if (existing) { | |
| await github.rest.issues.createComment({ | |
| ...context.repo, issue_number: existing.number, body, | |
| }); | |
| } else { | |
| await github.rest.issues.create({ | |
| ...context.repo, title, body, labels: ["nightly-failure"], | |
| }); | |
| } |