# GetReportedBlock

## Overview

Retrieves a single `ReportedTimeBlock` by its id, whether current or superseded. Used to inspect one declared interval directly, including when following a correction chain (via `supersededByBlockId`) or when calculation needs to re-check a `sourceReportedBlockIds` reference.

## Business Rules

- Returns the block regardless of superseded status, so historical (superseded) declarations remain individually retrievable
- `blockType` and `sourceKind` are returned with normalized enum naming
- `correctionReason` is present only when the block is itself a correction of a prior block

## Process Flow

```mermaid
flowchart TD
    A[Caller supplies reportedBlockId] --> B{Block exists?}
    B -- No --> C[Return REPORTED_BLOCK_NOT_FOUND]
    B -- Yes --> D[Return ReportedTimeBlock with blockType, sourceKind, startAt/endAt, supersededByBlockId, correctionReason]
```

## External Dependencies

- [time-tracking::ReportedTimeBlock](../model/ReportedTimeBlock.md) model — entity being queried

## Error Scenarios

- **REPORTED_BLOCK_NOT_FOUND**: no ReportedTimeBlock exists with the supplied id

## Test Cases

- returns the reported block when found by id, including blockType, sourceKind, and startAt/endAt
- returns REPORTED_BLOCK_NOT_FOUND when the id does not exist
- returns a superseded block's supersededByBlockId when the block has been corrected
- returns correctionReason for a correction block and omits it for an original declaration
