kimera 0.1.2 gate, non-ASCII churn fix, release 0.10.1 - #6
Merged
Merged
Conversation
kimera 0.1.2 overlays methods in a Data.define block, so cli/flag.rb's mutants are judged (11 killed) instead of reported as no_coverage (11 under 0.1.1). The PR gate drops --no-fail-on-no-coverage: a changed line no spec runs now fails it, as `kimera ci` intends. 0.1.2 also sets KIMERA=1 in its own process before loading the suite, so the CI step and CONTRIBUTING no longer set it themselves; spec_helper still skips the coverage floor under it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcDfzLuRgjoSnfPLrTaA4h
A full run under kimera 0.1.2 reports no no_coverage mutants (1996 judged), so .kimera.yml gates on them like the PR gate now does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcDfzLuRgjoSnfPLrTaA4h
git quotes non-ASCII paths in `log --name-only` by default
("lib/caf\303\251.rb"), so churn never matched those files and scored
them 0. GitLog runs git with -c core.quotePath=false, which yields the
raw bytes Churn already compares against.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PcDfzLuRgjoSnfPLrTaA4h
Fixes found by mutation-testing the suite with kimera, hashira no longer crashing under a locale that isn't UTF-8, and churn for files whose names aren't ASCII, since 0.10.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcDfzLuRgjoSnfPLrTaA4h
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.
This PR has four commits: two tighten the kimera gate, one fixes churn for non-ASCII file names, and one cuts 0.10.1.
1. kimera 0.1.2, with the gate workaround removed
Gemfile.lock: kimera 0.1.1 → 0.1.2, updated bybundle update kimera --conservative.mutationjob no longer passes--no-fail-on-no-coverageor setsKIMERA=1. CONTRIBUTING's command changes to match.cli/flag.rb'sData.defineblock, so all of them were reported as uncovered. On that file, 0.1.1 reports 11/11 asno_coverage(gate exit 2), and 0.1.2 kills 11/11.KIMERA=1is no longer needed because 0.1.2 sets it in its own process before loading the suite. spec_helper's coverage floor still skips under it..kimera.yml:fail_on_no_coverage: true. A full run under 0.1.2 found 0no_coveragemutants among 1,996.2.
fix(churn): count files whose names aren't ASCIIBy default,
git log --name-onlyquotes non-ASCII paths ("lib/caf\303\251.rb"), so churn never matched those files and scored them 0.GitLognow runs git with-c core.quotePath=false, which gives the raw bytesChurnalready compares byte for byte (since #5).The non-ASCII churn spec now runs with
core.quotepathset to bothtrueandfalse, under UTF-8 and US-ASCII default encodings. Before the fix it fails with churn 0 instead of 1; after the fix it passes. End to end, on a project withlib/café/menú.rband git's default settings, churn goes from 0 to 1 under both locales.3. Release 0.10.1
VERSIONis now 0.10.1, the changelog heading## [0.10.1] - 2026-09-26, andGemfile.lockis regenerated by bundler. It's a patch release because the Unreleased section has only a "Fixed" heading. The format followschore: release 0.10.0.Verification (on this head)
bin/cipasses both withLANG=C.UTF-8and withLANG/LC_ALLunset: rubocop, rubocop-kata doctor, 502 examples, the gate, andRatchet OK: 16 edges, 0 findings, unchanged.bundle exec kimera ci --since origin/main, run exactly as the new CI step (noKIMERA, no override flag), exits 0.git logargument list, yields no mutants; the churn spec above covers it.gem build hashira.gemspecproduceshashira-0.10.1.gem.Out of scope: 10 survivors already on
mainA full
kimera runhas 10 surviving mutants, the same 10 under 0.1.1 and 0.1.2, somax_survivors: 0already fails the full run onmain. CI doesn't run the full suite, only changed lines per PR, so it never showed. Most are memoization guards (return @x if @x→if false). The others arefragment.mass >= PREFILTER→>induplication/clusters.rb, a deletedwalkedincomplexity/cognitive_score.rb, and anunless words.empty?→unless falseincoupling/echo.rb. They need triage of their own.After merge
Tag
v0.10.1on the merge commit, create the GitHub release, andgem push hashira-0.10.1.gem.🤖 Generated with Claude Code
https://claude.ai/code/session_01PcDfzLuRgjoSnfPLrTaA4h
Generated by Claude Code