SDAG case constructs and Bigsim traces
Inspired by some other discussion, I went to look at the implementation of SDAG case clauses to see how they'd interact with Bigsim emulator trace recording. It looks like the natural result they'll produce is a dependence of the when that gets satisfied on the incoming messages that satisfied it and the preceding event, as it should be. This is perfect in the purely non-speculative case, where no messages that might match other whens in the case ever appear.
In the speculative case, I'm concerned that some messages might be improperly associated to multi-entry whens that never end up getting satisfied. I could picture this producing misleading traces or broken traces, or even crashing the runtime, though I'm uncertain which without further examination. We should try this and make sure that we haven't broken the bit of Bigsim that depends on SDAG.