homemaker-layout/tests
Bruno Postle 880a214d96 94g: public-access pin + keep-better wrapper + CLI/finish-hook wiring
Public-access term (preserve_public_access, default on): when the building's
only street access is an l/k ROOM neighbour of a public outside leaf (no
circulation fallback — an existential building-level check the per-leaf
objective can't see), that leaf is pinned (kept, its demand slot decremented)
so the collapse can't drop "no outside public access". Best layout 15→13
becomes 15→12 with zero new fails; sweep total 172→171, still monotone.

collapse_finish(root, **kw) -> (tree, base, coll, applied): keep-better wrapper,
scores on throwaway copies (score_with_fails merges in place), returns the
collapse only if fails don't increase.

Wiring: driver.collapse_best updates result.best (lineage +collapse, canonical
re-score); evolve.py runs it after the sharing polish behind --collapse/
--no-collapse (default on). New homemaker-collapse CLI (collapse_cmd.py) applies
it to an existing .dom, writing <stem>.collapsed.dom.

tests/test_collapse_global.py: demand-set relabel, level hard constraint, c/o/s
exclusion, no-op safety, keep-better/unmerged. 267 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M8566xAxTnwtJTkpXjYNZm
2026-07-18 10:29:44 +01:00
..
test_collapse_global.py 94g: public-access pin + keep-better wrapper + CLI/finish-hook wiring 2026-07-18 10:29:44 +01:00
test_dom_corpus.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
test_driver.py kpu: Schedule B in-run leaf-share grain annealing (search_annealed) 2026-07-16 08:38:08 +01:00
test_evolve_cli.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
test_fitness.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
test_genome.py Phase 6 §11.5: structural niching + restarts — negative result (c4c.5) 2026-06-18 23:42:39 +01:00
test_geometry.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
test_graph.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
test_innerloop.py Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
test_operators.py kpu: Schedule B in-run leaf-share grain annealing (search_annealed) 2026-07-16 08:38:08 +01:00
test_oracle.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
test_staging.py Phase 6 §11.3: staged per-floor search (c4c.3) 2026-06-18 06:05:53 +01:00
test_superposition.py b3v: interchange:false veto hatch for interchange-class derivation 2026-07-17 16:53:20 +01:00