# Weekly, and on demand: the slow layers (docs/testing.md). # # Mutation testing is split into shards (`just mutants-* k/n`), each its # own job, so every job ends well inside GitHub's six hours. The viewer has # no mutation job (owner, 2026-10-18). name: scheduled on: schedule: - cron: "17 6 * * 1" workflow_dispatch: jobs: prove: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just prove oracle: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just oracle fuzz: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: target: [fuzz_journal_line, fuzz_entry_validate, fuzz_op_sequence, fuzz_core_serde, fuzz_store_open, fuzz_store_replay, fuzz_settings_replay, fuzz_import_csv, fuzz_config_parse] steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just fuzz ${{ matrix.target }} 600 mutants: runs-on: ubuntu-24.04 timeout-minutes: 350 strategy: fail-fast: false matrix: shard: [0, 1, 2, 3, 4, 5, 6, 7] steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just mutants ${{ matrix.shard }}/8 - if: always() uses: actions/upload-artifact@v4 with: name: mutants-core-${{ matrix.shard }} path: mutants.out mutants-store: runs-on: ubuntu-24.04 timeout-minutes: 350 strategy: fail-fast: false matrix: shard: [0, 1, 2, 3] steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just mutants-store ${{ matrix.shard }}/4 - if: always() uses: actions/upload-artifact@v4 with: name: mutants-store-${{ matrix.shard }} path: mutants-store/mutants.out mutants-import: runs-on: ubuntu-24.04 timeout-minutes: 350 strategy: fail-fast: false matrix: shard: [0, 1] steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just mutants-import ${{ matrix.shard }}/2 - if: always() uses: actions/upload-artifact@v4 with: name: mutants-import-${{ matrix.shard }} path: mutants-import/mutants.out mutants-config: runs-on: ubuntu-24.04 timeout-minutes: 350 steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just mutants-config - if: always() uses: actions/upload-artifact@v4 with: name: mutants-config path: mutants-config/mutants.out mutants-mcp: runs-on: ubuntu-24.04 timeout-minutes: 350 strategy: fail-fast: false matrix: shard: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] steps: - uses: actions/checkout@v4 - uses: jdx/mise-action@v2 - run: just mutants-mcp ${{ matrix.shard }}/16 - if: always() uses: actions/upload-artifact@v4 with: name: mutants-mcp-${{ matrix.shard }} path: mutants-mcp/mutants.out