Skip to content

fix(ci): un-vacuum the mutants-core gate; dedupe the v0.33.0 changelog section - #795

Open
avrabe wants to merge 1 commit into
mainfrom
fix/audit-v033-findings
Open

fix(ci): un-vacuum the mutants-core gate; dedupe the v0.33.0 changelog section#795
avrabe wants to merge 1 commit into
mainfrom
fix/audit-v033-findings

Conversation

@avrabe

@avrabe avrabe commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Two findings from the v0.33.0 pre-tag clean-room audit (9/9 claims passed; these were flagged alongside). Neither blocks the tag — the first is nightly + continue-on-error, the second cosmetic — but the first is the exact defect class this release exists to remove, so it should not outlive the release that introduced it.

1. mutants-core was made unconditionally vacuous — by my own REQ-288 follow-up

The empty-diff short-circuit (if [ ! -s pr.diff ]; then … exit 0) belongs to mutants-cli, which computes pr.diff. My patch applied it to every matching check step, and mutants-core has no step that writes pr.diff — different job, different runner label, and actions/checkout cleans untracked files anyway. So the guard always fired and the job never evaluated outcomes.json or missed.txt for rivet-core. The in-file comment claiming "honest numbers surface without blocking" was false as written.

Root cause worth naming plainly: a string replace without a count. The fix for a vacuous gate introduced a vacuous gate one job over — inside the release whose thesis is that a gate which cannot fail is not a gate.

Guard removed from mutants-core; mutants-cli keeps it (correct there). Verified: mutants-core now has 0 pr.diff references, mutants-cli retains 5.

2. Duplicated ### Fixed in the [0.33.0] changelog

The section carried two ### Fixed subheads and documented REQ-290 twice (my summary plus #776's fuller entry). Collapsed to one, keeping the detailed entry. A duplicated section in a release about honest reporting is worth fixing before the tag rather than after.

Now: one ### Fixed, REQ-290 mentioned once, all of REQ-288/289/290/291 present.

yamllint clean · docs check 0 violations.

Refs: REQ-288

…g section

Two findings from the v0.33.0 pre-tag clean-room audit. Neither blocks the tag
(the first is nightly + continue-on-error, the second is cosmetic), but the
first is the exact defect class this release exists to remove, so it should not
outlive the release that introduced it.

1. mutants-core was made UNCONDITIONALLY VACUOUS by my own REQ-288 follow-up.
   The empty-diff short-circuit (`if [ ! -s pr.diff ]; then exit 0`) belongs to
   mutants-cli, which computes pr.diff. My patch applied it to every matching
   check step, and mutants-core has no step that writes pr.diff — so the guard
   always fired and the job never evaluated outcomes.json or missed.txt for
   rivet-core. The in-file claim that "honest numbers surface without blocking"
   was false as written. Guard removed from mutants-core; mutants-cli keeps it
   (correct there).

   Root cause worth naming: a str.replace without a count. The fix for a
   vacuous gate introduced a vacuous gate one job over.

2. The [0.33.0] changelog section carried two `### Fixed` subheads and
   documented REQ-290 twice (my summary plus #776's fuller entry). Collapsed to
   one section, keeping the detailed entry. A duplicated section in a release
   about honest reporting is worth fixing before the tag, not after.

yamllint clean; docs check 0 violations.

Refs: REQ-288
@codecov

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant