Count Ways Down, Not Stairs
Count the stairs on a plan and you learn how many stairs there are. You don't learn how many ways down each floor has.
Two stairs that share one shaft still count as two on the schedule. Break that shaft once and every floor above the break is stranded, exactly as if there were one stair. Life safety doesn't live in the rooms. It lives on the connections between them, and a drawing made of lines can't see connections.
This essay is about modeling egress, fire separation and vertical circulation as what they actually are: properties of routes and boundaries. Then handing the right question to the person who knows the adopted code.
A straight line is not a route
Ask how far someone has to walk to get out of a floor and the tempting answer is a ruler. Measure from the far room to the nearest exit. Wrong measurement. Nobody leaves a building in a straight line. They leave through a door, down a corridor, around the core.
Egress is a graph problem. Rooms and decision points are nodes. Doors and corridors are edges, weighted by walking distance. Exits are destinations. The shortest route from a room to an exit is a solved problem, Dijkstra's algorithm. The hard part was never the math. It's that a drawing doesn't know which lines you can walk through.
My egress study draws a schematic 90 × 48 ft floor: three rooms each side of a central corridor, an exit possible at each end, and a 14 ft link from each room center to the corridor. These are schematic distances measured from room centers, not code travel distances. Take the room in the lower right:
- Left exit only. The straight line is 76.3 ft. The route is 14 ft out plus 75 ft along: 89 ft.
- Block one corridor segment. The straight line is still 76.3 ft. The route is gone. Only 2 of 6 rooms can still get out. A straight-line check scores this plan exactly the same as the last one.
- Turn the right exit back on. The route drops to 29 ft and everyone has a path again. The second exit didn't shorten anyone's walk to the first one. It supplied a different route.
- Stretch the corridor to 138 ft. The far room walks 129 ft against a 115.8 ft line.
The straight line is a floor: the route can never be shorter. But it can be any amount longer, and it can't see a blocked corridor or a locked door at all.
Try it: switch exits on and off, block a corridor segment and stretch the corridor, and compare the orange route with the dashed straight line.
There is no one number
I need to own a mistake here. The first version of my egress post said IBC travel-distance limits were "200 feet sprinklered and 75 feet unsprinklered in most occupancy types," and the applet checked every route against a fixed 200 ft. I withdrew that. No single number is the rule. The applicable limit depends on the occupancy, whether the building is sprinklered, and the edition the jurisdiction actually adopted, with its amendments.
So the rebuilt study draws no limit line. It reports route lengths and leaves the comparison to whoever knows which code applies. I'd rather carry the route and let someone who knows the adopted code decide what number it has to beat.
Two more questions read straight off the graph. How far does someone travel before the route splits into two directions? And are the exits far enough apart that one event can't block both? Put two exits side by side at one end of the corridor and a single blocked segment cuts off everything beyond it. Same exit count, very different graph.
The graph goes vertical
Stack floors and both questions move into the section. Each floor is its own graph. A stair is a chain of vertical edges from the highest floor it serves down to grade. That gives every stair two properties a plan symbol hides:
- Continuity. Break one run and every floor above loses that stair.
- Independence. Two chains are two ways down only if no single break interrupts both.
My stair study draws a five-story section with two stair positions, each 30 ft from the floor's center, and 12 ft per floor-to-floor run.
- Two stairs, separate shafts. All five floors reach grade. The top floor is 78 ft out. Every floor above the first has two independent ways down.
- Interrupt one stair between floors 3 and 4. The route lengths don't move. But floors 4 and 5 now depend on one stair. A table of route lengths scores this plan exactly like the last one.
- Both stairs in one shaft, same break. Two stairs on the schedule and 1,200 ft² of stair footprint, the same as the separated pair. The break takes both runs. Floors 4 and 5 are stranded: 3 of 5 floors connected. Placement turned two stairs into one way down.
Leave every run intact in the shared shaft and the cards read identical to the separated pair: same connectivity, same 78 ft, same 1,200 ft². Except four floors now have only one way down. An area takeoff can't see that. A route table can't either.
Try it: break a stair run, then put both stairs in one shaft, and count the floors that still have two ways down.
Here's a confession that goes with it. The April version of my applet let you drop stairs in any of five positions and labeled any two of them "IBC COMPLIANT · 2 remote means of egress," side by side included. Counting stairs is how you get that answer. Whether two stairs in one enclosure can count as separate exits, how far apart they must be, how wide they have to be: those are code questions, and the drawing answers none of them. It answers the one before them.
Count ways down, not stairs. Place stairs as edges in the section before you draw a tread, because once the core is fixed, so is the answer.
Fire ratings live on the edges
Fire separation attaches to the relationship across a wall, not to either room alone. Two bedrooms in one apartment share a wall that typically needs no rating. Turn that wall to face the common corridor and it usually becomes a rated assembly. Put a different apartment on the other side and it's rated for a different reason. The bedroom didn't change. Its neighbor did.
I first titled this thesis "fire ratings are just edge properties." The "just" oversold it. The pair tells you which walls need a decision. The project's code basis, occupancy, construction type, sprinklers, adopted edition, tells you the number.
My ratings study cuts a 32 × 24 ft plate into four rooms: Unit, Corridor, Stair and Service, with four shared boundaries and a 3 ft door in each. The ratings are authored example values, not a code lookup. Then move the stair from the lower left to the lower right. The takeoff doesn't move: still 28 ft of wall at 60 minutes and 28 ft at 120. But the 16 ft wall under the unit dropped from 120 to 60, and the one under the corridor went from 60 to 120. The doors follow. Same footage, different walls, different doors.
If wall types come from a tally of rated footage instead of from the pairs, the 2-hour wall gets built on the wrong side of the plate, and somebody finds out at inspection, right after the GC has framed it and hung the doors.
Try it: click rooms to change their use, move the stair, and watch the 120-minute wall and its 90-minute door jump to the other side of the plate.
The boundary has thickness, and somebody pays for it
A graph edge has no width. A real wall does, and every interior wall belongs to two rooms and is owned by neither.
Take Unit A's living room and Unit B's bedroom on a 30 ft party wall, drawn as a 5 in partition. Then someone notices it's a unit separation, and the rated, acoustic assembly comes in at, say, 10 in. Round numbers, not a spec. Where do the 5 inches go?
- Hold the centerline. Each side gives up 2.5 in: 6.25 ft² per unit.
- Hold Unit A's face, because A's kitchen run was dimensioned to it. Unit B absorbs all 5 in: 12.5 ft² out of one bedroom, whose clear width drops from 11 ft to 10 ft 7 in. If that bedroom was drawn at the narrowest width you were willing to sell, it isn't that bedroom anymore.
The total is always 12.5 ft². The datum decides whose plan it comes out of. In the adjacency graph, nothing happened: A still touches B. And if you didn't decide whose side owns the thickness, the last person to dimension a cabinet decided for you.
Try it: drag the wall's built thickness and switch the held datum between the centerline and each unit's face to see who pays for the extra inches.
The wall doesn't define the boundary. The boundary defines the wall. Before a plan leaves schematic design, every boundary should carry three things: the pair it separates, a stated dimensioning datum, and which side gives up area when the assembly grows.
Elevators are bandwidth
The vertical graph has one more kind of edge: the one with a motor. Elevators use area and capital, and they decide how people move through a tall building.
My elevator study is an illustrative morning up-peak model, not a traffic study. Take 12 floors, 192 homes, cars at 300 ft/min, and an assumed 45 second wait target. The wait target and the peak demand used below are the study's assumptions, not a cited standard.
- 1 car: a 120 s round trip and a 117 s average wait.
- 2 cars: 44 s. Just inside the target, for 1,680 SF of shaft and machine space.
- 3 cars: 26 s, for 2,520 SF.
- 4 cars: 19 s. The fourth car cuts the wait less than the third did and adds another 840 SF.
Now make it 28 floors, still 3 cars. The round trip grows to 185 s and the wait to 66 s. The cars can move only 4.3% of the 896 residents in five minutes against an assumed 5% peak. Four cars at 600 ft/min bring it to 27 s, and take 7,200 SF of shaft against 2,520 SF in the 12-floor building.
Destination dispatch can group riders headed to the same floors and use each trip better. It doesn't erase travel time or peak demand. The elevator plan is an early design decision, not leftover core space.
Try it: drag the roof to add floors and set the cars, speed and homes per floor, and watch the wait cross the target band.
Code isn't an insurance checklist
There's a tempting story that fire code is just a settlement with insurers. My original slug said as much. The body never supported it, and I don't believe it. Insurance shaped the history of fire regulation, but today's requirements are law, adopted and administered by public authorities, reflecting research, past failures, engineering judgment and policy.
What is true is narrower. Fire protection is a trade, and you can model one slice of it. My fire-cost study uses purely illustrative numbers, none of them fire, insurance or code data: a 2% annual fire chance and a $7M loss per fire, so $140,000 of expected loss a year. If each $10,000 of protection removes 30% of what remains, total annual cost bottoms out at a $45,000 spend, $73,100 a year. Put the code line at $15,000 and the total is $97,000; at $100,000 it's $104,000. Double the severity and the optimum climbs to $65,000. Halve the chance and it falls to $26,000.
That's a property-loss curve. It's not a life-safety analysis, and it says nothing about why any provision exists. Which is the point of the exercise: when a plan reviewer flags something, trace the comment to the governing provision and the project condition. Don't explain it with a theory about who wrote it.
Keep the two jobs separate
The graph tells you which edges need attention: which rooms have one way out, which floors hang on one stair, which walls changed pairs when the stair moved, which side loses five inches. The code analysis for the actual building tells you the numbers.
Keep those jobs separate and you catch the moved stair on the plan, not at inspection.
Measure along the path. Rate the pair. Count ways down.
Model routes, stairs and rated boundaries on your own plan before the core is fixed. Book a TestFit demo and run this on your own site.