homemaker-layout/src/homemaker_layout
Bruno Postle 3b3eef68a7 kpu: Schedule B in-run leaf-share grain annealing (search_annealed)
Ramp the leaf-share grain down within one continuous run (e.g. 4->3->2->off),
carrying the whole population across each step — graduated non-convexity over
the single hard sharing->off transition of the §15 finish.

- operators.unfold_shared_leaves(above=cap): unfold only leaves whose share
  exceeds the new grain cap, leaving smaller-share leaves collapsed for the
  next step. above=1 (default) keeps the full-unfold §15 behaviour.
- driver: max_share override threaded through _overrides_for/_fitness_for/
  _evaluate so a phase can rebuild the evaluator at a lower leaf_share_max cap;
  search(seed_pop=) evaluates an explicit initial population so a phase hands
  its whole population to the next instead of restarting from a single best.
- driver.search_annealed: one phase per descending grain then a de-share
  polish; unfold-above-cap between steps; cumulative accounting + grain-tagged
  history; honest canonical best (byte-for-byte verified vs homemaker-fitness).
- evolve: --anneal-grain LADDER CLI (self-finishing; §15 finish not applied).

8iv settled the primitive (grid unfold beat the circulation-aware slice), so
the ramp reuses the plain balanced-grid unfold at every step.

Tests: unfold above-cap selectivity, seed_pop seeding, search_annealed phase
stitching / honest finish / degenerate-ladder fallback. 258 pass. DESIGN §16.

Head-to-head A/B on harbor-house still to run; verdict pending (issue open).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M8566xAxTnwtJTkpXjYNZm
2026-07-16 08:38:08 +01:00
..
__init__.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
dom.py erc.3: explicit per-leaf multiplicity closes the leak; driver A/B wired (§13.3) 2026-06-24 18:16:17 +01:00
driver.py kpu: Schedule B in-run leaf-share grain annealing (search_annealed) 2026-07-16 08:38:08 +01:00
evolve.py kpu: Schedule B in-run leaf-share grain annealing (search_annealed) 2026-07-16 08:38:08 +01:00
fitness.py 9o5: type superposition + per-eval collapse (multi-use leaves) 2026-06-30 07:08:46 +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 Phase 6 §11.5: structural niching + restarts — negative result (c4c.5) 2026-06-18 23:42:39 +01:00
geometry.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
graph.py erc.3: explicit per-leaf multiplicity closes the leak; driver A/B wired (§13.3) 2026-06-24 18:16:17 +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 kpu: Schedule B in-run leaf-share grain annealing (search_annealed) 2026-07-16 08:38:08 +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 9o5: type superposition + per-eval collapse (multi-use leaves) 2026-06-30 07:08:46 +01:00
solver.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00