a09935aa29
Read-путь прячет resolved comment-анкоры (#337), поэтому markdown, который агент шлёт в updatePageMarkdown, их уже не содержит — наивный full-write стирал ВСЕ resolved comment-марки (потеря данных). Активные комментарии переживают round-trip сами (read отдаёт их <span data-comment-id>), а resolved — нет. Правка: в write-пути (updatePageContentRealtime) пере-прививаем resolved- марки из ЖИВОГО дока на совпадающие текстовые диапазоны свежеимпортированного тела, механикой анкоринга comment-anchor. spliceCommentMark обобщён на произвольную марку; добавлены applyCommentMarkInDoc (сохраняет resolved:true + attrs), collectResolvedCommentSpans и regraftResolvedComments (чистая, не мутирует входы). Спан, чей текст агент изменил/удалил, просто не переанкорится и отбрасывается (он и так resolved). first-occurrence-семантика как у остального анкоринга. Проверено: 6 новых наблюдаемых тестов + весь MCP unit-suite (691) зелёные. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>