Repository navigation
fix: fail incomplete task runs and add opt-in baseline regression gates #300
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
vchamarthi
wants to merge
21
commits into
intel:main
Choose a base branch
from
vchamarthi:fix/task-completion-baseline-gates
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+761
−94
Open
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
07a3fcf
fix(eval): fail incomplete runs and gate paired baseline regressions
vchamarthi bb16753
test(eval): evidence combined threshold CLI journey explicitly
vchamarthi b5e8983
docs(changelog): note partly errored task runs now exit 1
vchamarthi 003edba
fix: address review round 1 on completion and baseline gates
vchamarthi 1fc52af
docs: state both RESULT lines for an undecided validity run
antonwolfy 57e06f2
docs(changelog): drop stale exit-0 clause, file task exit change as C…
antonwolfy 1de60da
docs: reword smoke gate docstring for the new tasks run exit code
antonwolfy ddfc075
Merge origin/main into fix/task-completion-baseline-gates
vchamarthi 57593a5
fix(harness): score a command's exit code only when it gave a verdict
vchamarthi ce3711a
fix(tasks): refuse a repeated task or harness before running
vchamarthi 263968c
fix(baseline): gate flags register, min-matched needs a gate, partial…
vchamarthi a259497
refactor: split the exit-code reward and min-matched check into helpers
vchamarthi 592dd42
fix(tasks): refuse a task repeated under another spelling
xaleryb 97e5dfd
fix(harness): count a command cell with no verdict as errored
xaleryb d010a4d
fix(harness): no output reward fallback past an unreadable reward file
xaleryb f19aff1
fix(baseline): a non-string provider or model is not recorded
xaleryb 3af1472
fix(harness): no printed reward for a command that never ran or was k…
xaleryb 7b6da2e
Merge intel/main into fix/task-completion-baseline-gates
xaleryb 4fff339
test: pin the regression gate mean, sign and default minimum
antonwolfy b002f48
test: keep tasks run tests from writing results into the cwd
antonwolfy 3d350ed
docs: say a reward file with no reward, not an unreadable one
antonwolfy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
2 changes: 1 addition & 1 deletion
2
dokimi/changelog.d/20261021_180000_napetrov_outcome-completeness-2.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| ### Fixed | ||
|
|
||
| - **Nothing measured is not a pass (second batch)** — `tasks run` exits 1 as `incomplete` when every cell errored (the artifact and report are still written; partly errored runs keep exit 0 and their counts). The novelty gate's status is `NOT MEASURED`, not `PASS`, for a cell with no check measured. `run` refuses with one line and exit 1 when a selected document does not load, instead of a KeyError or OSError traceback. `baseline compare` says "Nothing to compare (0 scored)" when no question is scored on both sides, and its "No notable changes" line counts the questions compared; the snapshot `compare` report says "Nothing to compare (0 scored)" instead of "No regressions" when either snapshot has no document. | ||
| - **Nothing measured is not a pass (second batch)** — `tasks run` exits 1 as `incomplete` when every cell errored (the artifact and report are still written). The novelty gate's status is `NOT MEASURED`, not `PASS`, for a cell with no check measured. `run` refuses with one line and exit 1 when a selected document does not load, instead of a KeyError or OSError traceback. `baseline compare` says "Nothing to compare (0 scored)" when no question is scored on both sides, and its "No notable changes" line counts the questions compared; the snapshot `compare` report says "Nothing to compare (0 scored)" instead of "No regressions" when either snapshot has no document. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| <!-- | ||
| Copyright (C) 2026 Intel Corporation | ||
| SPDX-License-Identifier: Apache-2.0 | ||
| --> | ||
|
|
||
| ### Changed | ||
|
|
||
| - Task runs preserve artifacts and exit nonzero for any errored, unscored or missing planned cell, including partly errored runs that previously exited 0; supported dry runs remain plans and verifier failures remain scored outcomes. | ||
|
|
||
| ### Fixed | ||
|
|
||
| - `baseline compare` now treats a blank, non-string or case-variant "Unknown" provider or model, and a panel member without a `provider/` prefix, as not recorded, for every run: the "not compared" warning appears and `--strict` exits 1 where it used to pass. | ||
| - A command harness with no reward file records its exit code as reward 1.0 or 0.0, so `tasks run` counts it as scored; exit 126, 127, signal exits and a reward file with no reward in it are no verdict, even with a `reward: x` on the output: the cell is errored and stays out of `pass_rate` and the paired test. `avg_reward` of command harnesses now includes these exit-code cells, so it does not compare with older `task_runs` artifacts. | ||
| - `tasks run` exits 2 before running when a task or harness is listed twice, including one task under two spellings and two tasks with the same directory name. | ||
| - Undecided judge-validity checks visibly report INCONCLUSIVE, with the existing default and strict exit policies. | ||
|
|
||
| ### Added | ||
|
|
||
| - Opt-in baseline context-score and paired-lift regression thresholds, requiring complete matched scoring and known matching model identities. A regression and an identity mismatch exit 1; partial or insufficient evidence exits 2. `--min-matched` without a threshold exits 2. Existing `--strict` remains an identity check. |
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Must-fix: reject the
unknownsentinel after removing model routes as well. With otherwise valid scored artifacts,compare(_eval(judge=("openai", "openai/unknown")), _eval(judge=("openai", "openai/unknown")), "--max-context-drop", "0")reachesRegression gate: PASS: the raw string is notunknown, butmodel_identity()reduces it to('unknown', None), which matches on both sides. The same bypass affects answer identities and panel members such asopenai/openai/unknown. Check the normalized model id forunknownand add regression cases for each identity path so missing model identity cannot authorize promotion.