fe30936e2f
Модель органически вставляет `<!-- ... -->` в mxGraph-XML вопреки запрету в описании тула (природа LLM, промптингом не лечится). Жёсткая ошибка линтера [no-comments] заставляла её ПОЛНОСТЬЮ перегенерировать диаграмму — впустую потраченный tool-call на почти каждой первой генерации. Теперь в общем prepare-пути (`prepareModel`, через который идут drawioCreate/drawioUpdate/drawioEditCells) комментарии срезаются ДО линта: `xml.replace(/<!--[\s\S]*?-->/g, "")`. Комментарии не несут семантики, так что стрип всегда безопасен. Число срезанных комментариев уходит в `warnings[]` как `stripped N XML comment(s)` (только при N > 0) — модель это видит, но НЕ ретраит. Стрип ГЕЙТИТСЯ на well-formedness: сначала парсим модель, и режем комментарии только если XML корректен. На malformed-входе (например сырой неэкранированный `<!--` внутри значения атрибута на пути create/update, где normalizeInput отдаёт строку без парсинга) стрип НЕ выполняется — иначе он молча вырезал бы текст автора и принял битую диаграмму. Вместо этого правила линтера value-escaping / well-formed-xml корректно отклоняют такой вход, и автор видит реальную ошибку. В корректном XML литеральный `<!--` в значении обязан быть entity-escaped, а CDATA drawio не использует, поэтому после проверки well-formedness регэксп бьёт только по настоящим comment-нодам. Правило `no-comments` в линтере оставлено как defense-in-depth backstop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>