homemaker-layout/examples/maple-court/patterns.config
Claude ee050532d6
Declare toilet-to-sleeping adjacency where the brief supports it
A toilet next to a sleeping room is a positive even with no door between
them (Brand): the adjacency is what makes a later knock-through possible.
The engine already scores it -- check_adjacency runs against the unfiltered
graph_base_pre -- but only where a programme declares it, and only
programme-house did.

Declared:
  harbor-house  t -> n    bathrooms serve the Neighborhoods (communal
                          sleeping); both unpinned, 6 t / 5 n
  maple-court   tt -> r   Upper Bathrooms among Individual Rooms, both
                          level 2, already 62% adjacent at seed time

NOT declared, and checking before declaring is what caught these:

  maple t -> n is IMPOSSIBLE. Adjacency is evaluated per level, and maple
  pins t to level 0, n to level 1. Declaring it would have added six
  permanently unsatisfiable fails; the 0% seed-time rate was a hard
  impossibility, not search difficulty. maple's ground floor has six
  bathrooms and one sleeping room (Clinic Room x1) -- a ground-floor WC in
  a communal building is public, so Brand does not apply anyway.

  health-centre has no dedicated WC. The ruling was that a treatment room
  "may give access to a toilet, but this would be a dedicated toilet"; t9
  is a Public WC and t10 a Staff WC. Earning the credit needs a WC added to
  the brief -- programme authoring, filed as homemaker-py-5nw.

Both declarations are reachable (best of 8 seeds 2/3 harbor, 2/2 maple), so
the search gets a gradient not a permanent penalty. evolved-3M-nols-3
84 -> 89 fails, all five the new requirement.

Cost: cpsat assignment ~7.5x slower on harbor (0.28 -> 2.11s per seed);
greedy, the default, unchanged at 0.06s. Ordinary runs pay nothing, but
39.5's cpsat-vs-greedy verdict was measured on a cheaper problem than the
corpus now poses -- filed as homemaker-py-vjd.

Two tests were over-fitted to the old seeds and are repaired to assert
their intent, not relaxed to pass: reassign now sweeps six constructive
seeds (seed 0's better-seeded design legitimately has nothing to improve,
5 of 6 others fire), and repair_circulation asserts that repair strictly
helps plus a >=85% bar rather than a sampled 100% hardened into a
guarantee (measured 25% -> 92%, stable over 6 and 12 seeds).

Closes homemaker-py-3qj.

Lint at parity (46); tests 379 passed, 0 failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-08-29 10:57:44 +00:00

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:
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
- r # Brand: a WC beside sleeping space can be knocked through later
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