I know first hand that tracking down erroneous exits can drive you crazy and waste so much time!
So I dropped this little bit of code into zcheck.
It adds two simple checks:
does this exit have a way back?
if it does, is it back to the same room?
in act.wizard.c, find the zcheck() function and change the very bottom to:
Code:
  } /*is room in this zone?*/
  } /*checking rooms*/
  send_to_char(ch, "\r\nChecking exit consistency and logic..\r\n");
  for (i=0; i<top_of_world;i++) 
  {
    if (world[i].zone==zrnum) 
    {
      m++;
      for (j = 0, k = 0; j < DIR_COUNT; j++)
      {
        if (!world[i].dir_option[j])
          k++;
        
        else
        {
            if (world[i].dir_option[j]->to_room != NOWHERE)
            {
                if (!world[world[i].dir_option[j]->to_room].dir_option[rev_dir[j]])
                    send_to_char(ch, "-[Room %d]- Exit %s has no reverse direction.\r\n",world[i].number, dirs[j]);
                else if ( world[world[world[i].dir_option[j]->to_room].dir_option[rev_dir[j]]->to_room].number != world[i].number )
                    send_to_char(ch, "-[Room %d]- Exit %s does not return to this room.\r\n",world[i].number, dirs[j]);
            }
        }
      }
      if (k == DIR_COUNT)
        l++;
    }
  }
  if (l * 3 > m)
    send_to_char(ch, "More than 1/3 of the rooms are not linked.\r\n");
}
 
I hope this will help you and your builders sanity remain intact