homemaker-layout/experiments/usage_map_proposal.yaml

123 lines
5.3 KiB
YAML
Raw Normal View History

homemaker-py-sel: propose usage for all 52 corpus codes; scope was understated Bruno's rulings settle the framing: usage is an ACCESS-REQUIREMENT class, not a room-name category. li1 "Library Corner" and br1 "Staff Room" are living rooms (same access requirements); tr1 "Treatment Room" has a bedroom's requirements (terminal, not a circulation route); la1 "Laundry Room" is utility. Ground-floor external cases (fuel stores, bins) need no class — level: 0 plus adjacency: [o] already expresses that. SCOPE CORRECTION. My "93% pure annotation, 7 entries change" estimate was mechanically true but misleading: `none` is not neutral. Nothing is stripped, so has_circulation MAY ROUTE THROUGH the room. 34 of 52 distinct corpus codes currently have no usage class and are therefore modelled as permeable corridors -- including Dental Surgery, GP Consulting, Minor Surgery, Physiotherapy, Counselling, Records, Sterilisation, six storage rooms, four offices and "Individual Room" (a resident's own room). Consequence for §38: the model OVERSTATES connectivity, since a level can be found connected through rooms that are dead ends in reality. "level N not connected" is therefore rarer than it should be, compounding §38.2 -- the objective already pays x60-85 to delete circulation, and the corridors it deletes are then not missed because store cupboards stand in for them. Adds experiments/usage_map_proposal.yaml: all 52 codes covered (47 assigned, 5 unresolved, 0 missing) -- living 10, kitchen 2, bedroom 15, toilet 7, utility 10, none 3. Nothing reads it yet; it is the review artifact and, once agreed, the migration input. Also verified and recorded (Q2): a dedicated toilet off a bedroom-class room does NOT survive scoring. has_circulation runs its bedroom loop before its toilet loop and the bedroom loop strips bedroom->toilet, so the ensuite is severed -- for real bedrooms too. Existing Urb behaviour, neither caused nor fixed by the usage key. No src changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-08-26 10:47:11 +00:00
# Proposed `usage:` assignments for every corpus room code (homemaker-py-sel).
#
# FOR REVIEW — nothing reads this yet. Once agreed it becomes the input to the
# migration that writes `usage:` into each `patterns.config`.
#
# Usage is an ACCESS-REQUIREMENT class, not a room-name category (Bruno's
# framing: "library corner and staff room are living rooms as they have the same
# access requirements"). What each class actually does, in `graph.has_circulation`:
#
# living keeps its MOST popular circulation neighbour; not stripped from
# other rooms, so living spaces may chain to one another.
# kitchen as living, plus `fitness.access` accepts living/circulation.
# bedroom edges to living/kitchen/bedroom/toilet are REMOVED, so it is
# reachable only from circulation or outside — a terminal private
# room, never a route.
# toilet edges to outside/living/kitchen/toilet removed.
# utility NEW. Terminal, not a route — the same requirement as `bedroom`.
# See OPEN QUESTION 1 below.
# none nothing is stripped: the room is fully permeable and the
# connectivity graph MAY ROUTE THROUGH IT. Correct only for spaces
# that genuinely are part of the circulation system.
#
# The `none` semantics are the reason this is a bigger change than it looks:
# 34 of 52 corpus codes currently get no class, so a Dental Surgery, a Records
# Room and a Utilities Closet can all serve as corridors today.
living:
cr1: Common Room with Fireplace
da1: Dining Area
en1: TV / Media Room
gy1: Exercise Room
l1: Living/Dining/Kitchen
li1: Library Corner # confirmed: same access requirements as a living room
lo1: Lounge
lr1: Common Living Room
br1: Staff Room # confirmed: same access requirements as a living room
m: Meeting Room
kitchen:
k1: Kitchen
kt1: Staff Kitchenette
bedroom: # terminal private room, entered from circulation only
b1: Master Bedroom
b2: Second Bedroom
r: Individual Room
tr1: Treatment Room # confirmed: access requirements of a bedroom
de1: Dental Surgery
gp1: GP Consulting Room
ms1: Minor Surgery Room
pt1: Physiotherapy Room
qr1: Counselling Room
py: Therapy Room
q1: Quiet Room
mo1: Manager's Office
ao1: Admin Office
em: Staff Office
of: Staff Office
toilet:
t: Bathroom
t1: Ensuite Bathroom
t2: Guest Bathroom
t3: Ground Floor WC
t9: Public WC
t10: Staff WC
tt: Upper Bathroom
utility: # terminal, never a circulation route
la1: Laundry Room # confirmed: utility, not a circulation route
ut1: Utilities Closet
me1: Mechanical/Electrical Room # "Plant / Mechanical Room" in health-centre
dp1: General Storage
st1: Ground Floor Storage
st2: First Floor Storage
ur1: Ground Floor Storage
ur2: First Floor Storage
ur3: Second Floor Storage
re1: Records Room
none: # genuinely part of the circulation system
ef1: Entrance Foyer
rc1: Reception # "Reception Office" in maple-court — see Q3
wa1: Waiting Room
# --------------------------------------------------------------------------- #
# UNRESOLVED — please rule on these
# --------------------------------------------------------------------------- #
unresolved:
ws1: Workshop Space # living (shared activity) or utility (terminal)?
zt1: Sterilisation Room # utility, or bedroom-class off a surgery?
ph1: Pharmacy / Dispensary # health-centre; bedroom-class? and see Q3
n: Neighborhood # unclear what this models at all
gh1: Greenhouse # utility, or outside-ish?
# --------------------------------------------------------------------------- #
# OPEN QUESTIONS
# --------------------------------------------------------------------------- #
#
# Q1 Does `utility` need behaviour distinct from `bedroom`? Both are "terminal,
# not a route", and the engine has no term today that would tell them apart.
# Declaring it as a distinct name that maps onto bedroom's edge-stripping
# costs nothing and makes the config read truthfully, leaving somewhere to
# hang a real difference later. The alternative is to drop it and write
# `bedroom`, which reads badly for a bin store.
#
# The "ground floor external access" cases (fuel stores, bins) do NOT need a
# class: `level: 0` plus `adjacency: [o]` already expresses that, and it is
# per-room programme data rather than an access class.
#
# Q2 A dedicated toilet off a bedroom-class room does NOT survive scoring.
# Verified: `has_circulation` runs its bedroom loop before its toilet loop,
# and the bedroom loop removes bedroom->toilet edges, so the ensuite is
# severed — for real bedrooms too, not just for treatment rooms. This is
# existing Urb behaviour that the usage key neither causes nor fixes; filed
# separately if it should change.
#
# Q3 Three codes mean different rooms in different programmes: `ph1`
# (Pharmacy/Dispensary in health-centre, Clinic Room in maple-court), `me1`
# (Mechanical/Electrical vs Plant/Mechanical), `rc1` (Reception vs Reception
# Office). Usage is declared per `patterns.config`, so they can differ — but
# it is worth confirming that is intended rather than a copy-paste drift.