homemaker-layout/tests
Bruno Postle 92cc63348e Topology operators: 7 mutations + area-matched subtree crossover
operators.py (homemaker-py-nyb): divide/undivide/retype/swap/rotate/
level_add/level_delete + Urb-style area-matched base-storey crossover.
Operators edit the decoded Node tree; genome.encode absorbs all repair
(dangling deltas, storey misalignment) so every child is a valid genome
by construction. Geometry moves deliberately absent — the inner loop owns
continuous DOF, and 8cs made Lamarckian re-optimisation mandatory.

Fixes dom._link to CLEAR stale below-links when a path vanishes from the
storey below (undividing a base branch left upper nodes pointing at
orphaned quads; oracle scoring unaffected but in-process geometry crashed).

Acceptance (experiments/operator_locality.py, flag-on): 115/115 children
scored without error; geometry perturbation small for core ops (retype
0.07, divide/undivide 0.14, swap/crossover 0.16-0.17), fitness
perturbation large for all (0.68-0.99 rel) — the 0.5^n cliff flags most
raw moves, confirming warm-started re-optimisation + penalty reshaping
as the load-bearing design choices. 27 tests pass.

Closes homemaker-py-nyb.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:07:35 +01:00
..
test_dom_corpus.py Geometry inner loop: batched full-objective ratio optimiser (CMA-ES) 2026-06-12 09:42:24 +01:00
test_genome.py Topology genome: base tree + per-storey deltas + type assignment 2026-06-12 13:52:32 +01:00
test_innerloop.py Fix cma convergence test: assert basin convergence, not final-digit polish 2026-06-12 09:46:13 +01:00
test_operators.py Topology operators: 7 mutations + area-matched subtree crossover 2026-06-12 14:07:35 +01:00
test_oracle.py Geometry inner loop: batched full-objective ratio optimiser (CMA-ES) 2026-06-12 09:42:24 +01:00