fix(check): refuse loudly instead of passing silently - #47
Conversation
`--check` promises enforcement it cannot currently deliver. Only Measured/Calibrated inputs may block, and the analyzer emits nothing but Confidence::Estimated — calibration.rs exists but was never wired in, so estimate_resources() is still the naive complexity*0.1 J it was written to replace. The result: `--check` on an undocumented pareto-regression exited 0 in total silence. That is a fake gate, and it was mine. The honest fix is not to relabel estimates as Calibrated — that would overclaim. It is to make the refusal unmissable: when enforcement is requested and cannot be delivered, emit a ::warning:: annotation naming the verdict and the confidence level that blocked it. Wiring calibration properly changes every resource figure and every downstream score, so it belongs in its own reviewed change (issue to follow), not tacked onto this one. Documented the limitation plainly in QUICKSTART and in the action's `check` input description, so no consumer mistakes an advisory pass for a clean enforcement result. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Note Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime. Code Review ✅ ApprovedRefactors the
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
|
|
--checkwas a fake gate — and it was one I introduced in #42.It promises enforcement it cannot deliver: only
Measured/Calibratedinputs may block a merge, but the analyzer emits nothing exceptConfidence::Estimated.calibration.rsexists yet was never wired in —estimate_resources()is still the naivecomplexity * 0.1 Jthat calibration's own doc comment says it replaces. So--checkon an undocumented pareto-regression exited 0, silently.The fix is not to relabel estimates as Calibrated — that would overclaim, and the numbers genuinely aren't calibrated. It is to make the refusal unmissable:
A gate that quietly does nothing is indistinguishable from one that passed — the exact failure mode OikosBot exists to find.
Wiring calibration properly changes every resource figure and every downstream score, so it belongs in its own reviewed change (issue to follow) rather than tacked onto this.
Also documents the limitation plainly in QUICKSTART and the action's
checkinput, so no consumer mistakes an advisory pass for clean enforcement.Verified: warning fires on the regression fixture that previously passed in silence; 51 workspace tests pass.
🤖 Generated with Claude Code