homemaker-layout/tests
Claude 99c85ec4ee
Remove two dead paths from the objective
39.24's sweep listed two entries as DEAD rather than suspect -- inert code that
reads as live. Neither changes a score or a failure on any corpus artefact, and
that is verified rather than asserted: every artefact scores identically to its
39.25 measurement.

ratio_public_outside and ratio_private_outside. evaluate_building read both and
multiplied a gaussian into the building factor for each. Neither key exists in
CONF_DEFAULTS and no patterns.config in the repository declares either, so both
branches were guarded and never ran. Removing them also retires what fed them:
the four public_length_*/private_length_* tracking keys accumulated per leaf in
process_storey, and the _public_length/_private_length helpers, which had no
other caller.

NOT removed, because they are live: _public_access, _public_access_outside,
_public_access_pins and the has_public_access_* tracking flags, which drive real
checks and collapse_global's preserve_public_access. Only the length-ratio
machinery was dead.

The daylight quality factor. evaluate_leaf set factors["daylight"] = 1.0
unconditionally -- pinned since the URB_NO_OCCLUSION descope (6) and unable to
be anything else. It was never in _GRADED_FACTORS, so it contributed nothing to
the graded signal, and 39.18's geometric mean then had to special-case it in
factor_is_asked as a factor that is never asked. A constant that exists only to
be excluded is worth deleting. If 2g5 rebuilds occlusion it reintroduces a real
daylight factor, which would need factor_is_asked to say True anyway.

Two tests referenced the removed factor. test_leaf_grade_ignores_non_graded_keys
now names a key that genuinely does not exist; the aggregate underflow test
dropped its daylight entry, which would otherwise have been counted as asked and
changed the expected geometric mean.

Worth doing despite changing no number: 39.20 and 39.25 were both cases where
something inert looked live -- a parity test that never ran, a per-level rule
switched off in every config -- and in both the misreading cost real time and
produced a wrong conclusion. An objective with fewer things in it that do
nothing is one where "this term does nothing" is informative rather than
routine.

Still open on dpt, each needing a ruling or a rate change rather than a
measurement: quality_size's upper side, the minimum-internal-area factor as a
third statement of "build the rooms", and the 0.5**n_fails curve.

426 passed.

Refs homemaker-py-dpt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
2026-09-06 18:11:09 +00:00
..
_helpers.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
test_circulation_proportion.py Remove ratio_circulation: the score is already a ratio 2026-09-06 15:28:33 +00:00
test_collapse_global.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
test_collapse_insearch.py Replace the stale 15-fail acceptance target with the cold-start baseline 2026-09-04 17:16:10 +00:00
test_compose.py §39.4: tighten generic-type matching, reverting the harbor rename 2026-08-26 09:45:28 +00:00
test_conn_grade.py qi6: graded circulation-connectivity signal (§18) 2026-07-18 18:44:24 +01:00
test_cpsat.py homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op) 2026-08-04 09:19:36 +01:00
test_dom_corpus.py Remove two dead paths from the objective 2026-09-06 18:11:09 +00:00
test_driver.py Remove the Perl oracle 2026-09-06 07:56:24 +00: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_evolve_preflight.py Pre-flight: check the ground floor's frontage, not the per-storey average 2026-09-05 17:46:52 +00:00
test_fitness.py Remove two dead paths from the objective 2026-09-06 18:11:09 +00:00
test_fitness_aggregate.py Remove two dead paths from the objective 2026-09-06 18:11:09 +00:00
test_fitness_crinkliness.py Make the crinkliness factor one-sided: stop billing the daylit wall twice 2026-09-05 07:27:02 +00: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 Missing-space cascade no longer weighted by YAML verbosity 2026-08-29 09:33:40 +00:00
test_innerloop.py Remove the Perl oracle 2026-09-06 07:56:24 +00:00
test_multi_use.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
test_operators.py Recover most of the cpsat test-suite cost; keep the part that is real 2026-08-29 18:55:54 +00:00
test_outdoor_space_rule.py Outdoor space: enforce the per-level rule, drop the fraction 2026-09-06 15:41:22 +00:00
test_programme.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
test_shapecurve.py No size cap on circulation: twice the corridor is twice as bad, and no worse 2026-09-06 15:01:12 +00:00
test_staging.py §39.4: tighten generic-type matching, reverting the harbor rename 2026-08-26 09:45:28 +00:00
test_superposition.py §39.7: access requirements become a declared usage: attribute (homemaker-py-sel) 2026-08-26 13:39:41 +00:00
test_terrace_value_ruling.py A terrace is no longer worth more per m2 than a real internal room 2026-09-05 19:25:02 +00:00