check / check (push) Canceled after 0s
Split kernel::entry_flows into entry_movements and flows_of so the reversal-mirror proof fits CI; prove runs the fast harnesses, prove-slow the 8 slow ones (own job in scheduled CI), prove-all both. Laws in verification.md renumbered 1-31 with a table of all 55 harnesses. MCP docs checked against the 115 tools (about 60 fixes) with a test that every tool is documented; rules.md cross-references fixed; bookspec statuses and loader tightened; viewer notes wrap and accounts sort by code; STATUS.md says P3 is built, cutover pending. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
118 lines
3.4 KiB
YAML
118 lines
3.4 KiB
YAML
# 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
|
|
# The Kani harnesses too slow for prove's 30 minutes on four cores
|
|
# (justfile kani_slow; docs/verification.md), on a runner of their own.
|
|
prove-slow:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: jdx/mise-action@v2
|
|
- run: just prove-slow
|
|
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
|