91/91cases passed.30October2026. Shared/perimeter6m route geometry only. Perimeter alone does not establish building-side access.9m turning,45t capacity,overhead,levels and full CFO approval are unverified. No podium.
Studio · Base404tests · Expected/actual results
| Case | Expected | Actual | Evidence | Tolerance | Result |
|---|---|---|---|---|---|
| Height gap at 14.999 | 6 | 6 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 15 | 6 | 6 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 17.5 | 6 | 6 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 18 | 6 | 6 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 18.001 | 7 | 7 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 21 | 7 | 7 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 21.001 | 8 | 8 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 24 | 8 | 8 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 24.001 | 9 | 9 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 27 | 9 | 9 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 27.001 | 10 | 10 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 30 | 10 | 10 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 30.001 | 11 | 11 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 33 | 11 | 11 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 33.001 | 12 | 12 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 36 | 12 | 12 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 36.001 | 13 | 13 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 39 | 13 | 13 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 39.001 | 14 | 14 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 42 | 14 | 14 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 42.001 | 15 | 15 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 45 | 15 | 15 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 45.001 | 16 | 16 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 48 | 16 | 16 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 51 | 16 | 16 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Height gap at 100 | 16 | 16 | UP§3.2.4.3pp52–53;max(6,table,6+ceil((H−18)/3)capped16);conflict flagged | 0.000001 | pass |
| Shortest rectangular gap | 20 | 20 | Centres30m apart minus5+5half-widths | 0.000001 | pass |
| Rotated90degree footprint gap | 10 | 10 | Projected widths20m;30−10−10=10 | 0.000001 | pass |
| Rotated45degree parallel gap | 20 | 19.999999999999996 | Local-x translation30m minus10m width | 0.000001 | pass |
| Touching rectangles gap zero | 0 | 0 | Independent geometry / stated model invariant | 0.000001 | pass |
| Overlapping rectangles gap zero | 0 | 0 | Independent geometry / stated model invariant | 0.000001 | pass |
| Union of two overlapped squares | 150 | 150 | 100+100−50 | 0.000001 | pass |
| Union of four identical squares | 100 | 100 | Inclusion-exclusion avoids double-counting | 0.000001 | pass |
| Taller block controls required gap | 9 | 9 | maxheight25m;prose9m,table7m;larger flagged scenario | 0.000001 | pass |
| Raising one block increases required gap | 15 | 15 | Independent geometry / stated model invariant | 0.000001 | pass |
| Actual distance threshold 8.999 | false | false | Required9m;distance=centre separation−10m | 0.000001 | pass |
| Actual distance threshold 9 | true | true | Required9m;distance=centre separation−10m | 0.000001 | pass |
| Actual distance threshold 9.001 | true | true | Required9m;distance=centre separation−10m | 0.000001 | pass |
| Plot setback also grows with taller neighbour | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Shared plot FAR is not multiplied by block count | [16000,15000,true] | [16000,15000,true] | Two40×40plates×5floors=16000;plot10000×1.5=15000 | 0.000001 | pass |
| High-rise fire trigger 14.999 | false | false | NBCPart4§1.2high-rise/Part2height15m;flat-site model basis | 0.000001 | pass |
| High-rise fire trigger 15 | true | true | NBCPart4§1.2high-rise/Part2height15m;flat-site model basis | 0.000001 | pass |
| High-rise fire trigger 15.001 | true | true | NBCPart4§1.2high-rise/Part2height15m;flat-site model basis | 0.000001 | pass |
| Education/health9m trigger primary 8.999 | false | false | NBCPart4§1.2(b)(2)–(3),PDFp262 | 0.000001 | pass |
| Education/health9m trigger primary 9 | true | true | NBCPart4§1.2(b)(2)–(3),PDFp262 | 0.000001 | pass |
| Education/health9m trigger clinic 8.999 | false | false | NBCPart4§1.2(b)(2)–(3),PDFp262 | 0.000001 | pass |
| Education/health9m trigger clinic 9 | true | true | NBCPart4§1.2(b)(2)–(3),PDFp262 | 0.000001 | pass |
| Special-occupancy one-floor500m²boundary 499.999 | false | false | NBCPart4§1.2(b)(1):more than500m²on any floor,not gross sum | 0.000001 | pass |
| Special-occupancy one-floor500m²boundary 500 | false | false | NBCPart4§1.2(b)(1):more than500m²on any floor,not gross sum | 0.000001 | pass |
| Special-occupancy one-floor500m²boundary 500.001 | true | true | NBCPart4§1.2(b)(1):more than500m²on any floor,not gross sum | 0.000001 | pass |
| Gross600m²alone does not trigger500m²floor rule | false | false | Two300m²floors;neither floor exceeds500m² | 0.000001 | pass |
| Assembly triggers even below9m/500m² | true | true | NBCPart4§1.2(b)(4):all assembly buildings | 0.000001 | pass |
| Fire strip geometric area | 504 | 504 | (20+12)×(10+12)−20×10=504 | 0.000001 | pass |
| Fire strip outside plot detected | 24 | 24 | 1m outside at left×24m expanded depth | 0.000001 | pass |
| Park in setback may still obstruct fire strip | 144 | 144 | Park startsx60;blockBendsx60;6×24=144m²fire strip obstructed | 0.000001 | pass |
| Neighbouring clear fire strips may be shared | false | false | 6m gap is one shared clear lane,not two separately charged lanes | 0.000001 | pass |
| Automatic entry crossing another building is rejected | true | true | Straight6m connector to rear high-rise crosses front low-rise | 0.000001 | pass |
| Fire review never implies checked turning/load approval | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Generated1building layout satisfies encoded geometry | true | true | Shared baseFAR3.5×12000=42000;gap/fire/park/plot checks run | 0.000001 | pass |
| Generated2building layout satisfies encoded geometry | true | true | Shared baseFAR3.5×12000=42000;gap/fire/park/plot checks run | 0.000001 | pass |
| Generated4building layout satisfies encoded geometry | true | true | Shared baseFAR3.5×12000=42000;gap/fire/park/plot checks run | 0.000001 | pass |
| Layout generation preserves input and fixed site facts | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Independent heights survive rearrangement | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Linked edits preserve separate positions | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Plotted house does not silently acquire multiple blocks | false | false | Independent geometry / stated model invariant | 0.000001 | pass |
| Unsupported three-building model rejected | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Corrupt/duplicate building identifiers rejected | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Infeasible narrow layout does not force massing | false | false | Independent geometry / stated model invariant | 0.000001 | pass |
| Layout JSON round trip preserves measured area | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Single-building fit cannot ignore a fire-space failure | true | true | Clear ring crosses plot boundary; locked dimensions cannot claim a valid fit | 0.000001 | pass |
| Partial ground floor fire strip uses measured footprint | true | true | Single quarter-area plate=10x10m; 6m offset=22x22=484m2 | 0.000001 | pass |
| Scaled footprints pack at one12m gap, not two margins | [12,12] | [12,12] | UP section3.2.4.3 Note2 p53: one higher-block gap; final footprints, not unscaled grid cells | 0.000001 | pass |
| Four scaled blocks have one gap at each facing grid pair | 4 | 4 | 2x2 grid: four orthogonal facing pairs share one required distance; diagonal gaps larger | 0.000001 | pass |
| Perimeter route reserves one site ring | 2256 | 2256 | 100x100 plot minus88x88 interior=2256m2;6m inward reservation | 0.000001 | pass |
| Perimeter road never claims complete building access | true | true | NBC Part3 section4.6(c) p123 retains building-side access; no duplicated automatic building loops in perimeter drawing | 0.000001 | pass |
| Park obstructing shared perimeter road is detected | 120 | 119.99999999999994 | 6m x20m park intersection with left perimeter route | 0.000001 | pass |
| Too narrow plot cannot contain perimeter route | false | false | 6m inward offsets leave empty inner polygon | 0.000001 | pass |
| Perimeter scenario generates1blocks with clear route | true | true | Checked plot/park/building intrusion; side-access/turning approval still review | 0.000001 | pass |
| Perimeter scenario generates2blocks with clear route | true | true | Checked plot/park/building intrusion; side-access/turning approval still review | 0.000001 | pass |
| Perimeter scenario generates4blocks with clear route | true | true | Checked plot/park/building intrusion; side-access/turning approval still review | 0.000001 | pass |
| Plot editing scales actual polygon area | 20000 | 20000 | Scale x2; original10000m2 becomes20000m2 | 0.000001 | pass |
| Custom polygon direct edit preserves convex shape and area ratio | true | true | Horizontal x2 and vertical x0.5 preserve area, vertex order and convexity | 0.000001 | pass |
| Direct plot editing preserves road and approval facts | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Resizing rotated footprint preserves anchored opposite corner | true | true | Opposite corner remains fixed under local rotated width/depth resize | 0.000001 | pass |
| Linked footprint resize preserves other building position | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Unlinked direct editing changes only selected footprint | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Negative plot edit rejected | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Over-range building edit rejected | true | true | Independent geometry / stated model invariant | 0.000001 | pass |
| Directly edited plot regenerates same building count | true | true | 120x140x3.5=58800 counted area; one shared entitlement after user site edit | 0.000001 | pass |
| One-floor partial plate shows its measured size | [10,10] | [10,10] | 20x20 nominal plate at25percent area has10x10 measured footprint | 0.000001 | pass |
| Direct edit of partial ground plate preserves physical anchor | true | true | Physical opposite corner remains fixed; new measured footprint12x14=168m2 | 0.000001 | pass |