homemaker-layout/examples/harbor-house/patterns.config
Claude c9b9eafef6
Owner's daylight ruling: corridors need it; retract the 61% headline
Ruling: corridors need daylight. Only rooms not occupied from day to day --
a cupboard, a store, a plant room -- do without it.

That overturns the classification 38.8 and 38.9 rested on. Those sections
exempted internal circulation, covered courtyards, WCs, laundries and
reception on my inference rather than any ruling. None are exempt: a
corridor is occupied all day every day, a waiting room likewise, a laundry
is a room people spend time in, a sterilisation room is a workplace.

Re-measured with the classification READ FROM THE CORPUS (a space is exempt
exactly when its own patterns.config declares crinkliness: none) instead of
inferred: 24 of 271 crinkliness fails (9%) were not defects -- not 136
(50%), not 61%. Overstated by about six times.

  - uncrinkliness_circulation stays at [5/6, 1.1/3]. 38.10 called its
    equality with the habitable target the purest case of an untuned value;
    it is not a bug, it is the correct answer reached by default, since
    corridors want daylight on the same terms as rooms.
  - corpus declarations narrowed 18 -> 14. usage: utility was too coarse and
    swept in Laundry Rooms and a Sterilisation Room. What remains is
    storage, plant/mechanical, utilities closets and a records room.
  - audit_crinkliness_truth.py rebuilt to read the classification from the
    configs rather than infer it from usage:, so it cannot drift from the
    ruling again.
  - 38.8/38.9's inflated figures flagged in place, with 38.11 carrying the
    correction.

What survives, none of it dependent on the classification: the 38.6
critique of the three modes; usage_daylight being mis-keyed; the 38.8 A/B
yardstick being wrong; and the per-space crinkliness mechanism itself.

ssz's opening measurement was right but its reading was wrong -- under this
ruling a buried leaf usually IS a defect, so scoring it zero is largely
correct. The narrowed remnant is that the score is FLAT rather than low, so
two equally-buried layouts cannot be ranked. Filed as homemaker-py-9gj; it
is a search-mechanics problem, not a calibration one.

Lint at parity (46); tests 369 passed, 2 pre-existing failures (ut5's stale
baseline and 1ue), both failing identically before this change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-08-28 23:14:21 +00:00

286 lines
4.5 KiB
Text

---
# Harbor House - Programme-driven building evolution (Simplified)
# Two-story community living facility for 50+ residents
# Using anonymous interchangeable rooms to reduce complexity
# Building programme: community living spaces
spaces:
# GROUND FLOOR - Main Community Areas
cr1:
usage: living
name: Common Room with Fireplace
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
# homemaker-py-1s3 (§26 path b): a foyer can double as an informal meeting
# nook (Stewart Brand "loose-fit") — declared here, validated against
# interchangeable()'s S1-S4 bounds before it's ever honoured.
co_locate:
- m
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
# SLEEPING AREAS - Anonymous neighborhoods (5 total, 2 ground + 3 first)
n:
usage: bedroom
name: Neighborhood
size:
- 60.0
- 8.0
width:
- 5.0
- 1.0
proportion:
- 2.0
- 0.6
adjacency:
- c
count: 5
# GROUND FLOOR - Activity Spaces
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
# MEETING ROOMS - Anonymous interchangeable (3 total)
m:
usage: living
name: Meeting Room
size:
- 10.0
- 2.0
width:
- 2.5
- 0.5
level: 0
adjacency:
- c
count: 3
co_locate:
- ef1
# GROUND FLOOR - Service Areas
# BATHROOMS - Ground floor (3 total)
t:
usage: toilet
name: Bathroom
size:
- 6.0
- 1.5
width:
- 2.0
- 0.5
adjacency:
- c
count: 6 # 3 ground + 3 first floor
la1:
usage: utility
name: Laundry Room
size:
- 20.0
- 4.0
width:
- 3.0
- 0.8
level: 0
adjacency:
- c
# homemaker-py-1s3: laundry and plant/M&E rooms are both "back of house"
# utility space — a common real loose-fit pairing.
co_locate:
- me1
st1:
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
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
co_locate:
- la1
# STAFF OFFICES - Anonymous (2 total)
of:
usage: bedroom
name: Staff Office
size:
- 12.5
- 2.5
width:
- 2.5
- 0.5
level: 0
adjacency:
- c
count: 2
# FIRST FLOOR - Community Areas
li1:
usage: living
name: Library Corner
size:
- 20.0
- 4.0
width:
- 3.5
- 0.8
level: 1
adjacency:
- c
# FIRST FLOOR - Individual Rooms (10 anonymous rooms)
r:
usage: bedroom
name: Individual Room
size:
- 10.0
- 2.0
width:
- 2.5
- 0.5
level: 1
adjacency:
- c
count: 10
# FIRST FLOOR - Storage
st2:
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
ut1:
crinkliness: none # no window needed
usage: utility
name: Utilities Closet
size:
- 14.0
- 3.0
width:
- 2.5
- 0.6
level: 1
adjacency:
- c
# Building constraints
storey_minimum: 2
storey_limit: 3
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