Progress on hallways continues to grind along, never as easy as it appeared in the distance, but always in motion. I spent a while getting A* to filter out open squares and their neighbors, to prevent leaks; now it's developed a tendency to search forever without finding its destination. I'll be ramping up the unit tests to get a handle on this business, most likely.
That said, it's starting to look reasonable for the case of just 3 rooms, if we can look past some minor door placement issues:
I redid the positioning in a new way that gets rid of the skew we had before; now it just scales the raw coordinates (which are too close together to begin with) by a constant factor, increasing that factor if things turn out to be too tight. Nice and simple, but it doesn't solve the problem of A* searching forever. Hallways must somehow be cutting off doorways, but it's a little difficult to get visibility into how unless I build a bunch of new (probably sorely needed) instrumentation to help me see.
I find myself pondering again an idea that had occurred to me before, which was to route hallways first and then overlay rooms on the intersections. This would have some advantages, but brings issues of its own. The more I think about it, though, I think it may be the way to go. Guess I'll sleep on it.