Repository navigation
ci(repo): run the mutation lane on pull requests and gate new survivors - #156
Merged
Merged
Conversation
A pull request runs the same preflight and sharded incremental run against main's restored verdict cache, saves no cache and records no timings, then gates its merged report against the survivor baseline main published. A run that evaluated no mutants says so in a notice instead of reading as a pass Verdict-Semantics: unchanged
systemfsoftware-maker
added this pull request to stack #152
October 2, 2026 03:52
This was referenced Oct 2, 2026
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
This stack's own pull request ran 7465 invalidated stryker-js mutants in one job planned at 9m43s and hit the 1800s cap: the timing record held main's reuse-shrunk duration. Each entry now carries the reuse line's ran and reused counts, the record scales a run to the full mutant set and keeps its previous value when nothing ran, and shards download the preflight coverage only when the preflight published some Verdict-Semantics: unchanged
ryanleecode
removed this pull request from stack #152
October 2, 2026 17:36
ryanleecode
added this pull request to stack #157
October 2, 2026 17:36
ryanleecode
merged commit Oct 2, 2026
950d2fb
into
feat/agent-ready-failure-diagnostics
16 of 17 checks passed
This was referenced Oct 2, 2026
ryanleecode
approved these changes
Oct 2, 2026
ryanleecode
left a comment
Contributor
There was a problem hiding this comment.
Reviewed by the merge conductor as part of the diagnostics stack. CI green on this head except where noted in the stack summary (macOS timeouts on #151 are flaky: the same code is green on macOS in #155 and #156; the #156 stryker-js mutation shard times out until main records its first full-cost timing, as this PR's description says). Merging into feat/agent-ready-failure-diagnostics with a merge commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer 8 of the agent-ready failure diagnostics stack (
docs/plans/2026-10-01-2306-feat-agent-ready-failure-diagnostics-plan.md, unit U18; R23-R26, AE2, AE4, AE6, F2, F3).What changes
mutation.ymlnow also runs onpull_request, with the same plan, preflight and sharded matrix asmain. A pull request restoresmain's verdict cache read-only: it saves no cache, records no timings and publishes no baseline. It therefore evaluates only the mutants whose reused verdicts its change invalidates (R24).mutation-survivor-baselinefrommainand runsstryker gate --baselineon the merged report. A survivor absent from the baseline fails the job with the gate's record (R25). No step passes--update-baselineon a pull request, so no automated actor accepts a survivor (R26).Deviation from the plan
KTD16 runs a pull request's mutants unsharded and shards only if a replay of the largest recent PR exceeds the 15-minute target. This layer reuses
main's timing-based plan for every PR instead, which means:mainalready uses.Evidence
pnpm check:cipasses and actionlint is clean. This PR's own run of the Mutation workflow is the in-PR proof: preflight, shards, merge and gate. Untilmainpublishes its first baseline, the gate step warns that it was skipped rather than failing.In-PR run (Mutation run 36962080291)
mainhas no baseline yet.main's reuse-shrunk duration. This stack invalidates most stryker-js verdicts, so the shard hit the 1800 s cap. Its summary rendered theJobTimedOutrecord with no infrastructure guesswork.ci(repo): plan mutation shards from the full mutant set's cost):ranandreused.mergeRecordscales a run to the full mutant set, and keeps the previous value when nothing ran.##[error]line) when no coverage was published.mainrecords a timing with the new fields, PR plans still read the old record, so this PR's own stryker-js shard can time out again.