docs(openspec): archive completed changes and sync main specs

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).
This commit is contained in:
2026-03-08 19:13:28 -04:00
parent ec15386b52
commit b8262bbcaf
26 changed files with 2949 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
# Untracked Allocation Specification
## Overview
This capability supports external/unassigned effort by allowing allocations without a team member association.
## ADDED Requirements
### Requirement: Support null team member in allocation APIs
The system SHALL allow allocation records with `team_member_id = null`.
#### Scenario: Create untracked allocation
- **GIVEN** user has allocation create permission
- **WHEN** POST /api/allocations with `team_member_id = null`
- **THEN** allocation is created successfully
#### Scenario: Bulk create with mixed tracked/untracked
- **GIVEN** a bulk payload contains tracked and untracked entries
- **WHEN** POST /api/allocations/bulk is executed
- **THEN** untracked entries with valid data are processed successfully
### Requirement: Include untracked in project totals
Untracked hours SHALL contribute to project-level and grand totals.
#### Scenario: Project total includes untracked
- **GIVEN** project has tracked 80h and untracked 20h in selected month
- **WHEN** project row total is computed
- **THEN** row total is 100h
### Requirement: Exclude untracked from member capacity metrics
Untracked allocations SHALL NOT contribute to any team member utilization/capacity variance.
#### Scenario: Member utilization ignores untracked
- **GIVEN** selected month has untracked allocations
- **WHEN** member column totals and capacity variance are computed
- **THEN** untracked rows are excluded from member computations
### Requirement: Present untracked in execution grid
The allocation grid SHALL expose untracked as a first-class execution bucket.
#### Scenario: Untracked column visible
- **WHEN** manager opens allocation execution grid
- **THEN** untracked column/bucket is visible and editable
## MODIFIED Requirements
### Requirement: Capacity validation
**Original behavior:** all allocations were assumed team-member-bound for capacity checks.
**Updated behavior:** capacity validation is skipped for untracked allocations (`team_member_id = null`).