perf(planning): prune candidates that cannot beat the protected prefix #284

Closed
opened 2026-10-16 22:39:46 +02:00 by nessar · 1 comment
Owner

Parent

#279

What to build

Reject candidate plans before full scoring when the best value they could reach on the protected prefix of the planning objective order cannot beat the current candidate. Bounds come from the incremental observations and must be provably safe: pruning never changes which candidate wins, so planning results stay identical while far fewer candidates are fully scored.

Acceptance criteria

  • Each objective used for pruning has a documented bound argument. Objectives without a safe bound are never pruned.
  • A property or differential test shows that pruning never discards the candidate the unpruned search would select, including the best valid candidate retained for incomplete calculations.
  • The frozen-engine differential check passes, and the seven benchmark scenarios produce identical complete outcomes, explanations and final states.
  • Same-session before/after benchmark measurements are recorded in the benchmark documentation.
  • The functional coverage suite, type checks, lint and formatting pass.

Blocked by

## Parent #279 ## What to build Reject candidate plans before full scoring when the best value they could reach on the protected prefix of the planning objective order cannot beat the current candidate. Bounds come from the incremental observations and must be provably safe: pruning never changes which candidate wins, so planning results stay identical while far fewer candidates are fully scored. ## Acceptance criteria - [ ] Each objective used for pruning has a documented bound argument. Objectives without a safe bound are never pruned. - [ ] A property or differential test shows that pruning never discards the candidate the unpruned search would select, including the best valid candidate retained for incomplete calculations. - [ ] The frozen-engine differential check passes, and the seven benchmark scenarios produce identical complete outcomes, explanations and final states. - [ ] Same-session before/after benchmark measurements are recorded in the benchmark documentation. - [ ] The functional coverage suite, type checks, lint and formatting pass. ## Blocked by - #283
nessar added the ready-for-agent label 2026-10-16 22:39:46 +02:00
nessar added a new dependency 2026-10-16 22:39:46 +02:00
Author
Owner

Done in PR #287 (68a9e33): candidates are rejected before finalization when the first differing finalize-invariant protected objective is worse; leave-placement and earning leave-balance objectives (and unknown kinds) are never pruned. Cancelled-run differential check covers retained incumbents. Loaded year 48.5 s -> 44.3 s. Known gap: no test catches wrongly treating the excluded objectives as exact; see docs/benchmark/issue-279.md.

Done in PR #287 (68a9e33): candidates are rejected before finalization when the first differing finalize-invariant protected objective is worse; leave-placement and earning leave-balance objectives (and unknown kinds) are never pruned. Cancelled-run differential check covers retained incumbents. Loaded year 48.5 s -> 44.3 s. Known gap: no test catches wrongly treating the excluded objectives as exact; see docs/benchmark/issue-279.md.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: nessar/vac-optimizer#284