[Spec Change] Resuming interrupted runs and merging partial ResultSets #10
Replies: 1 comment 1 reply
|
Pulled up
Concretely, I'd propose:
Happy to prototype the schema diff for (1) if there's rough consensus it's the right minimal addition — it's small (one optional field, one format) and unblocks the rest of this thread rather than needing everything settled first. |
Uh oh!
There was an error while loading. Please reload this page.
Flagged in
spec/CRITIQUE.md#4 as a remaining concern after the streaming fix shipped: "the spec doesn't define a standard way to resume an interrupted run or merge partial result sets. This should be added in v1.1."What already works:
test_cases_filefor external JSONL suites, and result sets can be written incrementally since eachResultis a self-contained object —evalport run's own--output <path>flag already writes results as test cases complete, so a long run's progress survives a crash at the file level.What's missing at the spec level: there's no defined way to say "this ResultSet is partial, resume from here" or "merge these three partial ResultSets from a run that was interrupted twice into one canonical ResultSet." Concretely:
ResultSet-level field (metadata.openeval.partial: trueplus something identifying whichtest_case_ids are represented?) so a consumer can tell a partial result set from a complete one without inferring it from count mismatches against the suite.ResultSets overlap on atest_case_id— last-write-wins by timestamp? Reject the merge and require the caller to dedupe first? This matters most for--parallelruns that get interrupted mid-batch.validate_result_set()).Where to start if you pick this up:
cli/src/run.ts(or the Python equivalent) already has the incremental-write logic for--output; the natural place for a--resume <path>flag is right next to it, and the merge semantics it needs would be exactly what this thread should settle first.All reactions