Structural editing
Structural editing is a schema-controlled operation, not arbitrary DOM manipulation. A structural command identifies a section by its stable section ID and asks the framework to move, remove, or duplicate it. The framework reads the component definition and rejects an operation that its editor.structure policy does not allow.
The current applyStructuralMutation runtime helper supports:
movewithin the existing document order;removewhen the component is removable;duplicateonly when the component is duplicable and below its instance limit.
It rejects unknown section IDs, invalid destinations, duplicate IDs, locked sections, and instance-limit violations before persistence. The caller still performs authorization, optimistic version checking, audit logging, and draft persistence.
The Morning Bell example exercises this path with two component types. Content sections may move, be removed, or be duplicated up to their developer-defined limit. The Hero may move or be removed but cannot be duplicated. Successful structural commands request a fresh server-rendered draft.
Adding a component is intentionally the next extension of this primitive. It needs a theme-layout slot/region context so the framework can enforce placement and required-slot rules instead of accepting a type at an arbitrary index.