Determinism in Lispex is a concrete execution contract. A comparison names the exact source bytes, input bytes, executor, resource profile, and observable channels. Repeating that tuple produces the same result, stdout, warnings, and diagnostic record.
Resource profiles
Each execution route publishes its input, output, transition, control, and allocation values. The report records which values were selected and what the run consumed. Programs continue until they finish, raise a runtime condition, or reach one of those values.
| Contract field | What it fixes | Observable result |
|---|---|---|
| source and input | exact program and request bytes | value or runtime diagnostic |
| executor and profile | named language support and resource values | terminal status and resource report |
| observation set | stdout, warnings, values, and diagnostics | exact channel order |
| corpus and baseline | inputs selected before execution | agreement, mismatch, or not-comparable |
| artifact identity | exact product bytes used for the run | receipt or engine fingerprint |
Wall-clock duration remains an operational measurement. Semantic resource reports use the counters published by the selected execution route.
Choosing an execution route
The reference interpreter and verified Rust VM run trusted rule source for
authoring, local automation, and route comparison. lispex embed runs supplied
decision rules with configured work and memory values and a fresh instance.
A comparison receipt applies to its named corpus, executors, profiles, and observations. Engine faults record their terminal status separately from guest values and runtime diagnostics.
Keep going
Read Proper Tail Calls for continuation behavior and the embed guide for a resource-controlled application workflow.