You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mergeResultFilesToParquet can now fill extra_scores in the merged file by running the benchmark's runLevelScores over every merged sample. Before this change it always wrote null.
What changed?
MergeResultFilesInput has a new optional runLevelScores?: (result: RunResult) => readonly ExtraScore[]. Callers pass benchmark.runLevelScores.
When runLevelScores is set, the first merge pass keeps each sample's answer, explanation, scorer_trajectory and metadata, which are the fields the existing run-level scorers read. It then calls the scorer once on a RunResult built from all files, and every merged row gets that JSON in extra_scores.
If runLevelScores is not set, the merge works as before and keeps only the id, epoch and score of each sample.
A malformed scorer_trajectory or metadata column fails the merge. It is not dropped.
Why?
The per-chunk extra_scores in openrouter-web's Temporal chunk parquets are computed from one chunk's samples only, so they can't be copied into the merged file or averaged. openrouter-web #47097 makes the merged file the only results path for multi-chunk runs, and without this change those runs lose their run-level scores.
How to test
bun test src/results/parquet.test.ts -t "recomputes run-level extra scores" merges three single-sample files with chunk-only extra scores. It checks that the scorer sees every sample's answer, explanation, trajectory and metadata, and that each merged row holds the recomputed score rather than the chunk values.
Reviewer focus
Memory. With runLevelScores set, the first pass keeps explanation, scorer trajectory and metadata for every sample, but still not messages, request bodies or ATIF trajectories. For judge-based benchmarks this is small. For a verifier_log trajectory it grows with the log size.
Checklist
Tests cover changed behavior
Public API or configuration changes are backward compatible, or the break is documented
No credentials, private results, or restricted dataset contents are included
The <latest_message> is the message that you should use to guide your goals + task for this session, and you should use the rest of the slack thread as context.
A [ts=...] marker on a Slack message is that message's timestamp. To act on a specific message with the slack tool (e.g. adding an emoji reaction via the reaction command), pass that value as timestamp along with the Channel ID — no extra lookup call is needed.
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
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.
TL;DR
mergeResultFilesToParquetcan now fillextra_scoresin the merged file by running the benchmark'srunLevelScoresover every merged sample. Before this change it always wrote null.What changed?
MergeResultFilesInputhas a new optionalrunLevelScores?: (result: RunResult) => readonly ExtraScore[]. Callers passbenchmark.runLevelScores.runLevelScoresis set, the first merge pass keeps each sample'sanswer,explanation,scorer_trajectoryandmetadata, which are the fields the existing run-level scorers read. It then calls the scorer once on aRunResultbuilt from all files, and every merged row gets that JSON inextra_scores.runLevelScoresis not set, the merge works as before and keeps only the id, epoch and score of each sample.scorer_trajectoryormetadatacolumn fails the merge. It is not dropped.Why?
The per-chunk
extra_scoresin openrouter-web's Temporal chunk parquets are computed from one chunk's samples only, so they can't be copied into the merged file or averaged. openrouter-web #47097 makes the merged file the only results path for multi-chunk runs, and without this change those runs lose their run-level scores.How to test
bun test src/results/parquet.test.ts -t "recomputes run-level extra scores"merges three single-sample files with chunk-only extra scores. It checks that the scorer sees every sample's answer, explanation, trajectory and metadata, and that each merged row holds the recomputed score rather than the chunk values.Reviewer focus
runLevelScoresset, the first pass keeps explanation, scorer trajectory and metadata for every sample, but still not messages, request bodies or ATIF trajectories. For judge-based benchmarks this is small. For averifier_logtrajectory it grows with the log size.Checklist
Link to Devin session: https://openrouter.devinenterprise.com/sessions/cff9171c8dd8432ebb515e2a54374727
Open in Devin Desktop: https://openrouter.devinenterprise.com/desktop/session/cff9171c8dd8432ebb515e2a54374727?variant=devin
Requested by: @abhinav-pola