Skip to content

Fuzz

Fuzz #1799

Workflow file for this run

name: Fuzz
concurrency:
# The group causes runs to queue instead of running in parallel.
group: fuzz
# This ensures each run builds on the previous run's corpus discoveries rather than losing them to
# failed compare-and-swap uploads.
cancel-in-progress: false
on:
schedule:
- cron: "0 */4 * * *" # every 4 hours
workflow_dispatch: { }
jobs:
# ============================================================================
# IO Fuzzer
# ============================================================================
io_fuzz:
name: "IO Fuzz"
uses: ./.github/workflows/run-fuzzer.yml
with:
fuzz_target: file_io
family: "m8g.large"
image: "ubuntu24-full-arm64"
secrets:
R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
report-io-fuzz-failures:
name: "Report IO Fuzz Failures"
needs: io_fuzz
if: always() && needs.io_fuzz.outputs.crashes_found == 'true'
permissions:
issues: write
contents: read
id-token: write
pull-requests: read
uses: ./.github/workflows/report-fuzz-crash.yml
with:
fuzz_target: file_io
crash_file: ${{ needs.io_fuzz.outputs.first_crash_name }}
artifact_url: ${{ needs.io_fuzz.outputs.artifact_url }}
artifact_name: file_io-crash-artifacts
logs_artifact_name: file_io-logs
branch: ${{ github.ref_name }}
commit: ${{ github.sha }}
secrets:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
gh_token: ${{ secrets.GITHUB_TOKEN }}
attempt-fix-io:
name: "Attempt Fix for IO Fuzz Crash"
needs: report-io-fuzz-failures
if: needs.report-io-fuzz-failures.outputs.issue_number != ''
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
uses: ./.github/workflows/fuzzer-fix-automation.yml
with:
issue_number: ${{ needs.report-io-fuzz-failures.outputs.issue_number }}
secrets: inherit
# ============================================================================
# Array Operations Fuzzer
# ============================================================================
ops_fuzz:
name: "Array Operations Fuzz"
uses: ./.github/workflows/run-fuzzer.yml
with:
fuzz_target: array_ops
family: "m8g.large"
image: "ubuntu24-full-arm64"
secrets:
R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
report-ops-fuzz-failures:
name: "Report Array Operations Fuzz Failures"
needs: ops_fuzz
if: always() && needs.ops_fuzz.outputs.crashes_found == 'true'
permissions:
issues: write
contents: read
id-token: write
pull-requests: read
uses: ./.github/workflows/report-fuzz-crash.yml
with:
fuzz_target: array_ops
crash_file: ${{ needs.ops_fuzz.outputs.first_crash_name }}
artifact_url: ${{ needs.ops_fuzz.outputs.artifact_url }}
artifact_name: array_ops-crash-artifacts
logs_artifact_name: array_ops-logs
branch: ${{ github.ref_name }}
commit: ${{ github.sha }}
secrets:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
gh_token: ${{ secrets.GITHUB_TOKEN }}
# ============================================================================
# Compress Roundtrip Fuzzer
# ============================================================================
compress_fuzz:
name: "Compress Roundtrip Fuzz"
uses: ./.github/workflows/run-fuzzer.yml
with:
fuzz_target: compress_roundtrip
family: "m8g.large"
image: "ubuntu24-full-arm64"
secrets:
R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
# ============================================================================
# GPU Compress Fuzzer (CUDA)
# ============================================================================
gpu_compress_fuzz:
name: "GPU Compress Fuzz"
uses: ./.github/workflows/run-fuzzer.yml
with:
fuzz_target: compress_gpu
family: "g4dn"
image: "ubuntu24-gpu-x64"
extra_features: "cuda"
secrets:
R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}
# report-gpu-compress-fuzz-failures:
# name: "Report GPU Compress Fuzz Failures"
# needs: gpu_compress_fuzz
# if: always() && needs.gpu_compress_fuzz.outputs.crashes_found == 'true'
# permissions:
# issues: write
# contents: read
# id-token: write
# pull-requests: read
# uses: ./.github/workflows/report-fuzz-crash.yml
# with:
# fuzz_target: compress_gpu
# crash_file: ${{ needs.gpu_compress_fuzz.outputs.first_crash_name }}
# artifact_url: ${{ needs.gpu_compress_fuzz.outputs.artifact_url }}
# artifact_name: compress_gpu-crash-artifacts
# logs_artifact_name: compress_gpu-logs
# branch: ${{ github.ref_name }}
# commit: ${{ github.sha }}
# secrets:
# claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# gh_token: ${{ secrets.GITHUB_TOKEN }}