I have observed this issue more closely and experimented with other scripts reacting to multiple events simultaneously. Somehow, these parallel-running events interfere with each other, causing incompletely prepared objects to be passed to scripts and tabs that are not fully loaded or have partially filled objects. For example, tab.all.count might return zero even when many files are present.
This issue is likely related to the empty tabs problem discussed here.
Would it make sense to create memory dumps when Opus becomes a bit "bloated"?