refactor(planning): consolidate plan observations in one module #282

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

Parent

#279

What to build

Consolidate a plan's observations inside the planning core into one internal module: what the planning objectives see of a plan, namely time-off periods, work sequences, public-holiday weeks, leave-balance observations and the placement tie key. Candidate scoring, plan statistics and stable plan explanations read observations only through this module. This is a structure-only change: planning results and speed are unchanged. It is the prefactor that makes incremental observations a contained change.

Acceptance criteria

  • Every objective evaluation, tie-break, plan statistic and explanation that needs plan observations obtains them through the module. No other code computes them.
  • The core's public entry points and outcome and snapshot types are unchanged.
  • The frozen-engine differential check passes, and the seven benchmark scenarios produce identical complete outcomes, explanations and final states.
  • Benchmark timings are recorded before and after, showing no regression beyond run-to-run noise.
  • The functional coverage suite, type checks, lint and formatting pass.

Blocked by

## Parent #279 ## What to build Consolidate a plan's observations inside the planning core into one internal module: what the planning objectives see of a plan, namely time-off periods, work sequences, public-holiday weeks, leave-balance observations and the placement tie key. Candidate scoring, plan statistics and stable plan explanations read observations only through this module. This is a structure-only change: planning results and speed are unchanged. It is the prefactor that makes incremental observations a contained change. ## Acceptance criteria - [ ] Every objective evaluation, tie-break, plan statistic and explanation that needs plan observations obtains them through the module. No other code computes them. - [ ] The core's public entry points and outcome and snapshot types are unchanged. - [ ] The frozen-engine differential check passes, and the seven benchmark scenarios produce identical complete outcomes, explanations and final states. - [ ] Benchmark timings are recorded before and after, showing no regression beyond run-to-run noise. - [ ] The functional coverage suite, type checks, lint and formatting pass. ## Blocked by - #280
nessar added the ready-for-agent label 2026-10-16 22:39:45 +02:00
nessar added a new dependency 2026-10-16 22:39:46 +02:00
Author
Owner

Done in PR #287 (87d7206): plan observations live in src/app/services/plan-observations.ts. Structure-only; all seven scenarios byte-identical, protocol 262.0 s before and after. Details: docs/benchmark/issue-279.md.

Done in PR #287 (87d7206): plan observations live in src/app/services/plan-observations.ts. Structure-only; all seven scenarios byte-identical, protocol 262.0 s before and after. Details: docs/benchmark/issue-279.md.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: nessar/vac-optimizer#282