homemaker-layout/src/homemaker_layout
Bruno Postle cf634ae949 homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op)
Adds src/homemaker_layout/cpsat.py (OR-Tools CP-SAT) as an exact alternative
to operators._assign_adjacency_aware's greedy/beam room-code placement,
wired in as assign_solver="greedy"|"cpsat" (EXPERIMENTAL, default "greedy",
byte-identical to before) through constructive_topology/lift_base_to_storeys/
driver.search, plus a new operators.mutate_reassign in-search repair
operator (driver.search's enable_reassign=False default, mirrors
enable_ruin_recreate). Both found and fixed a resize-fragility bug (a
second CP-SAT pass against settled geometry, operators._cpsat_relabel_settled)
and a CP-SAT symmetry-blowup stall (explicit interchangeable-code grouping).

Seeder-level A/B on harbor-house is a solid, low-noise positive (~13% fewer
real fitness-scored secondary-adjacency fails, 10 seeds). Full driver.search
A/B is only pilot-scale (budget=3000 vs the bead's own 20k target) and
inconclusive -- both flags stay default-off pending a larger-N confirmation.
Full writeup: DESIGN.md §37.7. Bead left in_progress (own acceptance
criteria not fully met); homemaker-py-5bv tracks the deferred post-collapse
repair item.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LSwQwpEaHFBkeVSDDWd75S
2026-08-04 09:19:36 +01:00
..
__init__.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
bubble.py docs: DESIGN.md §26/§27 — backfill 9o5/xi7/b3v (type superposition) and mi7 (bubble-diagram signal) 2026-07-26 23:16:21 +01:00
collapse_cmd.py cdl: default local_search on for finish-time collapse call sites 2026-07-26 23:33:40 +01:00
compose.py homemaker-py-2g7.1: plan->dom composer (SVG trace -> slicing-tree .dom) 2026-08-03 11:03:02 +01:00
compose_cmd.py homemaker-py-2g7.1: plan->dom composer (SVG trace -> slicing-tree .dom) 2026-08-03 11:03:02 +01:00
cpsat.py homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op) 2026-08-04 09:19:36 +01:00
dom.py homemaker-py-2g7.1: plan->dom composer (SVG trace -> slicing-tree .dom) 2026-08-03 11:03:02 +01:00
driver.py homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op) 2026-08-04 09:19:36 +01:00
evolve.py homemaker-py-wkh: DP-exact hard pre-filter for driver.py's shape-feasibility prune 2026-08-03 21:10:28 +01:00
fitness.py homemaker-py-2g7.3: hard/soft fail tiering behind --use-tiers flag 2026-08-02 16:00:39 +01:00
fitness_cmd.py Add homemaker-fitness: native Python CLI to replace urb-fitness.pl 2026-06-14 17:15:33 +01:00
genome.py homemaker-py-2g7.1: plan->dom composer (SVG trace -> slicing-tree .dom) 2026-08-03 11:03:02 +01:00
geometry.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
graph.py homemaker-py-cvw: clear geometry cache at substrate_readiness and collapse_global entry 2026-08-02 10:52:40 +01:00
innerloop.py x3b/§13.10: productionise leaf-sharing — per-code share grain + CLI wiring 2026-06-28 22:04:35 +01:00
operators.py homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op) 2026-08-04 09:19:36 +01:00
oracle.py Fix parity gap: oracle.py must run with URB_NO_OCCLUSION=1 2026-06-17 18:40:56 +01:00
programme.py homemaker-py-1s3: multi-use leaves as permanent design goal (§26 path b) 2026-07-31 00:16:12 +01:00
shapecurve.py homemaker-py-koo: multi-storey (below-link) support for the shape-curve DP 2026-08-03 23:30:18 +01:00
solver.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00