Repository navigation
[Feat] Post surviving mutants as a PR comment - #2293
Conversation
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one): 1
Please check the settings in the CodeRabbit UI or the
|
|
No new code issues found. See session
Reviewed d29a17f |
Review statusThis PR was opened by an automated account. A human maintainer must verify the change intent, provenance, and validation before merging. Current step: The required review sequence passed. Remaining merge requirements apply. Review-state labels are managed by this workflow; do not edit them manually. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
The only conflict was the gate step env block in .github/workflows/mutation-testing.yml. Both sides were kept: PR_BASE_REF (this branch, it tells the gate which branch the unit targets) and PR_HEAD_SHA (upstream Zoo-Code-Org#2293, the pull request head used as provenance for the mutation PR comment). The run block now takes the event value when it is present and derives the head from the merge commit only as a fallback for a run with no pull_request payload, so one variable no longer silently overrides the other. scripts/stryker-diff.mjs and scripts/stryker-diff.test.mjs merged on their own; the pin for that derivation line was updated to the merged spelling, and the continue-on-error count pin (3) already matches the merged workflow.
Live merge base 3ee042d; main brought 6 commits (Zoo-Code-Org#2223 display settings, Zoo-Code-Org#2313 Keenable, Zoo-Code-Org#1309 abort-signal round 2, Zoo-Code-Org#2293 mutant comments, Zoo-Code-Org#2294 CI hygiene, Zoo-Code-Org#1207 BM25 ranker) across 113 paths. Conflict prediction by blob identity against the live merge base flagged 10 shared paths; 8 auto-merged and 2 needed a hand resolution. Both hand resolutions keep the settled side and our side: - src/core/webview/ClineProvider.ts: kept main's displaySettings import and our extra ProviderSettingsNotFoundError binding; took main's three new display keys (timeFormat/dateFormat/showRelativeTimes) into our getState() return, re-pointed at mergedStateValues because that is where our per-view merge feeds this block; and wrapped our setValues() sanitization with main's withoutInvalidDisplaySettings so an invalid display value is dropped before the shared write and before the view-local write, instead of only before the shared write. - src/core/webview/webviewMessageHandler.ts: kept main's isInvalidDisplayValue guard and our viewStates guard in the updateSettings loop, both with their own continue, and kept main's whole failed-save/settingsSaveResult restructuring. Fidelity: every line either side added since the merge base is present in the result except 6, all of them intentional rewrites named above (1 ours, 5 main). No file present on either side is absent from the result: 0 of main's 39 new files missing, 0 of ours' 1 new file missing, 0 files main deleted since the base. No conflict markers remain, and the recursive stage-1 blobs matched the real merge-base blobs byte for byte with no committed markers in them.
Related GitHub Issue
Closes: #2287
Description
Changed-code mutation testing reports surviving mutants through annotations and a job summary. This change publishes one advisory PR comment and updates it after later valid runs.
actions: readandpull-requests: read; the comment job usesactions: readandpull-requests: write. Cross-run artifact downloads pass an explicit token.listArtifactsForWorkflowRun, so artifact lookup uses the documented REST route.Validation
scripts/stryker-diff.test.mjspass ond29a17f5c4.git diff --checkpass. The full test suite and Knip were not rerun locally for the final changes.workflow_runtriggers, read-only fork producer tokens, authenticated artifact retrieval, comment creation and updates, clean results, invalid/missing report retention, and delayed old-run rejection.pull_requestsarray and exercised the fallback.Pre-Submission Checklist
src/test-utils/,@/utils/test-utils) are used only for mechanical duplication; test intent and scenario-specific mocks remain visible.*.visual.tsxsnapshot inwebview-ui/. Seewebview-ui/AGENTS.md→ "When a UI change needs a snapshot".Visual Snapshots
No UI change. This PR changes CI automation and a CI gate script.
Videos (interaction / animation only)
Not applicable. There is no interaction to record.
Documentation Updates
Added
docs/mutation-testing.mdto describe provenance, rendering, retained comments, focused-test metadata, and pre-merge integration validation.Get in Touch
0x7777777_