Repository navigation
feat(metric-benchmark): compute paired mutant scores for fixed subsets - #95
Merged
Merged
Conversation
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 21, 2026 20:22
1475e24 to
2a5f513
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 21, 2026 20:28
2a5f513 to
9ba3336
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 21, 2026 21:08
9ba3336 to
c5b22ce
Compare
This was referenced Oct 21, 2026
mstaats-nvidia
changed the base branch from
feat/metric-benchmark-subsets
to
feat/metric-benchmark-execution
October 21, 2026 21:10
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 23, 2026 14:33
c5b22ce to
442aff9
Compare
mstaats-nvidia
added a commit
that referenced
this pull request
Oct 23, 2026
Defines an experimental benchmark for evaluating how well our coverage metric predicts evaluation effectiveness through mutation testing. The concise [root README](https://github.com/NVIDIA-NeMo/eval-author/blob/docs/metric-benchmark-design/labs/metric-benchmark/README.md) describes the project, its work-in-progress status, and the expectation that case examples will grow, change, or be dropped as we build in plain sight. Prep is external to this repository; runs consume prepared case examples, fixed subset manifests, and a YAML benchmark definition. The [stage descriptions](https://github.com/NVIDIA-NeMo/eval-author/blob/docs/metric-benchmark-design/labs/metric-benchmark/docs/stages.md) focus on four executable stages: run mutants × eval tasks, compute mutant scores, compute coverage, and correlate the score pairs. The first execution script will be a basic local Harbor loop; NeMo Helix support is planned afterward. The [architecture and both SVG figures](https://github.com/NVIDIA-NeMo/eval-author/blob/docs/metric-benchmark-design/labs/metric-benchmark/docs/architecture.md) explain the inputs, component boundaries, shared results directory, and statistical comparison. This is the documentation-only base of the stack. Implementation PRs #94 → #105 → #106 → #95 → #96 → #97 → #99 inherit the overview and design unchanged. Their detailed CLI guide lives separately in `docs/tools.md`. Validation: the five files in this PR are Markdown/SVG only. Local links and anchors, Markdown fences, headers, SVG XML, and whitespace checks pass; the updated figure was rendered and visually inspected. Restacking preserves all source and test files byte-for-byte. No live evaluations or model calls were made.
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 23, 2026 14:42
442aff9 to
91ac3a9
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 26, 2026 12:32
91ac3a9 to
ca1acfd
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
2 times, most recently
from
October 26, 2026 15:21
86f0de5 to
a0f0a5a
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 26, 2026 19:19
a0f0a5a to
5ec53b2
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
2 times, most recently
from
October 28, 2026 13:01
5e70825 to
054838e
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 29, 2026 10:30
054838e to
97d0e07
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 29, 2026 14:27
5c9825d to
4e07b36
Compare
mstaats-nvidia
changed the base branch from
main
to
feat/metric-benchmark-stage-config
October 29, 2026 14:28
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 29, 2026 14:40
4e07b36 to
b9ceae8
Compare
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 29, 2026 15:26
b9ceae8 to
68f55f3
Compare
mstaats-nvidia
marked this pull request as ready for review
October 29, 2026 15:33
asutermo
approved these changes
Oct 29, 2026
aleckhoury
approved these changes
Oct 30, 2026
aleckhoury
left a comment
Collaborator
There was a problem hiding this comment.
The scoring math checks out. Each subset's score is the equal-weight mean over mutants of the mean paired task degradation, sign * (baseline - mutant). Negative values are kept and flagged in diagnostics. A missing, incomplete or metric-absent pair makes that mutant effect and the subset score null with a reason; nothing turns into zero or is silently dropped. Attempts are selected by execution number, never by outcome.
Edge cases probed:
- With
latest, a failed first attempt followed by a later success scores correctly. lower_is_betterproduces the right sign.- A wrong metric name makes every subset unavailable.
- With signed inputs, scoring works after task dirs, bundles and native trial dirs are removed.
At this head: 139 passed, 1 skipped. Two small notes inline.
Signed-off-by: mstaats <mstaats@nvidia.com>
Signed-off-by: mstaats <mstaats@nvidia.com>
Signed-off-by: mstaats <mstaats@nvidia.com>
mstaats-nvidia
force-pushed
the
feat/metric-benchmark-mutant-scores
branch
from
October 30, 2026 21:36
68f55f3 to
8ebc003
Compare
Clarify when scoring can omit executable inputs and document unsigned iteration. Signed-off-by: mstaats <mstaats@nvidia.com>
7 tasks
Signed-off-by: mstaats <mstaats@nvidia.com>
Signed-off-by: mstaats <mstaats@nvidia.com>
Signed-off-by: mstaats <mstaats@nvidia.com>
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.
Compute equally weighted mean signed baseline-to-mutant degradation for each fixed task subset. Negative effects remain valid and receive inspection diagnostics; missing required pairs produce unavailable scores with
missing_score_reasonrather than zero or a reduced task set.compute_mutant_scores.pyowns the CLI and calls the scoring library for one case. It takes--cases,--analysis,--case,--results-root, and--output, checks the saved case identity, and selects recorded attempts by execution number. With signed case inputs, scoring needs only metadata, subsets, and results indexes. Unsigned sources must remain available to establish content identity; sign before removing them. Native validation is a separate tool.The command guide documents arguments, the library API, and a worked JSON-output example. Public scoring functions have short docstrings. The shared score schema uses
missing_score_reasonthroughout code, examples, validation reports, and synthetic fixtures.Validation at
f7a71eb:f81f82a: 180 passed, 1 skipped (the Docker opt-in test, exercised separately above). This covers coverage/correlation consumption, coordinator replay, and standalone CLI parity.Both inline review comments are addressed and resolved. The new regression cases cover rejection of a different
cases_sha256and aggregation across three tasks and two mutants. No scoring algorithm changes were needed during final validation.Stack: main → #95 mutant scores → #96 coverage → #97 correlation → #99 coordinator. Merge preparation is complete; this PR remains open and has not been merged.