Runner 为选中的 Experiment 创建 Run,并在创建事务中冻结 runId、invocationId 与全部 expected slots。每个 Attempt 完成自己的 closure 后独立原子发布;已发布 Attempt 即使其 Run 仍为 active,也能被读取、比较、沿用或显式采用。尚未发布的聚合和晚到写入不对读取面可见。
命令结束后的 receipt 给出 createdRunIds 与 publicationCutoff。把它们作为稳定的运行边界:人用 niceeval view --run <run-id> 审阅,AI、脚本和 CI 先从 niceeval query discover 获取可用 operation,再运行对应 request。
View 在一个固定 PublicationCutoff 中读取事实。新 publication 出现后,页面提示用户刷新;用户确认后才切换到新的 cutoff。
Runner 不把数据库、执行工作目录或未封口记录交给读取路径。运行后查看的 selector、缺口、Evidence 与 comparison 由固定 Inspection operation 决定。