# ListCurrentReportedBlocks

## Overview

Lists the current (non-superseded) `ReportedTimeBlock`s for an Assignment over a date range, paginated. This is exactly the input set that Time Calculation consumes to derive `CalculatedTimeBlock`s, and is the primary view for "what is declared right now" for a worker's days.

## Business Rules

- Returns only non-superseded blocks (`supersededByBlockId` is absent); superseded history is excluded
- Filters by `assignmentId` and an inclusive `workDate` range
- Current WORK blocks for a given Assignment and workday never overlap; BREAK and STEP_OUT blocks fall within a covering WORK span
- Results are paginated

## Process Flow

```mermaid
flowchart TD
    A[Caller supplies assignmentId + date range + pagination params] --> B{Valid assignmentId and range?}
    B -- No --> C[Return INVALID_QUERY_PARAMS]
    B -- Yes --> D[Look up ReportedTimeBlocks for assignmentId within range]
    D --> E[Filter to non-superseded blocks only]
    E --> F[Return paginated page of current blocks]
```

## External Dependencies

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

## Error Scenarios

- **INVALID_QUERY_PARAMS**: a required query parameter is missing or malformed
- **INVALID_PAGINATION_CURSOR**: supplied pagination cursor is not valid for this query

## Test Cases

- returns only non-superseded blocks for the Assignment and date range
- excludes a block once it has been superseded by a correction
- returns an empty page when no current blocks exist in the range
- returned current WORK blocks for the same workday do not overlap
- returns INVALID_QUERY_PARAMS when the date range start is after the end
