Hi Bruce,
The term test oracle in general refers to any checks that people might put in their tests. In OSMO tests I generally use asserts such as you have listed when doing online testing. In offline testing it depends on your test framework for which you might generate a script for.
As for expected values, I generally track the values as variables in the model. Makes it easier to understand the model and track the values across the methods. If you have a large set of values you might use some collection to store but how you might do that would depend on your case.
There is no generally one right or wrong strategy to check state after tests and events. I rarely check something after the test itself but usually after each step or inside the step itself. This highlights where the test might fail faster.
If it is a single event you are interested, I would check for that right after receiving it or triggering it in the @TestStep where it is triggered.
If it is in some way non-deterministic such as the event might come from the network after some delay, you may need to set up some checks with timeouts or such. OSMO has no direct support for that but it should not be too hard to implement such a check using some basic Java features in your model.
For checks against general model state I would do that in a post method or similar.And if you really want to do specific checks after the test, you could look at @LastStep or @AfterTest.
Cheers,
Teemu