Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
8e7bd7c
docs(solutions): a public package at 0.0.0 with no tag is owed a release
systemfsoftware-maker Oct 10, 2026
d8c5cb1
docs(plan): plan the mutation caller, blocked on systemfsoftware O1
systemfsoftware-maker Oct 10, 2026
11fc846
docs(plan): apply the root's doc-review rulings to the mutation caller
systemfsoftware-maker Oct 11, 2026
f9001a2
docs(readme): mark main's mutation testing blocked on systemfsoftware…
systemfsoftware-maker Oct 11, 2026
244e8e8
Merge remote-tracking branch 'origin/main' into feat/mutation
systemfsoftware-maker Oct 11, 2026
8c193c9
ci: set every job and step timeout to a uniform 60 minutes
systemfsoftware-maker Oct 11, 2026
6569cae
ci(mutation): call systemfsoftware's reusable mutation workflow at O1
systemfsoftware-maker Oct 11, 2026
7cd02ba
ci(mutation): temporarily trigger on feat/mutation to register the wo…
systemfsoftware-maker Oct 11, 2026
87b52af
ci(mutation): remove the temporary feat/mutation trigger
systemfsoftware-maker Oct 11, 2026
1ebd34e
build(deps): take the stryker family from stryker-js-effect 9e81669
systemfsoftware-maker Oct 11, 2026
8671277
docs(plan): record proof run 2 and the root ruling on its dry-run cost
systemfsoftware-maker Oct 11, 2026
7d3dbc6
docs: apply the root's rulings on PR #5's review
systemfsoftware-maker Oct 11, 2026
54eda8c
test(mutation): mutate only api-extractor's workflow files
systemfsoftware-maker Oct 12, 2026
48092e4
chore(changeset): record a none intent for api-extractor's mutate-set…
systemfsoftware-maker Oct 12, 2026
05f44c0
ci(mutation): restore PR2's mutate set and supersede the caller plan
systemfsoftware-maker Oct 12, 2026
b86386f
ci(mutation): run nightly and by dispatch on main, never per push
systemfsoftware-maker Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
sfs-deps:
name: systemfsoftware tarballs from the flake
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 60
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: cachix/install-nix-action@13d8dd58da0234aa297dedd986986ccb8e7f3e24 # v31.11.1
Expand All @@ -47,10 +47,10 @@ jobs:
actions: read
uses: systemfsoftware/systemfsoftware/.github/workflows/reusable-checks.yml@732f66a0c85819b2005f9e0930a595bc4de91ee1
with:
lanes: '[{"id": "lint", "name": "lint", "timeout-minutes": 10, "run": "pnpm lint"}, {"id": "typecheck", "name": "typecheck", "timeout-minutes": 10, "run": "pnpm typecheck"}, {"id": "build", "name": "build · attw", "timeout-minutes": 10, "run": "pnpm build && pnpm --filter @systemfsoftware/api-extractor attw"}]'
timeout-minutes: 10
lanes: '[{"id": "lint", "name": "lint", "timeout-minutes": 60, "run": "pnpm lint"}, {"id": "typecheck", "name": "typecheck", "timeout-minutes": 60, "run": "pnpm typecheck"}, {"id": "build", "name": "build · attw", "timeout-minutes": 60, "run": "pnpm build && pnpm --filter @systemfsoftware/api-extractor attw"}]'
timeout-minutes: 60
max-seconds: 600
plan-timeout-minutes: 10
plan-timeout-minutes: 60

host-bytes:
name: Output bytes on ${{ matrix.arch }}
Expand All @@ -63,7 +63,7 @@ jobs:
- arch: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
timeout-minutes: 10
timeout-minutes: 60
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
Expand All @@ -88,7 +88,7 @@ jobs:
name: Same bytes on every host
needs: host-bytes
runs-on: ubuntu-latest
timeout-minutes: 5
timeout-minutes: 60
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/mutation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Cost: at least 25 runner-min/day for the one full run a night; a push to main starts no
# run, so the 7-day merge rate (5 first-parent commits on main, 2026-10-06T06:00Z to
# 2026-10-13T06:00Z) does not price it. Each manual dispatch costs one more such run.
# Per run: 1,469 job-seconds over six jobs, run 38120830653, a floor: Stryker was killed
# 960 s in with 63 of 1354 mutants done. The proof run's measurement replaces it.
name: Mutation

on:
schedule:
- cron: "47 14 * * *"
workflow_dispatch:

concurrency:
group: mutation-${{ github.run_id }}
cancel-in-progress: false

permissions:
contents: read

jobs:
mutation:
if: github.ref == 'refs/heads/main'
permissions:
contents: read
actions: write
uses: systemfsoftware/systemfsoftware/.github/workflows/reusable-mutation.yml@02bf9653b1ca2b0a2951baf2743bb3f70d19fc77
with:
target-seconds: 480
max-jobs: 20
timeout-minutes: 60
report-timeout-minutes: 60
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
name: no release off main, so the run concludes success, not skipped
if: github.ref != 'refs/heads/main'
runs-on: ubuntu-latest
timeout-minutes: 1
timeout-minutes: 60
permissions: {}
steps:
- run: echo "Release writes only from refs/heads/main; $GITHUB_REF runs nothing."
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ verdict. Requirements and decisions: `docs/plans/2026-10-10-1146-feat-effect-api
- The family lint preset is never overridden locally: no rule set to `off`, ignore
pattern or disable comment (gate: review of `oxlint.config.ts` and source diffs). A rule
that forbids correct code is reported upstream as a preset defect.
- Mutation testing runs on `main` only.
- Mutation testing runs in CI only, on `main`: nightly, and by manual dispatch on `main`.
Never per push or on pull requests (gate: `.github/workflows/mutation.yml`'s triggers
and its `refs/heads/main` job condition).

## Commands

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The design and its requirements live in
| systemfsoftware and stryker-js-effect packages from the flake (`.sfs-deps`) | in this repository |
| Lint, typecheck, build and test on systemfsoftware's reusable checks; tsdown, vitest and lint presets | in this repository |
| Releases: changesets and GitHub Releases through pnpm-release-management | in this repository |
| Mutation testing on `main` | waits on systemfsoftware's reusable mutation workflow (#710) |
| Mutation testing on `main` | in this repository: systemfsoftware's reusable mutation workflow at `02bf965` (#735), nightly and by manual dispatch on `main` |

## The verdict

Expand Down
Loading
Loading