In summary, skipping stations from the main schedule is not intended any more at this point. Interrupts are additions to the schedule, not replacements.
"Forcing equal visits along all stations" of the main schedule is not a bug, it is intended behaviour.
I don't understand why removing the ability to skip stops in the main schedule was a goal in the first place. Skipping main stations has a use case that interrupts just don't provide. Deactivating a station now completely blocks any train with that stop in its route. This is a regression from old functionality that removes flexibility from the rail network. Why force players in this direction when it was previously optional? This intended behavior makes it impossible to do on demand delivery in a reasonable way.
What do I mean by this?
Previously, deactivating a station allowed a train to ignore a destination it did not need to travel to. You could set up a circuit network that observed the contents of the chests at an unloading station, and logic would enable or disable that stop. When a stop was disabled, trains in that route would skip it and go to the next, or if all stops were disabled, it would wait until one became available and go straight there. Thus, the train would only run when it needed to run and it would consume the minimum amount of fuel by not wasting time on traversing to unneeded destinations.
For example, in one of my saves I have eight defensive walls built at choke points around the map, each with their own train stop. I have a train which I want to use to deliver ammo and supplies to the walls, but only when a resupply is needed. I want this train to wait until an unloading station at one of these walls has less than 1k bullets in its chests (the buffer) before leaving. I want the train to go to only the stations where the bullet count dips below the 1k buffer, and avoid the stations that are above this buffer. This behavior was possible when disabled stations were skipped, and it was easy and simple to understand and set up. It is not possible anymore.
The only solution currently is to send the train to
every unloading station anytime one needs a resupply. While this works, the walls are dozens of chunks away and with 7 to 8 stops it becomes ridiculous for this train to traverse the entire map simply to resupply the final stop in the route. With previous behavior, disabled stops would allow it to skip straight to the last station and then back to the loading station. Or, to stop at two stations along the route instead of all eight, etc.
An alternative is for me to make a separate train for every wall, and create an 8 lane parking yard for them, but this is equally inefficient and ridiculous. I need a new train for every new wall. I also now need 8 trains when the volume I am consuming across all walls could be handled by one.
I tried looking at a way to implement this with interrupts, but the only way I could think to do so was to have each wall represented as a separate symbol on the logic network, and trigger the interrupt on that specific wall's symbol being > 0. At the pickup station, the train would interrupt to the wall it needs to visit upon receiving that symbol. However I need an interrupt for every station now, and using interrupts in this way is replacing the main stops, which according to what you are saying is
not what interrupts are meant for. I agree, because this solution is ugly and isn't very scalable, especially if I want to implement similar behavior with other stations connected to the same logic network. I would need to assign a symbol to every train stop I create unless I physically separate the logic networks between each route, with separate lines of power poles running across the map.
How am I supposed to do the above in a reasonable way, with current functionality?
Also, a more generic and simple example:
I would like to be able to prevent my trains from driving to a station unless it can fully unload. I can calculate this by taking the total amount of a resource that all of the station's chests can hold, and subtracting how much a wagon can hold. If the value dips below this, a train can fully unload there. Previously, I would watch the chests with logic and keep the station disabled until I had enough space to unload a full train car into the chests. I cannot do this anymore in a rail network that has more than one unloading point. Schedule logic only allows you to check if the station is not full, not if there is enough space to unload X amount of a resource.
There are also situations where you might be transporting one wagon half full with item A and half full with item B. Or 1/4th item A and 3/4th item B. With reserved item slots in a wagon, there's many possibilities that "station full or not" doesn't cover. How are you supposed to know if that train can fully unload? Logic used to provide an elegant solution, but now you'd have to pipe logic across your base to get it to the train itself, to fire an interrupt. Each interrupt would use up one or more logic symbols no longer usable in a base-wide network. You'd also need to send this logic to every station that applicable trains may be sitting at. Previously, calculations could simply be done locally, and the station could just be enabled or disabled...
Stops in a main schedule should be skippable. If someone wants their train to equally visit all stations they can still set up the rail line to do this, by not disabling stops. It makes no sense to force uniform train stop visits upon players, and this is why people were upset with the bug fix. I've looked over the FFF articles you linked and it doesn't not make mention of the change to train stop enable/disable state. Interrupts should be used for the ability to include an additional, infrequent station in the schedule. A refueling depot trains can go to when their fuel gets low is perfect for this. Interrupts do not and should not replace skippable stations.