Invocation, Run, and Attempt
An Invocation has oneinvocationId. Each selected Experiment creates a Run, whose expected slots define the denominator for that run.
Each slot has at most one Member:
executed: The Runner executed this slot’s Attempt.carried: The planner automatically adopted an existing Attempt.accepted: An operator explicitly adopted an existing Attempt.
origin, the Run and slot that actually executed it. A carried or accepted Member does not copy its Verdict, Usage, events, or other business values.
Plan before execution
Useniceeval exp --dry before a run. It reads the channels needed for planning from a quiescent Record and lists why each slot will execute or be adopted.
--rerun conditions all allow it. Identity is an opaque value with a domain; values compare only when the domains match. The target Run’s niceeval.actions channel records the reason, eligibility, and input information.
The Runner starts the Attempts that need execution only after planning. See Rerun and Carry Results for details.
Feedback from the current process
Progress, active Attempts, and short diagnostics exist only for the current process. The terminal can render them, and--json writes the same machine-readable feedback.
exp --json emits NDJSON. Progress and diagnostic records describe the current Invocation; they are not a Record decoding format. Exactly one final record is a lightweight InvocationReceipt:
runIds.
Reporter
A Reporter connects only to the current Invocation. It can send information already known to the process to an external system, and--junit writes a file for a CI platform to consume.
Neither output owns the Record. The quiescent Record’s named channels retain the recorded Verdict, Usage, assertions, and diagnostics. A later step projects an AnalysisSample from the receipt’s runIds, then uses show, view, or view --out to inspect complete results.
Inspect after the run
After the Runner ends, inspect a historical result with an explicit Run selection:--run, show and view read every slot whose identity still matches the current project. A locator or --run reads named historical facts. The internal host forms a pure AnalysisSample, projects the facts declared by the Report, and produces a fixed ReportExecution. Published Runs are immutable; another view creates a new selection and execution.
Completion status
The process exit status reflects the Verdicts, execution errors, and Invocation completion known to the Runner. CI can use that status as its gate. A machine caller can read the final receipt, then userunIds to select what to show or export.
Input errors that prevent an Invocation from being created have no receipt. Correct the command, Experiment, or selection condition before trying again.