Conversation
…ard mutant compilation
The Go API reshape renamed Cache.options to Cache.settings but left the M11
replacement text ("renew the local insertion TTL on every cache hit")
referring to c.options.Clock. The mutant no longer compiled, so the full
mutation lane reported a measurement error for shard 3 instead of a
detection result. The replacement now reads c.settings.clock and the mutant
is caught by the whole-millisecond expiry tests.
Only the weekly full run compiled mutants; the audit lane checks nothing
about the Go catalog. A native test now applies every catalogued edit to a
temporary copy of the production sources, requires each anchor to match
exactly once, and builds the mutant, so a rename that strands a mutation
fails the PR checks rather than the next full formal run.
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.
Summary
The full formal verification run on
mainafter #190 failed in Go mutation shard 3 withM11: noncompiling mutant/baseline, not detection. The API reshape renamedCache.optionstoCache.settings, and the M11 replacement text ("renew the local insertion TTL on every cache hit") still referred toc.options.Clock. The anchor check only validates thebeforetext, so nothing caught it before the weekly lane. Every other job in that run passed, includinggo-parity(the complete corpus replayed through the ported driver) and all TypeScript lanes.Changes
formal/go-mutations.json: M11afternow readsc.settings.clock.ElapsedMS(). Applied in a scratch copy, the mutant compiles and is caught byTestLocalExpiryIsCheckedOnReadWithoutRenewal,TestLocalInsertionExpiryUsesWholeMillisecondsandTestDefaultInstancesShareLocalMillisecondGrid.go/mutation_catalog_test.go: a PR-time guard. For every catalogued mutation it copies the production sources into a temp dir, requires each anchor to occur exactly once, applies the edit and runsgo build. Thirteen parallel builds add a few seconds tomake check-go. It skips when the catalog is absent, so a consumer running the module's tests is unaffected. It compiles production sources only; a mutant that breaks test compilation is still the full lane's job.Validation
make check-goandmake auditpass. All thirteen mutants compile in the scratch copies.After merge
Re-dispatch "Full formal verification" on
main; with this fix the only failed jobs (shard 3, mutations merge, aggregate) should pass. Then the Release workflow can be run again for 0.24.0.