homemaker-layout/experiments
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
..
results ssz: 61% of reported crinkliness fails are not defects; two corrections 2026-08-26 18:07:01 +00:00
ab_cpsat_assign.py homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op) 2026-08-04 09:19:36 +01:00
ab_crinkliness_mode_ssz.py ssz: crinkliness is declared per space; there is no daylight attribute 2026-08-28 22:39:09 +00:00
ab_shapecurve_prune.py homemaker-py-wkh: DP-exact hard pre-filter for driver.py's shape-feasibility prune 2026-08-03 21:10:28 +01:00
ab_shapecurve_warmstart.py homemaker-py-6xh: wire shape-curve DP into driver.py as an NM warm-start 2026-08-03 18:43:28 +01:00
ab_ssz_search.py ssz: crinkliness is declared per space; there is no daylight attribute 2026-08-28 22:39:09 +00:00
accept_innerloop.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
audit_crinkliness_truth.py Owner's daylight ruling: corridors need it; retract the 61% headline 2026-08-28 23:14:21 +00:00
audit_programme_config.py §39.4 completion + §39.5 retraction + §39.6: the usage namespace is NOT clean 2026-08-26 10:09:14 +00:00
autodiff_spike.py Spike: torch-autodiff inner-loop ratio optimisation (homemaker-py-2ax) — negative 2026-08-01 10:26:43 +01:00
bakeoff_harbor.json Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
bakeoff_harbor.py Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
bakeoff_innerloop.json Bake-off: CMA-ES confirmed as inner-loop optimiser (homemaker-py-d0s) 2026-06-13 09:47:15 +01:00
bakeoff_innerloop.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
bakeoff_native.json Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
bakeoff_native.py Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
bench_batch_oracle.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
benchmark_vs_urbevolve.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
diag_2f45907.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
diag_connectivity_yql.py §39.9: level-not-connected is destroyed by the resize, not by the search 2026-08-26 14:39:07 +00:00
diag_depth_balance.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
diag_edge_too_long.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
diag_exposure_frontage.py Frontage feasibility as a pre-flight check; retract the "3x short" claim 2026-08-26 16:20:52 +00:00
diag_leaf_shapefail.py erc.1: Diagnostic A — per-leaf shape-fail vs density (§13.1) 2026-06-23 22:06:04 +01:00
diag_leaf_sharing.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
diag_residual_91f.py homemaker-py-91f: residual diagnostic on the current full default stack 2026-08-01 19:38:46 +01:00
diag_slack_localization.py erc.2: Diagnostic B — undersize-despite-slack localization (§13.2) 2026-06-23 22:47:34 +01:00
dump_areas.pl Scaffold homemaker-py with validated geometry port 2026-06-10 20:50:20 +01:00
dump_areas.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
dump_leaf_quality.pl Native fitness: leaf quality terms + cost model (homemaker-py-gnw) 2026-06-13 07:59:21 +01:00
genome_parity.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
leaf_parity.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
measure_seed_geometry.py Phase 7 §12.2: proportion-aware constructive seeding + storey_minimum fix (leu.2, cq1) 2026-06-20 14:04:42 +01:00
migrate_crinkliness_key.py ssz: crinkliness is declared per space; there is no daylight attribute 2026-08-28 22:39:09 +00:00
migrate_usage_key.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
operator_locality.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
optimize_fullfitness.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
penalty_reshape.json Lexicographic outer-search comparison, preserve inner-loop cliff (homemaker-py-yg5) 2026-06-14 09:20:03 +01:00
penalty_reshape.py Lexicographic outer-search comparison, preserve inner-loop cliff (homemaker-py-yg5) 2026-06-14 09:20:03 +01:00
probe_harbor_floor.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
rebaseline_no_occlusion.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
refine_sweep.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
resolve_ratios.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
run_1s3_confirm.sh homemaker-py-1s3: multi-use leaves N=15 confirmation -- does not replicate 2026-08-01 08:52:24 +01:00
run_1s3_confirm_staged.sh homemaker-py-1s3: multi-use leaves N=15 confirmation -- does not replicate 2026-08-01 08:52:24 +01:00
run_6zy_ab.sh 6zy/§11.8: co-tune topology diversity × tournament pressure — null robust 2026-06-29 22:56:23 +01:00
run_8sh_ab.sh 8sh: insert/relocate-circulation repair operator (qi6 mechanism (a)) 2026-07-24 19:48:13 +01:00
run_9gp_ab.sh Phase 7 §12.3: 9gp A/B measured — NEGATIVE; close 9gp + epic leu 2026-06-21 07:21:51 +01:00
run_9yx_sweep.sh homemaker-py-9yx: health-centre — non-synthetic third example programme 2026-07-30 00:09:37 +01:00
run_and_capture_91f.py homemaker-py-91f: residual diagnostic on the current full default stack 2026-08-01 19:38:46 +01:00
run_c3g_ab.sh c3g: circ-per-room granularity knob (circ_divisor) + A/B harness 2026-06-21 21:10:18 +01:00
run_depthbal_ab.sh erc.4: depth-balanced construction mechanism + floor probe (§13.4) 2026-06-25 22:36:24 +01:00
run_e01_sweep.py e01: harbor-house beam-width larger-N confirmation (null) 2026-07-29 00:22:55 +01:00
run_f1d_ab.sh f1d: ruin-and-recreate LNS operator, validated positive on programme-house 2026-07-26 09:31:42 +01:00
run_f1d_larger_n.sh f1d: ruin-and-recreate LNS operator, validated positive on programme-house 2026-07-26 09:31:42 +01:00
run_f1d_w3_ab.sh f1d: ruin-and-recreate LNS operator, validated positive on programme-house 2026-07-26 09:31:42 +01:00
run_interioro_ab.sh erc/ld2: interior-O light-well seeding — §13.6 positive on dense floors 2026-06-28 07:20:20 +01:00
run_island_ab.py psk/§14: island model — null (best-of-N at equal budget wins) 2026-06-29 06:20:29 +01:00
run_leafshare_ab.sh erc.3: explicit per-leaf multiplicity closes the leak; driver A/B wired (§13.3) 2026-06-24 18:16:17 +01:00
run_leu2_ab.sh Phase 7 §12.2: proportion-aware constructive seeding + storey_minimum fix (leu.2, cq1) 2026-06-20 14:04:42 +01:00
run_lj3_qjg_ab.sh lj3/qjg: larger-N + weight sweep finds bridge_circulation effect is noise 2026-07-25 12:20:22 +01:00
run_multiuse_ab.sh homemaker-py-1s3: multi-use leaves as permanent design goal (§26 path b) 2026-07-31 00:16:12 +01:00
run_qi6_ab.sh qi6: full-budget A/B for graded circulation-connectivity signal, negative result 2026-07-23 18:29:45 +01:00
run_search.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
run_search_scaled.py 6zy/§11.8: co-tune topology diversity × tournament pressure — null robust 2026-06-29 22:56:23 +01:00
run_shareedge_ab.sh hph/§13.8: share-aware edge-too-long cap — shared leaves no longer penalised for aggregate wall length 2026-06-28 21:24:51 +01:00
run_sharefactor_sweep.sh erc.7: leaf-sharing × depth-balancing synergy CONFIRMED end-to-end (§13.5) 2026-06-26 16:47:14 +01:00
run_staged_search.py homemaker-py-7ua: pin collapse_insearch=True in run_staged_search.py rescore 2026-08-05 10:08:04 +01:00
run_synergy_ab.sh erc.7: leaf-sharing × depth-balancing synergy CONFIRMED end-to-end (§13.5) 2026-06-26 16:47:14 +01:00
run_xyu_sweep.sh xyu: n=18 ruin_recreate N=15 confirmation — weakened, not resolved 2026-07-29 10:10:23 +01:00
run_y51_sweep.sh y51: synthetic room-count sweep finds no clean ruin_recreate size threshold 2026-07-26 15:35:03 +01:00
run_y51_sweep_ln.sh y51: synthetic room-count sweep finds no clean ruin_recreate size threshold 2026-07-26 15:35:03 +01:00
shapecurve_spike.py homemaker-py-2g7.4: fix shape-curve DP to be rotation-invariant 2026-08-03 07:06:48 +01:00
sweep_failtypes.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
tier_ab_2g7_3.py homemaker-py-2g7.3: hard/soft fail tiering behind --use-tiers flag 2026-08-02 16:00:39 +01:00
usage_map_proposal.yaml homemaker-py-sel: usage is a plain space attribute — drop the mapping table 2026-08-26 12:56:12 +00:00
validate_shapecurve.py homemaker-py-wkh: DP-exact hard pre-filter for driver.py's shape-feasibility prune 2026-08-03 21:10:28 +01:00
validate_shapecurve_multistorey.py homemaker-py-koo: multi-storey (below-link) support for the shape-curve DP 2026-08-03 23:30:18 +01:00
warm_vs_cold.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00