ci: shard the weekly mutation runs; no viewer job; six import mutants caught
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
The first scheduled run (2026-10-19) failed four ways: the viewer's mutation job called the recipe retired in P2 slice 1 (owner, 2026-10-18: no mutation runs on the GUI); the core and MCP runs were stopped at GitHub's six hours; the import run missed six mutants. - Every mutation recipe takes a shard (k/n, default all of it); the workflow runs the core in 8 shards, the store in 4, the importers in 2, the MCP server in 16, each its own job with a 350-minute limit. - Test timeouts are three times each run's own baseline, never under the recipe's old fixed value, so slower runners don't report false timeouts. - The mutants-gui job is gone. - ledger-import: rule_marks_match_their_notes, asset_register_xlsx_headings_and_totals_rule and xlsx_missing_amounts_are_cells_only_on_ruled_rows catch the six (the tax-basis rule marks, a heading's alignment, the totals row's blank cells, and a blank amount cell only on ruled rows), each checked against its mutant by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
5 files changed
+219
-40
No files matched your search
@@ -1,4 +1,8 @@
|
||||
# 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:
|
||||
@@ -29,54 +33,77 @@ jobs:
|
||||
- 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
|
||||
- run: just mutants-store
|
||||
- run: just mutants ${{ matrix.shard }}/8
|
||||
- if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mutants
|
||||
path: |
|
||||
mutants.out
|
||||
mutants-store/mutants.out
|
||||
mutants-import:
|
||||
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-import
|
||||
- run: just mutants-config
|
||||
- if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mutants-import
|
||||
path: |
|
||||
mutants-import/mutants.out
|
||||
mutants-config/mutants.out
|
||||
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
|
||||
- run: just mutants-mcp ${{ matrix.shard }}/16
|
||||
- if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mutants-mcp
|
||||
name: mutants-mcp-${{ matrix.shard }}
|
||||
path: mutants-mcp/mutants.out
|
||||
mutants-gui:
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 350
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: jdx/mise-action@v2
|
||||
- run: sudo apt-get update && sudo apt-get install -y libxkbcommon-dev libgtk-3-dev
|
||||
- run: just mutants-gui
|
||||
- if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mutants-gui
|
||||
path: mutants-gui/mutants.out
|
||||
Reference in new issue
Block a user