# ProductionOrderBomSnapshot

## Description

ProductionOrderBomSnapshot stores the immutable BOM state frozen at production-order release. It owns the parent item reference, BOM type, and a serialized representation of the full BOM structure so that later BOM edits never affect released work.

## Domain Model Definitions

### Model type

Standard

### Command Definitions

- [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Freeze the BOM snapshot when the production order is released.

### Query Definitions

- [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve the BOM snapshot as part of the parent production order.

### Models

- ProductionOrderBomSnapshot

### Invariants

- Every ProductionOrder has at most one ProductionOrderBomSnapshot, created at release.
- The snapshot is immutable once created; later BOM updates do not affect it.
- `bomType` reflects the BOM type semantics frozen at release time.
- The snapshot exists only on orders in `RELEASED`, `IN_PROGRESS`, `COMPLETED`, `TECHNICALLY_COMPLETE`, or `CLOSED`.

### Relationships

- **Belongs To ProductionOrder**: the snapshot is owned by one [ProductionOrder](./ProductionOrder.md).
- **Derived From BillOfMaterial**: the snapshot captures the state of a resolved [BillOfMaterial](./BillOfMaterial.md) version at release time.
