Closes homemaker-py-ju3. DESIGN.md §39.3. The class: key from the bead's design was deliberately NOT built. Auditing every use of the prefix rule first showed it runs deeper than c/o/s -- l/k/b/t carry real adjacency semantics (graph.py builds bedroom<->toilet and kitchen<->living relations from first characters) -- so re-plumbing the type system would invalidate the whole corpus and every baseline, for a problem whose damage is the silence, not the convention. Two findings made the smaller fix sufficient: no corpus programme has ever declared a bare c/o/s code, so check_space_counts' skip only ever discarded declared rooms; and nothing references harbor's four codes in any adjacency or co_locate list. - programme.validate_codes raises on a reserved-prefix code, with the full explanation. Called from BOTH parse paths (programme._parse_spaces and fitness.Fitness._load_programme parse conf["spaces"] independently, so validating one would leave the other door open). l/k/b/t stay unreserved. - harbor-house and harbor-house-l0 renamed: cr1->fr1, of->ao, st1->gs1, st2->gs2. New prefixes are unused in harbor and semantically neutral, and the two storage codes still share a prefix, preserving the structure evaluate_building's per-code plot-ratio term depends on. name: unchanged. - experiments/migrate_ju3_rename.py migrates .dom files written before the rename (--check dry-runs). Pre-rename artefacts, notably evolved-3M*.dom, must be migrated or their leaves read as unmatched generics. - test_collapse_global's c/o/s exclusion test now uses a generic C leaf, which is what the exclusion is actually for; it previously relied on a programme code colliding, which is no longer possible. Re-baseline (seed 1, 20k evals, same settings as §38's run): 57 fails against the 32-instance effective programme -> 55 against the real 37-instance one, with all five previously-lost room instances now placed inside their declared sigma bands (fr1 87.2 vs declared 80, was 32.9/17.1; ao/gs1/gs2 were absent entirely) and no failure naming any of the four codes. At one seed each, 57 vs 55 is within noise -- the robust result is the room placement, not the count. Historical harbor numbers are not comparable to post-ju3 ones; filed homemaker-py-t3s to restate 2v1's acceptance figure once evolved-3M is migrated. 346 passed (+10 new), same 7 pre-existing fixture failures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
92 lines
1.4 KiB
Text
92 lines
1.4 KiB
Text
node:
|
|
- - 0.0
|
|
- 0.0
|
|
- - 25.0
|
|
- 2.0
|
|
- - 23.0
|
|
- 31.0
|
|
- - 0.0
|
|
- 31.0
|
|
perimeter:
|
|
a: private
|
|
b: private
|
|
c: null
|
|
d: null
|
|
rotation: 1
|
|
division:
|
|
- 0.39230000376176755
|
|
- 0.39230000376176755
|
|
height: 3.0
|
|
elevation: 0.0
|
|
wall_inner: 0.08
|
|
wall_outer: 0.25
|
|
l:
|
|
rotation: 2
|
|
division:
|
|
- 0.48074323926166673
|
|
- 0.48074323926166673
|
|
l:
|
|
type: O
|
|
rotation: 0
|
|
r:
|
|
type: ws1
|
|
rotation: 0
|
|
r:
|
|
rotation: 2
|
|
division:
|
|
- 0.2176670870720054
|
|
- 0.2176670870720054
|
|
l:
|
|
type: O
|
|
rotation: 0
|
|
r:
|
|
rotation: 3
|
|
division:
|
|
- 0.5850248106917277
|
|
- 0.5850248106917277
|
|
l:
|
|
rotation: 0
|
|
division:
|
|
- 0.5160532787230602
|
|
- 0.5160532787230602
|
|
l:
|
|
rotation: 3
|
|
division:
|
|
- 0.5728439033209108
|
|
- 0.5728439033209108
|
|
l:
|
|
type: C
|
|
rotation: 0
|
|
r:
|
|
type: k1
|
|
rotation: 0
|
|
r:
|
|
type: ef1
|
|
rotation: 0
|
|
r:
|
|
rotation: 2
|
|
division:
|
|
- 0.7186071391577499
|
|
- 0.7186071391577499
|
|
l:
|
|
rotation: 3
|
|
division:
|
|
- 0.543075800314977
|
|
- 0.543075800314977
|
|
l:
|
|
type: da1
|
|
rotation: 0
|
|
r:
|
|
type: me1
|
|
rotation: 0
|
|
r:
|
|
rotation: 1
|
|
division:
|
|
- 0.5292445435027436
|
|
- 0.5292445435027436
|
|
l:
|
|
type: gs1
|
|
rotation: 0
|
|
r:
|
|
type: la1
|
|
rotation: 0
|