# RUN_FROZEN

- Surface: API
- HTTP status: 409
- Details: `{ frozenFields: string[], currentRunId: string, attemptedChange: string, recommendedAction: RecommendedAction }`

## Cause

The edit touches a field that a running Run freezes. Changing it mid-flight would rebucket Entities that were already measured, so the write is refused whole.

## Fix

`details.frozenFields` names exactly what is immutable and `details.recommendedAction` names the way out. An assignment field (`salt`, `allocation`, `variantSet`, `targetingRules`, `targetingSegmentId`, `experiment.targetingKey`, `activationMetricId`) returns `CREATE_NEW_RUN`, because a draft Run holds that field and the change applies cleanly there. An App-level or Flag Configuration field (`flagConfig.*`, `variant.value`) returns `END_RUNNING_RUN_FIRST`, because no draft Run has a destination for it.

## Related

- [DECISION_LOCKED](https://splitch.dev/docs/error/DECISION_LOCKED)
- [TARGETING_KEY_MISMATCH](https://splitch.dev/docs/error/TARGETING_KEY_MISMATCH)
- [EXPERIMENT_RUNNING](https://splitch.dev/docs/error/EXPERIMENT_RUNNING)

Source: https://splitch.dev/docs/error/RUN_FROZEN