split_entity
Repair over-merged entities by moving a predicate-selected subset of observations to a new or existing entity, without modifying observation content.
Instructions
R5 inverse of merge_entities. Re-points a predicate-selected subset of an entity's observations onto a new or pre-existing entity to repair over-merges (typically the pre-v1.2 heuristic name_key:title collapse on session-scoped types). Schema-agnostic predicate — supply any of observed_at_gte, source_id_in, or observation_field_equals. Observation content is never modified; only entity_id FK is re-bound. Idempotent via (user_id, idempotency_key) — reuse with a different predicate returns ERR_IDEMPOTENCY_MISMATCH. Typed relationships remain bound to the source; rebuild them with create_relationship.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source_entity_id | Yes | ||
| predicate | Yes | R5: declarative predicate describing which observations of the source entity should be re-pointed onto the new entity. Every form reads a column every observation row carries so the predicate surface is schema-agnostic. At least one form MUST be supplied. | |
| new_entity | Yes | ||
| idempotency_key | Yes | Required per MUST #11. Reuse with a different predicate returns `ERR_IDEMPOTENCY_MISMATCH`; reuse with the same predicate returns the original split result (`replayed: true`). | |
| reason | No | Free-text rationale recorded on the audit row. | |
| user_id | No |