homemaker-layout/experiments
Claude d0567d7a74
Remove the Perl oracle
Owner's decision: "we need to abandon the perl oracle, this was only useful
when initially porting, but I suspect many of the remaining problems have been
carried in from the perl (such as the weird scoring of outdoor and circulation
space, which definitely needs fixing)".

39 supports that second clause. Every defect the section found is inherited,
not introduced: the two-sided crinkliness gaussian that double-charges surplus
daylight (39.14), quality as a product over a variable number of factors
(39.18), value_supported priced as value_inside so a terrace was worth more per
m2 than a room (39.19), and circulation returning 0.07 per unit cost (hxi).

So parity with the oracle was never a safety net -- it was a commitment to
reproduce those defects. Each of 39.14, 39.18 and 39.19 would have been a
parity failure had parity ever been checked, and keeping the tests would have
meant reverting the fixes or explaining the failures away.

Removed: oracle.py, test_oracle.py, the two parity tests and their fixture
machinery in test_dom_corpus.py, innerloop.OracleEvaluator with its use_native
and urb_root plumbing, the same plumbing through driver, and fourteen
experiments/ scripts that could only run against Perl. Several of those are
cited in earlier DESIGN sections; the citations now point into git history,
which is the honest state -- they had been unrunnable since the oracle root
(/home/bruno/src/urb) stopped being present. run_search is superseded by
run_search_scaled, which does the same job natively.

Kept: dump_areas.pl/.py, which validate GEOMETRY against Urb (4.1) rather than
fitness, and the prose in fitness_cmd.py and dom.py explaining why the
.score/.fails formats are shaped as they are. Provenance is worth keeping; a
dead code path is not.

CLAUDE.md updated: fitness.py is the only evaluator, and "Urb did it this way"
is no longer an argument that a constant is right. 39.16 is the standing
counterweight in the other direction -- the crinkliness target WAS right and
twice looked wrong only because the code reading it was misunderstood.
Inheritance is neither evidence for nor against.

410 passed. The 69 removed cases account exactly: 64 parity (all skipped, since
no oracle .score was ever committed), 4 in test_oracle.py, and the guard test
39.20 added as a stopgap.

Closes homemaker-py-118. Files homemaker-py-bk9 for the re-baseline that 39.19
made necessary.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-09-06 07:56:24 +00:00
..
results Record the ecx A/B: directionally positive, not resolvable at N=6 2026-09-06 07:38:23 +00:00
ab_9gj_crinkliness.py Quality aggregation: divide out how many questions a leaf was asked 2026-09-05 18:57:00 +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_report.py A/Bs now report what their sample could resolve 2026-08-29 19:51:47 +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 A/Bs now report what their sample could resolve 2026-08-29 19:51:47 +00: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 Audit: ask whether a room spec is feasible AS DECLARED, not merely somewhere 2026-09-05 07:46:43 +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_native.json Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
diag_2f45907.py Remove the Perl oracle 2026-09-06 07:56:24 +00: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 Remove the Perl oracle 2026-09-06 07:56:24 +00: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 Remove the Perl oracle 2026-09-06 07:56:24 +00: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 Remove the Perl oracle 2026-09-06 07:56:24 +00: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
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
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 Staged harness re-scored under a different objective than it searched 2026-08-29 12:11:38 +00:00
rerun_1ph_protocol.sh Harbor A/Bs at n=3 could never resolve their own margins 2026-08-29 19:34:30 +00: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_coldstart_baseline.py coldstart runner: commit only its own artefacts, not the whole tree 2026-08-29 19:40:00 +00: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_scaled.py Remove the Perl oracle 2026-09-06 07:56:24 +00: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 Staged harness re-scored under a different objective than it searched 2026-08-29 12:11:38 +00: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
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