DELIVERY: two gates from Verdict 3.0, and a sharper mutation check - #14
DELIVERY: two gates from Verdict 3.0, and a sharper mutation check#14arnelirobles wants to merge 2 commits into
Conversation
A file on your disk is not a file in the repository. An unanchored `packages/` rule in .gitignore also matched docs/packages/, so eight written and linked guides were skipped by git add -A without a word. Every local test passed because the files were there. CI caught it on a clean clone. Assert the middle, not just the edges. A pooled buffer was cleared one line before it was copied out of, so 16 of 17 items came back blank. One test checked the count and the final element, which is written after the loss; the other took a different branch. Both green. The mutation check now says to check the mutation too. Boxing a bool to prove an allocation gate could fail did not allocate, because the JIT elided it, and the gate looked broken when it was right.
|
Warning Review limit reachedNext included review available in 54 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
ChangesDelivery guidance
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to This documentation-only change adds guidance for repository cleanliness, middle-state assertions, and reliable mutation checks; it introduces no production behavior or merge-blocking risk beyond normal review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
A CI step printed dotnet --info as evidence that a matrix leg ran on .NET 10. Its sed pattern was case-sensitive and matched nothing, so grepping the empty output for a .NET 8 runtime found none, which read as confirmation. Both legs had been running the net8.0 assets on .NET 8 the whole time. Replacing the print with an assertion caught it on the first run.
Three additions, all cited to something that got through during Verdict 3.0.
A file on your disk is not a file in the repository.
.gitignorehad anunanchored
packages/rule, meant for a NuGet folder, which also matcheddocs/packages/. Eight guides were written, the docs index linked all eight, andevery test passed locally because the files were on the laptop.
git add -Askipped them silently. The link test failed on the first CI run, on a clean
clone, which is the only place that difference is visible.
Assert the middle, not just the edges. A pooled buffer was returned with
clearArray: trueone line before it was copied out of, so every item collectedbefore the first doubling came back blank: 16 of 17, 512 of 2000. Two tests
covered that path and both were green, because one asserted the count and the
final element, which is written after the loss, and the other used a collection
type that took a different branch.
The mutation check now says to check the mutation. Proving an allocation gate
could fail meant making the code allocate, and boxing a
boolwas the obviousway. The gate stayed green and briefly looked broken. The JIT had elided the box,
so nothing allocated and the gate was correct.
GC.KeepAlive(new object())turnedit red at once.
The first two are new sections. The third is a paragraph on the existing mutation
check, since it is the same trap one level up rather than a separate gate.
Summary by CodeRabbit