Problem
Simulation-time shortcuts are embedded in protocol compilers and alter the action payload that represents the requested procedure.
Concrete code evidence
unilabos/compile/heatchill_protocol.py:209-213: simulation_time_limit = 100.0; values above it are assigned back to final_time.
unilabos/compile/stir_protocol.py:201-209: requested stir and settling times are assigned back to 60 s and 30 s limits.
unilabos/compile/hydrogenate_protocol.py:299-335: reaction time is assigned back to a 60 s simulation limit.
unilabos/compile/recrystallize_protocol.py:327-331: crystallization time is replaced by a 60 s maximum.
unilabos/compile/reset_handling_protocol.py:283-287: wait time is replaced by a 5 s simulation limit.
Design gap
The compiler has no separate execution-policy object. Scientific/method parameters and wall-clock scheduling are represented by the same fields, so simulation acceleration changes the method itself.
Expected behavior
Preserve requested parameters unchanged. Apply acceleration only in the runtime scheduler and record it separately in a run receipt.
{
"requested": {"duration_s": 7200},
"execution": {"mode": "simulation", "wall_clock_duration_s": 1},
"observed": null
}
Acceptance criteria
- Compiler output retains the requested semantic parameters.
- Simulation policy is explicit and versioned.
- Real/simulation mode and wall-clock acceleration appear in run provenance.
- Unsupported physical conditions are still reported as unsupported unless a virtual capability explicitly declares them.
- Regression tests prove that protocol payloads are unchanged by simulation acceleration.
Problem
Simulation-time shortcuts are embedded in protocol compilers and alter the action payload that represents the requested procedure.
Concrete code evidence
unilabos/compile/heatchill_protocol.py:209-213:simulation_time_limit = 100.0; values above it are assigned back tofinal_time.unilabos/compile/stir_protocol.py:201-209: requested stir and settling times are assigned back to 60 s and 30 s limits.unilabos/compile/hydrogenate_protocol.py:299-335: reaction time is assigned back to a 60 s simulation limit.unilabos/compile/recrystallize_protocol.py:327-331: crystallization time is replaced by a 60 s maximum.unilabos/compile/reset_handling_protocol.py:283-287: wait time is replaced by a 5 s simulation limit.Design gap
The compiler has no separate execution-policy object. Scientific/method parameters and wall-clock scheduling are represented by the same fields, so simulation acceleration changes the method itself.
Expected behavior
Preserve requested parameters unchanged. Apply acceleration only in the runtime scheduler and record it separately in a run receipt.
{ "requested": {"duration_s": 7200}, "execution": {"mode": "simulation", "wall_clock_duration_s": 1}, "observed": null }Acceptance criteria