OSM Tags and Penalty Rules for Narrow Bidirectional Roads?

I’m in the midst of exploring GraphHopper to understand the supported OSM tags for identifying narrow roads that permit bidirectional traffic in the default car profile. Additionally, I’m interested in the penalty rules:

  • Are there penalties for roads with a width less than X?
  • Are there any minimum requirements for width?
  • Does the number of lanes play a role?
  • Are there any other supported tags?

If you have any pointers to the relevant code, I’d greatly appreciate it!

Road accessiblity for the default car profile is determined in CarAccessParser.java while the speeds are set in CarAverageSpeedParser.java. Currently neither considers width or the number of lanes. The number of lanes and the road width are available via the corresponding encoded values so you can easily use them to modify the speed or close such roads.