Mirror Task 3 (leave provider) on the RTT side: accept an optional `?phaseId`
query parameter and cap the exercise window to the phase boundaries when set.
- Inject EmployeeContractPhaseResolver.
- New helpers: resolveTargetPhase, clampYearToPhase, exerciseYearForDate.
- resolveYear now takes the phase: default year falls back to the phase end
date when phaseId is provided; explicit year is silently clamped to the
phase range.
- provide() narrows periodFrom / periodTo / limitDate to the phase end date
for past phases.
- Default behavior (no phaseId) unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>