One rule, one cut
A constraint is an inequality — height ≤ limit, area ≥ minimum — and on the map of designs it draws a boundary: allowed on one side, forbidden on the other. The design doesn’t stop existing when it crosses; it just stops being buildable. Drag yours over the line and watch the verdict flip.
Drag the design dot across the boundary.
Rules intersect
Real briefs stack rules, and each one only ever shrinks what remains — the feasible region is the intersection of every cut. Stack enough of them and the map can close entirely: an overconstrained brief, where no design exists and something has to give. The area counter below never goes up.
Toggle the rules on and off; try to close the map.
Islands and straits
When rules curve, the feasible set can split into islands — pockets of valid designs with a forbidden sea between them. That geography matters enormously for search: a step-by-step improver born on one island may never discover the other, however good it is. Try walking your design from left to right without touching red.
Drag the dot; the forbidden strait blocks the way.
Repair by projection
What do you do with a violating design? The gentlest answer: project it — slide it to the nearest point that obeys, changing it as little as possible. If that sounds familiar, it should: it’s exactly how the cloth solver enforced its distance constraints, applied to design instead of fabric. Drop your design anywhere illegal and let the map pull it home.
Drag anywhere; release, and it snaps to the nearest legal design.
The site test
The tower returns, and now it has to pass planning. Four live rules — a height cap, a daylight plane that trades height against taper, a minimum floor area, and a twist-comfort limit that tightens as the tower slims — carve the height × taper map in real time. The twist slider reshapes the region from off-axis, the readout names exactly which rules a violating design breaks, and Repair projects it to the nearest tower that passes. Red means rejected; get it warm.