Files
headroom/openspec/changes/enhanced-allocation/specs/untracked-allocation/spec.md
Santhosh Janardhanan b7bbfb45c0 docs(openspec): add reporting API contract documentation
Add comprehensive API documentation for the reporting endpoint:
- Request/response structure
- View type inference (did/is/will)
- Blank vs explicit zero semantics
- Status values and error responses

Related to enhanced-allocation change.
2026-03-08 18:22:27 -04:00

2.0 KiB

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).