Archive three completed changes to archive/: - api-resource-standard (70 tasks, 14 resource classes) - capacity-expert-mode (68 tasks, expert mode planning grid) - enhanced-allocation (62 tasks, planning fidelity + reporting) Sync all delta specs to main specs/: - api-resource-standard: API response standardization - capacity-expert-mode: Expert mode toggle, grid, KPIs, batch API - resource-allocation: Month execution comparison, bulk, untracked - untracked-allocation: Null team member support - allocation-indicators: Variance indicators (red/amber/neutral) - monthly-budget: Explicit project-month planning All changes verified and tested (157 tests passing).
2.8 KiB
2.8 KiB
Purpose
TBD
Requirements
Requirement: Manager enters explicit monthly plan per project
The system SHALL allow managers to set planned hours for each project-month cell.
Scenario: Set monthly plan across multiple months
- GIVEN project
PROJ-001hasapproved_estimate = 3000 - WHEN manager sets Jan=1200, Feb=1400, Mar=400
- THEN the system stores those exact values
- AND no derived monthly average is applied
Scenario: Edit monthly plan cell inline
- GIVEN a month-plan grid cell contains 1200
- WHEN manager edits the cell to 1100 and commits
- THEN the system persists 1100
- AND reconciliation status recalculates immediately
Requirement: Reconcile month-plan sum against lifecycle approved estimate
The system SHALL compute reconciliation status per project based on:
sum(non-null monthly planned hours) vs approved_estimate.
Scenario: OVER reconciliation
- GIVEN
approved_estimate = 3000 - AND month-plan sum is 3200
- THEN status is
OVER
Scenario: UNDER reconciliation
- GIVEN
approved_estimate = 3000 - AND month-plan sum is 2800
- THEN status is
UNDER
Scenario: MATCH reconciliation
- GIVEN
approved_estimate = 3000 - AND month-plan sum is 3000
- THEN status is
MATCH
Requirement: Preserve blank month semantics
The planning grid SHALL keep unset months visually blank and semantically distinct from explicit zero.
Scenario: Blank remains blank
- GIVEN no plan exists for April
- WHEN manager views planning grid
- THEN April cell is blank (no
0shown)
Scenario: Clear cell sets blank semantics
- GIVEN a month cell has planned value
- WHEN manager clears the cell and commits
- THEN the month is stored as blank/unset semantics
- AND planning UI displays blank
Requirement: Allocation variance uses blank plan as zero
For allocation variance computation only, missing month plan SHALL be treated as planned 0.
Scenario: Allocate against blank plan month
- GIVEN no plan is set for selected month
- AND project allocations total 40h
- WHEN variance is computed
- THEN planned value used is 0
- AND row variance is +40
- AND allocation operation remains allowed
Requirement: Grid-first planning interaction
Project-month planning SHALL be managed in a grid-first interface.
Scenario: Keyboard-first editing
- WHEN manager navigates month-plan grid with keyboard
- THEN inline cell editing and commit are supported
- AND modal interaction is not required for normal edits
Requirement: Monthly budget derivation
Monthly plan values SHALL be explicit manager-entered project-month values; no derivation formula is used for planning behavior (rejected: approved_estimate / 12).