If I want an NPC to follow a strict path then I find it’s easier to breakup the path into straight lines with invisible parts.
So with your example you could have part1 at the T junction and part2 at the end point of the red line. Then simply loop through all parts of the path with MoveTo, telling your NPC to go to Part1, when it reaches Part1, MoveTo to Part2 etc.
If parts of your created path are quite far away from each other then use Pathfinding to reach each part as MoveTo has a timeout of 8 seconds if I remember correctly.
Another method would be to create invisible walls so the npc can’t get onto the grass and make either a collision group so players can walk through them or set CanCollide to false in each players starterscripts.
Polaris-Nav is still in development, but when released you can select the parts that make the path and then generate a navigation mesh on it. You can then assign this mesh to the NPCs you want to only follow that path.