chained-perimeter example as shipped in examples/chained-perimeter/ — 2 files, one project. Every file compiles in CI; a folder here navigates, never scopes.
model.loft
# Chained perimeter — v0.2 session 1 (element datum accessors)
# Every corner is stated ONCE, where the sharing happens; the chain is
# the anchor graph, and editing W1 moves its dependents.
project "Chained Perimeter"
units imperial
level L1 elev 0' height 10'-0"
grid A vertical at 0'
grid B vertical at 30'-0"
grid 1 horizontal at 0'
grid 2 horizontal at 22'-0"
walltype EXT-1 layers [brick 4", air 1", core: stud 6", gyp 5/8"]
walltype INT-1 width 4-1/2"
doortype 3070 width 3'-0" height 7'-0"
windowtype W-5040 width 5'-0" height 4'-0"
# the perimeter chains through line-datum anchors
wall EXT-1 W1 from (grid.A,grid.1) to (grid.B,grid.1) justify left
wall EXT-1 W2 from wall.W1.end to (grid.B,grid.2) justify left
wall EXT-1 W3 from wall.W2.end to (grid.A,grid.2) justify left
wall EXT-1 W4 from wall.W3.end to wall.W1.start justify left
# the partition rides a carrier (12' right of grid A, in its own 1-to-2
# travel) and tops out with the perimeter (vertical datum anchor)
wall INT-1 W5 from grid.1 to grid.2 at 12' right of grid.A top wall.W1.top
# selector families: hinge follows the swing; jamb follows the tape
door 3070 D1 in wall.W1 at 4'-0" swing left
door 3070 D2 in wall.W1 at 6' past door.D1.jamb
window W-5040 WIN1 in wall.W3 at 8' sill 3'-0"
room 101 name "OFFICE" at (15', 11')
views/L1-plan.loft
# A view owns its file — this page is the plan, a declared query over the
# model. Its facts are its own: scale and cut plane, written on the view.
view plan L1-plan of level.L1 scale 1/4" cut 4'-0" name "Level 1 Floor Plan"