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
368 lines
5.9 KiB
Text
368 lines
5.9 KiB
Text
---
|
|
# Health Centre - Non-synthetic third example programme (homemaker-py-9yx)
|
|
#
|
|
# y51's synthetic n=10/14/18/22 sweep (DESIGN.md 24, extended by xyu 31) scales
|
|
# room count by duplicating a handful of already-interchangeable programme-house
|
|
# codes (b1/t1/b2/t2/l1) via `count:`. harbor-house has real room-type diversity
|
|
# (16 distinct codes) but is out of range at 37 room instances, and its own
|
|
# result stayed null-to-negative -- so it cannot distinguish "the effect needs
|
|
# more rooms than harbor-house has" from "the effect never existed outside the
|
|
# duplicated-code mechanism". This programme fills the gap: a genuinely
|
|
# different building type (a small primary-care health centre, not a house or
|
|
# a dormitory/co-housing facility) with 19 distinct, individually-sized room
|
|
# codes at n=20 room instances -- matching xyu's own n=18 test point without
|
|
# leaning on `count:` as the scaling knob (only one deliberate, realistic
|
|
# duplication: two public WCs).
|
|
#
|
|
# Code conventions (per maple-court, homemaker-py-leu.1): generic c/o/s are
|
|
# reserved for circulation / outside / sahn in fitness.py's get_space_params
|
|
# (any code starting with 's' silently falls back to the *_outside defaults
|
|
# instead of its own size/width/proportion targets) -- so no room code here
|
|
# starts with c, o, or s.
|
|
|
|
# Building programme: small primary-care health centre
|
|
spaces:
|
|
# ---- PUBLIC / RECEPTION ----
|
|
rc1:
|
|
usage: none
|
|
name: Reception
|
|
size:
|
|
- 10.0
|
|
- 2.0
|
|
width:
|
|
- 2.9
|
|
- 0.6
|
|
proportion:
|
|
- 1.6
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
wa1:
|
|
usage: none
|
|
name: Waiting Room
|
|
size:
|
|
- 28.0
|
|
- 5.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 1.8
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
- rc1
|
|
|
|
ph1:
|
|
usage: bedroom
|
|
name: Pharmacy / Dispensary
|
|
size:
|
|
- 12.0
|
|
- 2.0
|
|
width:
|
|
- 3.1
|
|
- 0.6
|
|
proportion:
|
|
- 1.6
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
- wa1
|
|
|
|
# ---- CLINICAL ----
|
|
gp1:
|
|
usage: bedroom
|
|
name: GP Consulting Room
|
|
size:
|
|
- 14.0
|
|
- 2.0
|
|
width:
|
|
- 3.2
|
|
- 0.6
|
|
proportion:
|
|
- 1.4
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
|
|
ms1:
|
|
usage: bedroom
|
|
name: Minor Surgery Room
|
|
size:
|
|
- 20.0
|
|
- 3.0
|
|
width:
|
|
- 4.7
|
|
- 0.8
|
|
proportion:
|
|
- 1.3
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
# homemaker-py-1s3 (§26 path b): two similar-scale clinical procedure
|
|
# rooms, flexible enough to double up in a small practice.
|
|
co_locate:
|
|
- de1
|
|
|
|
de1:
|
|
usage: bedroom
|
|
name: Dental Surgery
|
|
size:
|
|
- 18.0
|
|
- 3.0
|
|
width:
|
|
- 4.6
|
|
- 0.7
|
|
proportion:
|
|
- 1.5
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
- zt1
|
|
co_locate:
|
|
- ms1
|
|
|
|
zt1:
|
|
usage: utility
|
|
name: Sterilisation Room
|
|
size:
|
|
- 6.0
|
|
- 1.0
|
|
width:
|
|
- 1.6
|
|
- 0.4
|
|
proportion:
|
|
- 1.6
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
- de1
|
|
|
|
pt1:
|
|
usage: bedroom
|
|
name: Physiotherapy Room
|
|
size:
|
|
- 24.0
|
|
- 4.0
|
|
width:
|
|
- 4.8
|
|
- 0.8
|
|
proportion:
|
|
- 1.6
|
|
- 0.5
|
|
adjacency:
|
|
- c
|
|
|
|
qr1:
|
|
usage: bedroom
|
|
name: Counselling Room
|
|
size:
|
|
- 9.0
|
|
- 1.5
|
|
width:
|
|
- 2.6
|
|
- 0.5
|
|
proportion:
|
|
- 1.4
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
|
|
tr1:
|
|
usage: bedroom
|
|
name: Treatment Room
|
|
size:
|
|
- 16.0
|
|
- 2.5
|
|
width:
|
|
- 3.3
|
|
- 0.6
|
|
proportion:
|
|
- 1.4
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
|
|
# ---- ADMIN / STAFF ----
|
|
mo1:
|
|
usage: bedroom
|
|
name: Manager's Office
|
|
size:
|
|
- 10.0
|
|
- 1.5
|
|
width:
|
|
- 2.8
|
|
- 0.5
|
|
proportion:
|
|
- 1.5
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
# homemaker-py-1s3: a small practice's manager's office and admin office
|
|
# are a natural loose-fit pairing.
|
|
co_locate:
|
|
- ao1
|
|
|
|
ao1:
|
|
usage: bedroom
|
|
name: Admin Office
|
|
size:
|
|
- 14.0
|
|
- 2.0
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
proportion:
|
|
- 1.6
|
|
- 0.5
|
|
adjacency:
|
|
- c
|
|
co_locate:
|
|
- mo1
|
|
- br1
|
|
|
|
re1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Records Room
|
|
size:
|
|
- 7.0
|
|
- 1.0
|
|
width:
|
|
- 1.7
|
|
- 0.4
|
|
proportion:
|
|
- 1.6
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
- ao1
|
|
co_locate:
|
|
- dp1
|
|
|
|
br1:
|
|
usage: living
|
|
name: Staff Room
|
|
size:
|
|
- 16.0
|
|
- 2.5
|
|
width:
|
|
- 3.4
|
|
- 0.6
|
|
proportion:
|
|
- 1.5
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
co_locate:
|
|
- ao1
|
|
|
|
kt1:
|
|
usage: kitchen
|
|
name: Staff Kitchenette
|
|
size:
|
|
- 8.0
|
|
- 1.5
|
|
width:
|
|
- 2.7
|
|
- 0.4
|
|
proportion:
|
|
- 1.5
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
- br1
|
|
|
|
# ---- SERVICE ----
|
|
me1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Plant / Mechanical Room
|
|
size:
|
|
- 9.0
|
|
- 1.5
|
|
width:
|
|
- 1.9
|
|
- 0.4
|
|
proportion:
|
|
- 1.7
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
|
|
dp1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: General Storage
|
|
size:
|
|
- 8.0
|
|
- 1.5
|
|
width:
|
|
- 1.8
|
|
- 0.4
|
|
proportion:
|
|
- 1.7
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
co_locate:
|
|
- re1
|
|
|
|
t9:
|
|
usage: toilet
|
|
name: Public WC
|
|
size:
|
|
- 4.0
|
|
- 0.8
|
|
width:
|
|
- 1.5
|
|
- 0.3
|
|
proportion:
|
|
- 1.6
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
count: 2
|
|
|
|
t10:
|
|
usage: toilet
|
|
name: Staff WC
|
|
size:
|
|
- 3.0
|
|
- 0.6
|
|
width:
|
|
- 1.4
|
|
- 0.3
|
|
proportion:
|
|
- 1.6
|
|
- 0.4
|
|
adjacency:
|
|
- c
|
|
|
|
# Building constraints
|
|
storey_minimum: 1
|
|
storey_limit: 2
|
|
force_roof_garden: 0
|
|
|
|
ratio_circulation:
|
|
- 0.10
|
|
- 0.12
|
|
|
|
ratio_outside:
|
|
- 0.06
|
|
- 0.05
|
|
|
|
staircase_min: 1
|
|
staircase_max: 2
|
|
|
|
value_inside: 300.0
|
|
value_circulation: 50.0
|
|
value_outside: 100.0
|
|
value_supported: 300.0
|