Undo Composition Event
undo_composition_eventUndo a previous lift or split composition event by applying inverse state across all affected threat models. Detects divergent changes first and refuses with a structured 409 when the entity has evolved.
Instructions
Apply the inverse of a previous composition event. Mutating — persists inverse state across multiple models.
Re-runs the divergence detector immediately before applying and
refuses with 409 + the structured refusal block when state has
materially evolved since the forward event (assertions submitted on
the affected entity, downstream COs added that reference it, the
entity edited, etc.). On success, persists the inverse state
operations across every affected model and emits a structured
lift_undone / split_undone activity event citing
original_event_id so the audit pack can chain undo to its forward.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Either the surrogate id of the forward ``lift_applied`` / ``split_applied`` activity event, or the structured ``lift_id`` / ``split_id`` carried in the event payload. | |
| model_id | Yes | The model whose composition view originated the event. Must match the cited event's ``threat_model_id`` — the server rejects cross-model citations with 404. | |
| event_type | Yes | Which forward composition event to undo. One of: - ``"lift"``: undo a ``lift_applied`` event. On success, persists the inverse across the LCA + every affected source descendant and emits a ``lift_undone`` event. The returned ``models`` block carries ``lca_model`` and ``source_descendant_models``. - ``"split"``: undo a ``split_applied`` event. On success, restores the ancestor's entity, tombstones the duplicated copies on every target descendant, persists across all affected models, and emits a ``split_undone`` event. The returned ``models`` block carries ``ancestor_model`` and ``descendant_models``. | |
| server_version | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||