homemaker-layout/examples/harbor-house/coldstart-500000-s0.log
Claude e5eb397b52
Checkpoint long searches; the cold-start runs were lost to a reclaimed box
All four 500k runs died about 10 minutes in when the container was
reclaimed. No SIGTERM fired, so no .dom was written and 0 of 12 runs
completed. My plan committed results per finished run, which protected
nothing because no run reached its commit point. The bad assumption was
reading "reclaimed after inactivity" as CPU inactivity; it is conversation
inactivity, and background compute does not hold the box open.

Progress reached before the loss (from the tracked logs): harbor 24,960
evals / 40 fails, maple 14,880 / 79, health-centre 25,920 / 33,
programme-house 138,800 / 2.

The underlying gap is not environmental: a search's only output lands at
the very end or on SIGTERM, so ANY abrupt loss -- reclaimed container, OOM,
power cut -- takes the whole run with it. On a 3M-eval search that is 2.4
days of compute with no recoverable artefact.

  - driver.search gains checkpoint=/checkpoint_every=: the current best is
    handed to a callback at most every N evals. Rate-limited by evals, not
    improvements, which come in bursts early. A failing checkpoint is logged
    and swallowed -- losing a checkpoint is bad, losing the search because a
    checkpoint failed is worse.
  - homemaker-evolve --checkpoint-every N writes <out>.dom.checkpoint via
    mkstemp + os.replace, so a crash can never catch it half-written. It is
    deliberately NOT the output path: a checkpoint is a leaf-sharing run's
    internal best, dishonest under the canonical scorer until the finish
    stage unfolds it (homemaker-py-3l6), and must not be mistaken for the
    finished article.
  - Verified the written checkpoint re-loads as a valid .dom.

Default off, so behaviour is unchanged without the flag.

Lint at parity (46); tests 372 passed (3 new), same 2 pre-existing failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-08-29 05:43:58 +00:00

43 lines
2.2 KiB
Text

WARNING: 418 m2 per storey needs ~86 m of daylit wall; the plot's non-private perimeter gives 53 m. Roughly 49 m2 of courtyard closes the gap. (DESIGN.md §38.3)
seed : /home/user/homemaker-layout/examples/harbor-house/init.dom
programme : harbor-house
budget : 500000
pop : 16
child_budget : 80
workers : 1
rng seed : 0
leaf sharing : True (factor=3)
superpose : False
multi_use : False
conn grade : False
use tiers : False
bridge circulation : False
ruin recreate : False
collapse in-search : True
shapecurve warmstart : False
shapecurve prune : False
output : /home/user/homemaker-layout/examples/harbor-house/coldstart-500000-s0.dom
[ 80 evals] best 2.04467e-27 (fails 79) via construct/0
[ 240 evals] best 6.52063e-20 (fails 55) via construct/2
[ 1280 evals] best 3.07967e-20 (fails 54) via construct/15
[ 1760 evals] best 1.59184e-19 (fails 54) via swap 0/lrr
[ 1920 evals] best 6.67908e-19 (fails 52) via rotate 0/lrll
[ 3120 evals] best 1.30712e-18 (fails 51) via core_undivide noop
[ 4400 evals] best 1.39275e-18 (fails 51) via core_divide noop
[ 6720 evals] best 1.41743e-18 (fails 51) via swap 0/lrr
[ 8640 evals] best 2.87976e-18 (fails 50) via core_undivide noop
[ 10000 evals] best 5.71109e-18 (fails 49) via rotate 0/rlll
[ 12240 evals] best 5.95838e-18 (fails 49) via crossover lrlll<->lrlll
[ 12400 evals] best 1.17875e-17 (fails 48) via level_compound_fix noop
[ 12880 evals] best 1.24564e-17 (fails 48) via level_fix noop
[ 15120 evals] best 1.40283e-17 (fails 48) via swap 0/llr
[ 16080 evals] best 1.44296e-17 (fails 48) via level_compound_fix noop
[ 17600 evals] best 1.48821e-16 (fails 48) via swap 0/llr
[ 18960 evals] best 5.32871e-16 (fails 42) via crossover lrllr<->rrl
[ 21680 evals] best 1.25e-15 (fails 41) via crossover rlrrr<->llll
[ 22720 evals] best 3.08937e-15 (fails 40) via retype 0/lrrr->m
[ 22800 evals] best 3.1408e-15 (fails 40) via core_undivide noop
[ 23280 evals] best 3.18171e-15 (fails 40) via level_fix noop
[ 24000 evals] best 3.39655e-15 (fails 40) via level_compound_fix noop
[ 24160 evals] best 3.42463e-15 (fails 40) via level_compound_fix noop
[ 24960 evals] best 3.43166e-15 (fails 40) via level_compound_fix noop