Report unchecked gold validation - #2466
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0cbb90ee26
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a localized validation-reporting fix: tasks without model-free checks now produce an explicit unchecked terminal result, while checked validation and runtime setup remain unchanged. The CLI summaries, resume handling, and dashboard are updated consistently without major schema, security, billing, or infrastructure impact. You can add or adjust custom eligibility rules. Learn more. |
Overview
Represent model-free gold validation as a tri-state result so tasksets without a gold check are reported as unchecked instead of valid.
This is an alternative implementation of the issue identified by @ATMAECHO in #2293. It makes the absence of a check part of the Task.validate contract instead of inferring it from method overrides.
Details
Note
Medium Risk
Changing the default
Task.validatefromTruetoNoneshifts reporting for any task that relied on the inherited default without overriding the method.Overview
Gold validation is now tri-state:
Task.validatemay returnNonewhen there is no model-free check, instead of implicitly counting those tasks as valid.The default
Task.validatereturnsNone(wasTrue). The validate CLI persistsreason: "unchecked"withvalid: null, treats unchecked as terminal for resume/summary, and shows it in the dashboard (dim style).valid_rateis computed only over tasks that were actually checked (valid + invalid); it stays unset when nothing was checked. Combined gold+setup runs keep error/timeout/invalid precedence and surface unchecked when neither sub-check failed.Lean tasks without a gold proof now return
Noneinstead of passing validation by default.Reviewed by Cursor Bugbot for commit d8b1e4a. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add
uncheckedtri-state outcome to validation pipeline and dashboardIntroduces
valid: bool | Noneacross the validation system so tasks without a model-free check are reported asuncheckedinstead of implicitly passing.Task.validateandLeanTask.validateto returnNonewhen no gold proof exists, rather than defaulting toTrueFINAL_VALUES,_classify,_row,_all_reason, and_all_errorin validate.py to handle the tri-state:uncheckedis terminal, excluded from error aggregation, andvalid_rateis computed over checked items onlyuncheckedstyling and mark to the dashboard in validate.pyLeanTask.validateno longer returnsTruefor tasks without a gold proof — callers that treated any truthy return as "valid" will now seeNone; persisted result rows storevalid=Nonefor unchecked outcomesMacroscope summarized d8b1e4a.