In the last step of "Events and Subscriptions", there is a note :
There are two entries in the stream: one for when the temperature became high and one for when the humidity became high. These entries may vary depending upon the time the temperature and humidity values were changed. If you changed both temperature and humidity in one 30 second timer interval, both entries will indicate that temperature and humidity are high. This is because the timer did not capture the moment when only the temperature was high. If they were spread across two timer intervals, there will be one temperature high entry and one temperature and humidity high entry.
This note concern the ThingTemplate VendingMachineTemplate's subscription "ACMETimer30S" rathen than VendingMachineShape's subscriptions, doesn't it ? The Timer subscription will be fired every 30s and will check for a potential problem. The 2 subscriptions of "VMTemperatureHigh" and "VMHumidityHigh" will be fired one after another when we set the VM-TR3's CurrentTemperature and CurrentHumidity.
By the way, the VendingMachineTemplate's subscription "ACMETimer30S" add only 1 tag when it add a stream entry. And the Temperature tags are prioritized because they are the last check and edit of the variable "tag".
Yes, I'm agree with you. But this does appears at the end of the VendingMachineShape's subscriptions. And the events of these subscriptions are "DataChange", not Timer. It may create confusion in the explanation why there are 2 values in the VendingMachineIssueStream.
The VendingMachineTemplate's subscription "ACMETimer30S" create entries in the VendingMachineProcessValuesStream.