# Purpose TBD # Requirements ## Requirement: Month execution comparison target The system SHALL compare selected month project allocation against explicit project-month planned hours (not derived or lifecycle assumptions). ### Scenario: Compare row total to month plan - **GIVEN** selected month plan for project is 1200h - **AND** project allocations total 1300h - **THEN** project row variance is +100h - **AND** row status is `OVER` ### Scenario: Blank month plan comparison - **GIVEN** selected month has no plan value set - **AND** project allocations total 50h - **THEN** comparison target is 0h - **AND** row status is `OVER` - **AND** allocation remains allowed ## Requirement: Bulk allocation behavior The system SHALL save valid items even if some items fail (partial bulk success). ### Scenario: Partial bulk success - **WHEN** 10 allocation items are submitted and 2 fail validation - **THEN** 8 valid items are persisted - **AND** failed items return per-index validation errors - **AND** response includes summary created/failed counts ## Requirement: Untracked execution semantics The system SHALL treat `team_member_id = null` as untracked effort. ### Scenario: Untracked counted in project, excluded from capacity - **WHEN** untracked allocation exists for selected month - **THEN** project totals include it - **AND** member capacity/utilization computations exclude it