In fact it is quite simple and also my thinking.
Any turn instruction with a direction must have the direction symbol.
We can enrich via instruction to [Waypoint name + Turn instruction].
Each routing service can have different behavior:
BRouter, GraphHopper + Kurviger, OpenRouteService, OSRM, etc.
BRouter does not generate (double) turn instructions on via and shaping points.
We can only have the [Waypoint name] instructions on waypoints with BRouter.
BRouter did not generate either the [Waypoint name] instructions on waypoints.
I generate them myself when I post process BRouter routing: