How are navigation instructions created?

I am interested to discover the connection between the tags of highways and the instructions one receives using OSM for navigation. I experienced a situation yesterday when I was informed to take a slip road before reaching a roundabout; the approach and departure sections merely split (http://www.openstreetmap.org/#map=18/51.30122/-1.04263). Is it the tags alone (such as oneway=yes, perhaps, in this case) that dictate how navigation software interprets them? I should like to know for editing purposes.

It’s the tags, and the relation of OSM elements to each other. For example, I use a Garmin satnav, and it’s using (only) an OSM map that I create for it. It knows the tags on the road (such as highway=primary_link instead of highway=primary for a slip road), but it also knows the spatial relationship (hence “turn left”, “slight left”, “second exit” etc.).

However, it’s the job of the router to be able to interpret OSM data, so if the router does “get it wrong”, don’t munge the data so that the router can understand it.

Also see http://wiki.openstreetmap.org/wiki/Routing

where you will find links to some opensource routing engines … there you can dig into sourcecode to find out how those instructions are created.