fix: the failure study was certifying its own answers, and one was wrong - #59
Merged
Conversation
The study trusted §6's residuals and never asked a reference solver, so "solved" meant "COSA is satisfied with itself". On twelve of thirteen families that was the same thing. On the thirteenth it was not. `badly scaled` terminates reporting optimal, with all five conic KKT residuals between 1e-11 and 1e-15, at a point whose objective is -0.00524. Clarabel returns -0.03956 — and that point is feasible for COSA's *own* feasibility check to 1e-11, with a strictly better objective. The direction between them is a feasible descent direction with derivative -0.0343. No tolerance argument survives that: a better feasible point demonstrably exists. The residual is not lying. Stationarity there is 1.93e-05 absolute; §14.2 reports it relative to the objective's scale, dividing by |c|_inf = 2e6, which prints 9.7e-12. A convex problem cannot have an exactly satisfied KKT system at a suboptimal point and this one does not — the residual is real, small enough relative to data of size 1e6 that a *relative* certificate cannot tell it from zero, and amplified by the conditioning into a 3.4% objective error. The certificate is relatively satisfied and the answer is wrong, and neither of those is a mistake in the other. That is the finding, and it is about the stopping criterion: §6's residuals are mathematically meaningful, as Success Criterion 2 asks, and not sufficient. An absolute floor, or a normalization that does not divide by |c|_inf, is what is missing — #22's business, and stated in the paper's assumptions section rather than patched quietly. So the study now cross-checks every answer, which Success Criterion 5 asked for all along, and reports five verdicts rather than four. The new one is `wrong`: optimal, certified, and disagreeing. It is the worst category — a diagnosed stop is honest and an undiagnosed one is at least visible, while a wrong answer looks like success. Skipping the check gives `unchecked`, not `solved`, because "nothing disagreed with me" and "a reference agreed with me" are different claims and conflating them is what caused this. Verdicts: 36 solved, 3 wrong. Twelve families agree to 1e-9 or better. This is the third conclusion this family has had and the first that was not self-certified. It stalled, and equilibration appeared to rescue it; the stall turned out to be `raise_free_heads` refusing any head row whose coefficient was not exactly one, so the retraction was silently unavailable; with that fixed the family ran to completion and was reported solved. Each step had evidence. Two of them were wrong. A study that certifies itself will confirm whichever hypothesis it started with. Equilibration still does not help: equilibrated, the same instance lands at -0.00540 against the same reference. Scaling changes the appearance of the residual and never the answer. Corrects claims already merged in #55, #57 and #58: the paper's results section, its assumptions and Risk 3, `docs/development/failure-modes.md`, and the README. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reachedNext included review available in 12 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: Team Run ID: 📒 Files selected for processing (7)
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 |
This was referenced Sep 4, 2026
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.
Closes #36. Corrects claims already merged in #55, #57 and #58, and hands a finding to #22.
What was wrong
The failure-mode study trusted §6's residuals and never asked a reference solver. So
solvedmeant "COSA is satisfied with itself". On twelve of thirteen families that is the same thing. On the thirteenth it is not.badly scaledterminates reportingoptimal, with all five conic KKT residuals between1e-11and1e-15:Az−b= −2.5e-2,|Ez−d|= 1.6e-15, cone slack 0Az−b= −5.0e-11,|Ez−d|= 2.2e-16, cone slack 1.5e-12The reference's point is feasible for COSA's own feasibility check to
1e-11, and its objective is 7.5× better. The direction between the two points is a feasible descent direction with derivative −0.0343. No tolerance argument survives that: a better feasible point demonstrably exists.Why the residual does not notice
The residual is not lying. Stationarity there is
1.93e-05absolute. §14.2 reports it relative to the objective's scale, dividing bymax(1, |c|_inf)— and this instance's|c|_infis2e6. So it prints as9.7e-12.A convex problem cannot have an exactly satisfied KKT system at a suboptimal point, and this one does not: the residual is real. It is simply small enough, relative to data of size
1e6, that a relative certificate cannot distinguish it from zero — while the conditioning amplifies it into a 3.4% objective error.That is the finding, and it is about the stopping criterion, not the arithmetic. §6's residuals are "mathematically meaningful" as Success Criterion 2 asks, and they are not sufficient: on an instance whose data spans fourteen orders of magnitude a relative KKT residual admits a percent-wrong answer. An absolute floor, or a normalization that does not divide by
|c|_inf, is what is missing. That belongs to #22, and it is stated in the paper's assumptions section as a required assumption the plan did not anticipate needing — not patched quietly.What changed
failures.studycross-checks every answer against a reference solver, which Success Criterion 5 asked for all along and this study was not doing.wrong: optimal, certified, and disagreeing. Precedence matters and is asserted — disagreement outranks a clean certificate, because a certificate that certifies the wrong answer is worse than no certificate.unchecked, notsolved. "Nothing disagreed with me" and "a reference agreed with me" are different claims, and conflating them is precisely what caused this.1e-9or better.failure-modes.mdand the README are corrected too.Three conclusions, two of them wrong
This family has now had three diagnoses and this is the first that was not self-certified.
5e-2; equilibration produced an apparent optimum at9.7e-7. Clean before-and-after.raise_free_headsrequired a head row coefficient of exactly one, which no rescaled instance satisfies — so the retraction was silently unavailable and a boundary iterate could not move. Equilibration had been "fixing" it by perturbing that coefficient. With the restriction removed the family ran to completion with residuals under1e-11, and was reported solved.Each step had evidence. Two were wrong. A study that certifies itself will confirm whichever hypothesis it started with — and equilibration still does not help: equilibrated, the same instance lands at −0.00540 against the same reference.
All rhiza gates green, 100% coverage, 1187 tests.