# WorkOrderExecutionEvent

## Description

WorkOrderExecutionEvent records one discrete execution action taken on a WorkOrder. It owns the event type, timestamp, and optional quantity, time, scrap, and notes values that together form the immutable audit trail for shop-floor progress, pauses, resumes, and completion.

## Domain Model Definitions

### Model type

Standard

### Command Definitions

- [startWorkOrder](../commands/StartWorkOrder.md) - Append STARTED execution events when shop-floor work begins.
- [reportWorkOrderProgress](../commands/ReportWorkOrderProgress.md) - Append PROGRESS_REPORTED events with quantities, time, scrap, and notes.
- [pauseWorkOrder](../commands/PauseWorkOrder.md) - Append PAUSED execution events when work is interrupted.
- [resumeWorkOrder](../commands/ResumeWorkOrder.md) - Append RESUMED execution events when work continues after a pause.
- [completeWorkOrder](../commands/CompleteWorkOrder.md) - Append COMPLETED execution events when the operation finishes.

### Query Definitions

- [getWorkOrder](../queries/GetWorkOrder.md) - Retrieve execution events as part of one work order.

### Models

- WorkOrderExecutionEvent

### Invariants

- Every WorkOrderExecutionEvent belongs to exactly one WorkOrder.
- `eventType` must be one of `STARTED`, `PAUSED`, `RESUMED`, `PROGRESS_REPORTED`, or `COMPLETED`.
- `quantity`, `timeValue`, and `scrapValue`, when provided, must be zero or greater.
- Events are append-only; existing events are never mutated after creation.

### Relationships

- **Belongs To WorkOrder**: each event is subordinate to one [WorkOrder](./WorkOrder.md).
