- validation skips elements and canvas fields the patch leaves unchanged; new or changed ones are validated per declared type with precise property pointers; line elements accept rotate
- read_stage text view returns field-level writable pointers
- str_replace: missing-field and missing-anchor errors list real fields / closest excerpt; path-less str_replace resolves to a unique text-view field
- arrays and ids: append at index == length or -, clearer out-of-bounds errors, server-owned element/action ids preserved, duplicate action ids rejected
- structural leniency: /content/elements alias, unambiguous op inference, missing action ids assigned, add_element renderer defaults
- speech audio is kept only when the batch-start action with the same id had identical text
- malformed tool-call JSON is never stored or replayed; the parse diagnosis is returned to the model and the call is blocked before execution
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>