Owner's ruling, and it corrects the design not just the classification: the daylight requirement is already defined in the crinkliness. The gaussian's compact side IS "too little exposed wall per unit floor"; its exposed side is envelope cost. 38.9's proposed daylight: axis was redundant, and keying it off usage: was worse than redundant. What was actually missing: crinkliness is the only leaf quality factor with no per-space target. size, width and proportion are all declared by the space; crinkliness was one global number for every room in every building. crinkliness: none -> no minimum-exposure requirement, may be buried crinkliness: [t, s] -> this space's own target key absent -> the global uncrinkliness target, as today `none` clips the factor on the compact side, it does not switch it off: over-exposure is still penalised, because a crinkly leaf costs envelope whatever it holds. A store may be buried; a store may not be a starfish. The mechanism is backward compatible -- an absent key resolves to the global target, so shipping it changes no score. Behaviour changes only where a config declares something, which keeps the objective change visible per programme in config rather than hidden in a default. Owner's classification: everything a person occupies wants a window, WCs and reception/waiting/foyer included; only stores, plant, records and laundry do not. migrate_crinkliness_key.py declared crinkliness: none on 18 corpus spaces. Crinkliness fails 271 -> 243, of which not-defects 136 (50%) -> 108 (44%); the 28 that went are exactly the utility fails. usage_daylight and needs_daylight are removed as mis-keyed, and DAYLIGHT_USAGES with them -- a vocabulary value should exist only where the engine treats it differently. The historical crinkliness_mode modes stay, default off, so 38.6/38.8 remain reproducible. uncrinkliness_circulation is now settable to none like any space, but its default is left unchanged pending a ruling: corridors were not among the groups ruled on and are 63% of the remaining phantom fails. Lint at parity (46); tests 364 passed, same 7 pre-existing fixture failures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
426 lines
6.4 KiB
Text
426 lines
6.4 KiB
Text
---
|
|
# Maple Court - Larger-than-house benchmark (homemaker-py-leu.1, DESIGN.md §12.1)
|
|
#
|
|
# A three-storey assisted-living / co-housing facility. Built to be the first
|
|
# benchmark larger than harbor-house (16 programme entries): 26 distinct space
|
|
# entries / 52 room instances across 3 required storeys, with a harbor-like
|
|
# adjacency-to-c load and a handful of secondary adjacencies (k/da/o clusters).
|
|
#
|
|
# Code conventions (first letter is semantic in fitness.py): generic c/o/s are
|
|
# reserved for circulation / outside / sahn, so no ROOM code starts with c, o or
|
|
# s. Living-family rooms lead with l, kitchen k, dining d, bathroom t; everything
|
|
# else uses a neutral leading letter (default room scoring).
|
|
|
|
# Building programme: three-storey community living facility
|
|
spaces:
|
|
# ---- GROUND FLOOR (level 0): community + service ----
|
|
lr1:
|
|
usage: living
|
|
name: Common Living Room
|
|
size:
|
|
- 80.0
|
|
- 10.0
|
|
width:
|
|
- 6.0
|
|
- 1.5
|
|
proportion:
|
|
- 2.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
ef1:
|
|
usage: none
|
|
name: Entrance Foyer
|
|
size:
|
|
- 15.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
da1:
|
|
usage: living
|
|
name: Dining Area
|
|
size:
|
|
- 60.0
|
|
- 8.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- k1
|
|
- o
|
|
|
|
k1:
|
|
usage: kitchen
|
|
name: Kitchen
|
|
size:
|
|
- 30.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 1.0
|
|
level: 0
|
|
adjacency:
|
|
- da1
|
|
- c
|
|
|
|
ws1:
|
|
usage: living
|
|
name: Workshop Space
|
|
size:
|
|
- 40.0
|
|
- 6.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 1.8
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
la1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Laundry Room
|
|
size:
|
|
- 20.0
|
|
- 4.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
me1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Mechanical/Electrical Room
|
|
size:
|
|
- 25.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
ur1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Ground Floor Storage
|
|
size:
|
|
- 22.0
|
|
- 4.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
rc1:
|
|
usage: none
|
|
name: Reception Office
|
|
size:
|
|
- 14.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
ph1:
|
|
usage: bedroom
|
|
name: Clinic Room
|
|
size:
|
|
- 18.0
|
|
- 3.5
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
gh1:
|
|
usage: living
|
|
name: Greenhouse
|
|
size:
|
|
- 24.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
# Meeting rooms - anonymous interchangeable (3 total, ground floor)
|
|
m:
|
|
usage: living
|
|
name: Meeting Room
|
|
size:
|
|
- 10.0
|
|
- 2.0
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
count: 3
|
|
|
|
# Ground-floor bathrooms (6 total)
|
|
t:
|
|
usage: toilet
|
|
name: Bathroom
|
|
size:
|
|
- 6.0
|
|
- 1.5
|
|
width:
|
|
- 2.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
count: 6
|
|
|
|
# ---- FIRST FLOOR (level 1): residents' shared + neighborhoods ----
|
|
li1:
|
|
usage: living
|
|
name: Library Corner
|
|
size:
|
|
- 20.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
lo1:
|
|
usage: living
|
|
name: Lounge
|
|
size:
|
|
- 30.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
# Staff offices - anonymous (2 total)
|
|
em:
|
|
usage: bedroom
|
|
name: Staff Office
|
|
size:
|
|
- 12.5
|
|
- 2.5
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 2
|
|
|
|
# Sleeping neighborhoods - anonymous interchangeable (4 total)
|
|
n:
|
|
usage: bedroom
|
|
name: Neighborhood
|
|
size:
|
|
- 60.0
|
|
- 8.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 4
|
|
|
|
ur2:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: First Floor Storage
|
|
size:
|
|
- 18.0
|
|
- 3.5
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
en1:
|
|
usage: living
|
|
name: TV / Media Room
|
|
size:
|
|
- 22.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
# Therapy rooms - anonymous (2 total)
|
|
py:
|
|
usage: bedroom
|
|
name: Therapy Room
|
|
size:
|
|
- 16.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 2
|
|
|
|
# ---- SECOND FLOOR (level 2): individual rooms + amenity ----
|
|
# Individual resident rooms - anonymous (12 total)
|
|
r:
|
|
usage: bedroom
|
|
name: Individual Room
|
|
size:
|
|
- 10.0
|
|
- 2.0
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
count: 12
|
|
|
|
gy1:
|
|
usage: living
|
|
name: Exercise Room
|
|
size:
|
|
- 28.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 0.8
|
|
proportion:
|
|
- 1.8
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
ut1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Utilities Closet
|
|
size:
|
|
- 14.0
|
|
- 3.0
|
|
width:
|
|
- 2.5
|
|
- 0.6
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
ur3:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Second Floor Storage
|
|
size:
|
|
- 16.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
# Second-floor bathrooms (4 total)
|
|
tt:
|
|
usage: toilet
|
|
name: Upper Bathroom
|
|
size:
|
|
- 6.0
|
|
- 1.5
|
|
width:
|
|
- 2.0
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
count: 4
|
|
|
|
q1:
|
|
usage: bedroom
|
|
name: Quiet Room
|
|
size:
|
|
- 12.0
|
|
- 2.5
|
|
width:
|
|
- 2.5
|
|
- 0.6
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
# Building constraints
|
|
storey_minimum: 3
|
|
storey_limit: 4
|
|
force_roof_garden: 0
|
|
|
|
# Circulation ratio (allow more circulation for larger building)
|
|
ratio_circulation:
|
|
- 0.08
|
|
- 0.15
|
|
|
|
# Outside space ratio (courtyard requirement)
|
|
ratio_outside:
|
|
- 0.15
|
|
- 0.10
|
|
|
|
# Staircase requirements (main + secondary)
|
|
staircase_min: 2
|
|
staircase_max: 2
|
|
|
|
# Economic parameters
|
|
value_inside: 300.0
|
|
value_circulation: 50.0
|
|
value_outside: 100.0
|
|
value_supported: 300.0
|