solver: add optional component-area pruning #28

Merged
mcp merged 1 commits from codex/issue-13-component-area into main 2026-07-31 08:41:16 +01:00
Collaborator

Summary

  • detect skyline empty components separated by full-height columns
  • add sound gcd and bounded subset-sum area feasibility modes
  • compare boundary-event and periodic-eight trigger schedules
  • retain all component modes as opt-in because their measured cost exceeds their tree reduction
  • document the proof, counters, results, and default-off Gate D decision

Measurements

Counter-free Release medians with existing cheap rules enabled:

  • order 7: disabled 0.985 s; gcd 1.027 s; subset sum 1.052 s
  • order 8: disabled 0.203 s; gcd 0.212 s; subset sum 0.219 s

Gcd changed fewer than 0.005% of nodes and slowed both orders about 4.3%. Subset sum reduced nodes only 0.21–0.24% while slowing them 6.8–7.5%. Periodic-eight checking was slower still, so boundary-event triggering is retained only for opt-in experiments and component pruning defaults to disabled.

Validation

  • Debug CTest: 14/14 passed
  • ASan+UBSan CTest: 14/14 passed
  • focused boundary and periodic exhaustive comparisons passed
  • Release benchmark modes and runner self-test passed
  • warning-enabled syntax, Python compile, invalid CLI, and diff checks passed
  • issue-specific review completed with no findings

Closes #13

## Summary - detect skyline empty components separated by full-height columns - add sound gcd and bounded subset-sum area feasibility modes - compare boundary-event and periodic-eight trigger schedules - retain all component modes as opt-in because their measured cost exceeds their tree reduction - document the proof, counters, results, and default-off Gate D decision ## Measurements Counter-free Release medians with existing cheap rules enabled: - order 7: disabled 0.985 s; gcd 1.027 s; subset sum 1.052 s - order 8: disabled 0.203 s; gcd 0.212 s; subset sum 0.219 s Gcd changed fewer than 0.005% of nodes and slowed both orders about 4.3%. Subset sum reduced nodes only 0.21–0.24% while slowing them 6.8–7.5%. Periodic-eight checking was slower still, so boundary-event triggering is retained only for opt-in experiments and component pruning defaults to disabled. ## Validation - Debug CTest: 14/14 passed - ASan+UBSan CTest: 14/14 passed - focused boundary and periodic exhaustive comparisons passed - Release benchmark modes and runner self-test passed - warning-enabled syntax, Python compile, invalid CLI, and diff checks passed - issue-specific review completed with no findings Closes #13
mcp added 1 commit 2026-07-31 08:41:02 +01:00
Full-height skyline columns partition the remaining board. Add sound gcd and bounded subset-sum checks for the resulting component areas, with boundary-event and periodic benchmark schedules.

Keep the rules disabled by default because their small tree reductions do not recover their measured cost. Record the rejected default and scheduling evidence so it can be revisited only with new data.

Tests: Debug CTest (14 passed)

Tests: ASan+UBSan CTest (14 passed)

Refs: #13
mcp merged commit 39ff5cb340 into main 2026-07-31 08:41:16 +01:00
mcp deleted branch codex/issue-13-component-area 2026-07-31 08:41:17 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mgrettondann/partridge-cpp#28