Some behaviours of herd7 resulting from enabling the -restrict option can be a bit obscure, and we might want to do something to improve the situation.
-restrict observed is the only variant that actually filters candidate executions during simulation. Then, if the filtering results in 0 candidate executions, the final stdout stats are suppressed. I think this is a bit surprising, since with -restrict none herd7 will print the normal stats block even when there are 0 executions.
The other variants -restrict nonambiguous and -restrict condone do not seem to filter candidate executions at all. Instead, they just suppress the final stdout stats if their characterising condition is not satisfied.
I do not have the full historical context for these options, but from a UX point of view, I do find it somewhat non-obvious that an option named "restrict" would sometimes filter executions and sometimes only suppress output. It might be worth splitting these functionalities into different CLI options that make this separation of concern more explicit. On the stats printing, I think it might be clearer to always print stats, and perhaps print additional diagnostic lines such as "executions are ambiguous" or "no observed executions" when the relevant conditions are (not) met.
Some behaviours of herd7 resulting from enabling the
-restrictoption can be a bit obscure, and we might want to do something to improve the situation.-restrict observedis the only variant that actually filters candidate executions during simulation. Then, if the filtering results in 0 candidate executions, the final stdout stats are suppressed. I think this is a bit surprising, since with-restrict noneherd7 will print the normal stats block even when there are 0 executions.The other variants
-restrict nonambiguousand-restrict condonedo not seem to filter candidate executions at all. Instead, they just suppress the final stdout stats if their characterising condition is not satisfied.I do not have the full historical context for these options, but from a UX point of view, I do find it somewhat non-obvious that an option named "restrict" would sometimes filter executions and sometimes only suppress output. It might be worth splitting these functionalities into different CLI options that make this separation of concern more explicit. On the stats printing, I think it might be clearer to always print stats, and perhaps print additional diagnostic lines such as "executions are ambiguous" or "no observed executions" when the relevant conditions are (not) met.