refactor: drop the HFactor comparison arm from basis replay - #2009
Merged
Merged
Conversation
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.
What changed
com.eignex:koblas-hfactorjvmTest dependency and theHfactorBasisSolveradapter.BasisTraceReplay.replayreturns a single report, and the peer-stop and cross-backend divergence paths are gone.freshRelativeResidualis the accuracy a from-scratch build reaches on that probe, andfreshDeclinesis a conditioning signal.LuBuildRejectionis a floating-point decline rather than a rank claim.persisted real corpus traces load and replayto covermps-afiroas well, taking gate coverage of the rebuild from 2 accepted updates to 19.backend,hfactorArtifactSha256,adapterInclusive,adapterCopyIsolationandnot_comparablefields from the benchmark record schema.hfactorarm fromForrestTomlinFactorsBenchmark, leaving the Forrest-Tomlin engine against the in-repoBasisEtaReference.lp-wave2-hfactorcampaign runner and document the retired comparison inklause-bench/README.md.Why
Land this before Eignex/koblas#553, so klause stops consuming
koblas-hfactorbefore koblas stops publishing it.koblas removes the
koblas-hfactorartifact. The comparison arm was test-only; production owns its basis factors on every target.The replay already carried three oracles independent of the basis under test: the stored CSC source matrix, the captured factorization outcome, and the captured update acceptance. Most replay tests already passed
KotlinBasisSolveras the reference arm, so the second arm was comparing the implementation with itself. The one check the HFactor arm did contribute, cross-checking update acceptance, was unreachable, because both arms failed against the captured outcome before the comparison ran. The fresh-basis oracle replaces it with a check that reaches the same basis by a different path.Testing
mps-adlittlereplays 47 of 47 accepted updates withfreshDeclines0, armrelativeResidual3.0e-17 against rebuildfreshRelativeResidual2.8e-19../gradlew :klause:basisTrace --args="verify"replays all six real traces withreplayErrors: 0, so the fresh-basis oracle agrees with every accepted update in the corpus. Addedreplay rejects an accepted update that leaves the basis unsolvable, which drives an update to a repeated basis column past a solver that reports it applied.