Skip to main content
The Runner creates a Run for the selected Experiment, freezing its runId, invocationId, and every expected slot in the creation transaction. Each Attempt publishes independently and atomically after its closure completes. A published Attempt is readable, comparable, reusable, or explicitly adoptable even while its Run is active. Unpublished aggregation and late writes are not visible to read paths. The completion receipt contains createdRunIds and publicationCutoff. Treat them as stable run boundaries: people review with niceeval view --run <run-id>, while AI, scripts, and CI first call niceeval query discover and then run the appropriate request. View reads facts within a fixed PublicationCutoff. When a new publication appears, the page prompts the user to refresh and switches to the new cutoff only after confirmation. The Runner never hands the database, execution workspace, or unpublished records to a read path. Fixed Inspection operations decide the selectors, gaps, Evidence, and comparisons used after a run.