Open davepacheco opened 2 years ago
A large class of things you might want to assert as invariant are actually reasonable operational errors. For example, if a saga action looks at data from a previous node, it has to assume that that data came from the saga log, which probably went through a database or some source outside the Rust program. It's always possible that's been modified or corrupted, and so it's not a programmer error if that's different from what we expect. (In an ideal world, any problems would be identified when the type is deserialized.)
So ignoring those, that leaves us with real programmer-error-type invariants, which I'll consider synonymous with panics here. There are a bunch of ways to handle this. It's up to the consumer (for us, that's Nexus) to choose an approach, though we may decide to add stuff to Steno to facilitate some of these options. Some ideas:
Moved from #26, where @bnaecker wrote:
This may be more of an Omicron concern.