In my experience, most stand-alone software board games is rule enforcing. Not many versions of chess software will let you make illegal moves. Most card game software enforces the rules. Software that corresponds to a single specific board game frequently enforce its rules.
In plenty of cases this can make for a smother experience. Preventing players from accidentally moving out-of-turn, ensuring that easily forgotten triggered actions actually trigger, ensuring people don't accidentally play a card face up when it should be face down due to clunky or unfamiliar simulator controls, and automatically updating any form of counters (hit points, victory points, round marker, etc) generally just help the game flow smoothly.
This is not without some potential downsides. Being able to temporarily not enforce the rules can be very useful in teaching, or to allow fixing some dumb mistake by consensus. I don't see a problem with allowing rule enforcement to be disabled, and actions taken that would normally not be allowed.
But there is no need for allowing illegal actions to be the normal mode. Those situations are uncommon enough that toggling some setting to allow them to take place is not unreasonable. The main case where it would be fairly inconvenient is if one wants house rules, in which case having to mode switch every time the house rules diverge from normal ones. But in that case the better option might just be to edit the game definition anyway.
I will admit that for many stand alone software versions of games, one of the major reasons allowing for rule violation actions is uncommon is because it would be difficult to enable it. The game just wont have UI for such actions, and coding one up can potentially be a ton of work. At best you might get some form of limited state editing that is a slightly polished version of the developers debugging tools. But when running in TTS or similar, these concerns are much less of an issue.
To me, it’s the fundamental difference between a board game engine and a specific board game app.
If my family plays a physical game (such as Ticket To Ride) with a crazy house-rule, I would have every expectation to play a Tabletop Simulator version of ticket to ride with my own house-rule, but I’d have no expectation that the Ticket to Ride app would allow that.
That’s why I generally prefer the generic board game engine with rules assistance built in, over the custom app (even though the custom app often has a nicer, more polished UX). I’d prefer to be able to draw outside the lines if I want to.
It certainly would not be shocking to see some (scripted) Ticket to Ride implementations on TTS-like platforms to have say aggressive auto-snapping when trying to place trains (to help keep things neat and legible, as fine placement control in game is far more difficult than IRL), which may hamper a house rule that adds a new route not marked on the board (as pieces could snap to a different nearby route).
Alternatively it may instead have some feature to automatically place trains of your color (from your designated stash area)) along a selected route, without otherwise restricting placement, but that might still make certain house rules rather inconvenient in comparison.
Or on the cards side, it would not be at all shocking for some scripted implementations to automatically handle some aspects of the face up drawing pool. But of course, this won't necessarily mesh well with house rules that vary the size of the pool.
Unscripted versions may still be slightly inconvenient if pre-provided zones are used that don't match up with what your house rules want, but pure parts only implementations with no helpful pre-setup can also be obnoxious even if they are the most flexible. (And even then I'm not convinced that say someone's insane house rules involving train piece Jenga will necessarily work as desired!)
In plenty of cases this can make for a smother experience. Preventing players from accidentally moving out-of-turn, ensuring that easily forgotten triggered actions actually trigger, ensuring people don't accidentally play a card face up when it should be face down due to clunky or unfamiliar simulator controls, and automatically updating any form of counters (hit points, victory points, round marker, etc) generally just help the game flow smoothly.
This is not without some potential downsides. Being able to temporarily not enforce the rules can be very useful in teaching, or to allow fixing some dumb mistake by consensus. I don't see a problem with allowing rule enforcement to be disabled, and actions taken that would normally not be allowed.
But there is no need for allowing illegal actions to be the normal mode. Those situations are uncommon enough that toggling some setting to allow them to take place is not unreasonable. The main case where it would be fairly inconvenient is if one wants house rules, in which case having to mode switch every time the house rules diverge from normal ones. But in that case the better option might just be to edit the game definition anyway.
I will admit that for many stand alone software versions of games, one of the major reasons allowing for rule violation actions is uncommon is because it would be difficult to enable it. The game just wont have UI for such actions, and coding one up can potentially be a ton of work. At best you might get some form of limited state editing that is a slightly polished version of the developers debugging tools. But when running in TTS or similar, these concerns are much less of an issue.