niceeval exp and want to look at the results that are already in before it finishes. Or you want to know which results still count when a run is interrupted halfway. This page explains how the Runner turns a run into results you can read.
A Run fixes what to run when it starts
The Runner creates one Run for each selected Experiment. At creation it records therunId, this run’s invocationId, and every Attempt planned for this run. The plan does not change afterward, so the denominator of the pass rate is fixed at the start.
Each Attempt publishes on its own when it finishes
When an Attempt finishes and its results are fully written, it publishes on its own. Once published, it can be read, compared, reused in the next run, or explicitly adopted withniceeval accept, even while its Run is still active.
Unpublished Attempts, summaries that are not finished computing, and late writes never appear in any read command. So every result you see mid-run is complete, and you never read half-written data.
Get this run’s Run ID when it ends
Whenniceeval exp ends, the terminal’s NEXT panel lists the Runs it created and gives two commands for reading them:
--json, the last line is this run’s receipt. Its createdRunIds lists the new Runs, and publicationCutoff marks how far publication had reached when this run ended. Do not parse publicationCutoff; pass it to later commands as is. Scripts and CI first run niceeval query discover to find the available queries, then send a complete request.
The browser page does not jump to new results by itself
Whenniceeval view opens, it reads the results published at that moment and stays on them. When new Attempts publish later, the page prompts you to refresh. Only after you confirm does it switch to the latest results. This way the page does not change in the middle of a comparison.
The Runner never hands the database, the working directory used during execution, or unpublished records to read commands. Which results to select, what is missing, which evidence to use, and how to compare are all decided by NiceEval’s fixed built-in queries. See How run results flow.