Audit of canvas writes for the Model Check gap: every path records a step except a character voice dropped on a TTS node (audio_voice_drag.js), where a reload right after the drop brought the old voice back. material_drag.js now records after any drop handler finishes, so no drop target can miss it; handlers that already record add no extra step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>