Repository navigation
feat(cli): sieval run --dry-run reports each task's stage plan - #220
Merged
Merged
Conversation
The dry-run reported the resume outcome counts but not which stage changed, so a re-report read as `kept: 3, rereported: 3` with no stage named, and whether a task infers had to be derived from `to_infer`. - RunPlan gains `stages`: plan_resume's comparison of the recorded identities with the runner's own (data, inference and the grading stages), with `rerun_from` set to the runner's decision. That also covers a directory with no identities, which the runner trusts and the bare comparison calls unknown. `refused` is always null there, since a refusal raises before a plan is returned. - Each dry-run task entry carries `stages` and its own `needs_inference`, by the test `_models_to_launch` launches by. - The text summary names the stage: `resume (3 regraded), from feedback, 0 to infer, 3 to grade`. Closes #219 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 tasks done
- `stages` leaves out `preprocess`, which is decided per sample and so always read `unknown`; a data change shows in `resume_plan` as `restarted`. - Tests assert the `refused = None` override (the bare comparison says `inference` for a directory with no identities) and the dropped key. - Shorter docstring, docs bullet and CHANGELOG entry; `stages: null` for a fresh start now reads as the object's, not `legacy_grader`'s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 23, 2026
Merged
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.
Type
Summary
Connects the dry-run from #217 to the per-stage plan from #211. Before this, the dry-run reported outcome counts without naming the stage that changed.
RunPlan.stages:plan_resume's comparison of the recorded identities with the runner's own (data, inference, postprocess, feedback, report), withrerun_fromset to what the runner decides.preprocessis left out: it is decided per sample, so it would always readunknown, and a data change already shows inresume_planasrestarted.reportnames a re-report. A directory with no identities, which the runner trusts, getsrerun_from: null, not the bare comparison'spostprocess.refusedis alwaysnullhere (the bare comparison saysinferencefor a directory with no identities), because a refusal raises before a plan is returned and the task entry holdserrorinstead.stagesand its ownneeds_inference, using_infers, the same test_models_to_launchuses to decide launches.task echo: resume (3 regraded), from feedback, 0 to infer, 3 to grade.A report-only change reads
start: reuse,resume_plan{kept: N, rereported: N, ...},rerun_from: report,to_infer: 0,needs_inference: false.Identity impact. None. Nothing new is recorded.
Related Issues
Closes #219. Follows #211 and #217.
Test Plan
Automated
ruff check && ruff format --check)ty check)pdm run pytest)pytest tests/unit tests/integration tests/acceptance -m "not stress and not benchmark" -n auto --covpasses on macOS, at 97.12% coverage. The one failure istest_exec_quotebench_anchor.py, which also fails onmainon macOS.ty check,sync_package_stubs.py --check,check_preflight.pyandpre-commit run -aare clean.test_stage_resume.py::TestPlanRunNamesTheStagecallsplan_runon a plugin task, one test per outcome: kept (nothing changed), rereported (metrics.pyedit), regraded (grade.py), repostprocessed (postprocesscode), restarted (changed sample, which also checkspreprocessis absent), dropped (removed sample), and a directory with no identities (which also checksrefusedisnull). Each test checksstages.rerun_from, the stage comparisons,to_inferandto_grade. Each also checks that planning writes nothing and calls no model, judge or grading stage.test_lazy_launch.py::TestDryRunStagePlanruns the real CLI:rerun_from: reportandneeds_inference: false.sieval run --resumethen re-reports on a node with no GPU, with no engine started and no request sent, and records the sameruns[].resume.needs_inferencematch whatsieval run --resumethen launches and requests.to_infermatches the requests, andresume_planmatches the recordedruns[].resume.rerun_fromorrefusedoverride fails the no-identities test; keepingpreprocessfails the changed-sample test. Making_infersignoreto_inferfails 12 tests.