Sheet ceiling = dry run with every suggestion on this graph; same model as Now.
The number beside each room is its raw score for the active tab. Higher is always better. The formula for each is below, followed by a plain-language explanation.
In plain terms — three steps:
1) Topology: look at all rooms within 2–3 hops on the graph. If many are one hop away, local Social Index is higher.
2) Visibility bonus: multiply up if this room and its neighbours have open or glass boundaries.
3) Tags: ★ Hub = among the highest local scores on this plan and more connected than most rooms; ○ Low = local score below 70% of the building average on the same measure and at most two neighbour-links (dead-end / tip of a branch).
li(r) = Σ(1/depth) within R graph hops × (1 + ownTrans×0.6 + nbrTrans×0.4)
R = 2 if rooms ≤ 45, else R = 3
Range: ~0 (isolated) → ~5+ (highly connected hub)
p(r) = ownTrans×0.50 + nbrTrans×0.35 + bonus×0.15
Range: 0.0 (fully sealed) → 1.0 (fully open/glass)
Tags (Social Index only):
★ Hub — local Social Index in the top ~15% on this floor’s graph and number of neighbour-links in the upper ~half of all rooms. Anchors a neighbourhood-scale concentration.
○ Low — local Social Index below 70% of the floor average and ≤ 2 graph neighbours. Marks structural tips and weak local integration, not “bottom of the sorted list”.
The building is read as a network of rooms. Two questions are asked about that network — one about social structure, one about wall openness. Each answer is a number between 0 and 1. They are combined into the Compliance score. 70% is the level observed in the reference school corpus used for calibration.
Now is that score with your current walls. Sheet ceiling is the same formulas run once with every suggested wall change on this graph applied — it shows honest headroom here, not a forced pass. Outside the model (always listed under the bar): new links between wings, larger shared commons, section or facade moves — those are not part of the number.
Compliance = Social Index × 0.55 + Permeability × 0.45
Classrooms and corridors matter more than stores or WCs — so the score is weighted by room type before averaging. Think of it as: a glazed corridor counts for more than a glazed cupboard.
Weight Classroom 1.0 · Corridor / shared space 1.3 · Support / store 0.25
Plain terms — three steps:
1) Topology: BFS out to R hops; dense shallow neighbourhoods score higher.
2) Visibility: multiply by (1 + own boundary openness + mean neighbour openness).
3) Tags: ★ Hub ≈ top 15% of localI and degree ≥ 55th percentile. ○ Low uses the classic rule: localI < 0.7 × mean(localI) and degree ≤ 2. If no hub qualifies on a flat plan, up to two strong candidates are promoted.
localI(r) = Σ(1/depth) for rooms within R graph hops
× ( 1 + ownTrans×0.6 + meanNbrTrans×0.4 )
R = 2 if nRooms ≤ 45, else R = 3
wallTrans solid=0 open=0.5 glass=1.2
★ Hub localI ≥ Q85(localI) AND degree ≥ Q55(degree)
○ Low localI < mean(localI) × 0.7 AND degree ≤ 2
Social Index = weighted average of localI across all rooms
permeability(r) = ownTrans×0.50 + nbrTrans×0.35 + bonus×0.15
wallTrans solid=0 open=0.75 glass=0.85
bonus +0.15 if the room borders both a Classroom AND a Corridor
Permeability = weighted average of permeability across all rooms
Hillier & Hanson (1984) integration · Hertzberger (2008) inhabited wall threshold
Advanced: graph JSON. Most designers use New plan setup (no code). Optional PNG/JPG underlays here. Frozen demo: syntaxlab-baseline.html
Imported graphs are kept in memory until you refresh or restore built-in. Export your JSON from your authoring workflow to keep a copy. Schema version 1: schemaVersion, floors.ground.spaces[] (name,type,x,y,wallType), floors.ground.edges[] as name pairs.