# ТЗ #6 — XCME: многосегментный путь без ложных перемычек - Issue: https://github.com/Matysh/houseplan-card/issues/6 - Приоритет: P1 - Статус ТЗ: реализовано по HP-VAC-02 rev.7; целевой gate v1.61.0-beta.1 пройден, ожидается публикация - Родительский контракт: `docs/superpowers/specs/2026-08-09-vacuum-integration-coverage-design.md`, §4.1 ## Цель Корректно принимать Xiaomi Cloud Map Extractor `attributes.path.path` как набор независимых траекторий. Разрыв между подмаршрутами не должен превращаться в нарисованный переезд робота. ## Требования 1. Канонический тип frontend — `VacPath = Pt[][]`, где каждая внутренняя последовательность является отдельным drawable subpath. 2. Парсер принимает плоский legacy path, `path.points` и `path.path`. 3. Невалидные точки отбрасываются; subpath короче двух валидных точек не участвует в отображении и арбитраже источников. 4. Сначала фильтруются недорисовываемые сегменты, затем остаются последние 64. 5. Общий бюджет — 4000 точек. У каждого subpath сохраняются обе крайние точки; остаток распределяется largest-remainder, при равенстве выигрывает более старый из оставшихся subpath. 6. Рендер формирует один SVG `path` с отдельной командой `M` на каждый subpath, без `L` между ними. 7. Один resolver выбирает drawable integration path, затем server trail, затем локальный runtime trail. Пустой/одноточечный integration path не блокирует следующий источник. 8. При скрытии terminal target изменяется только последний drawable subpath. ## Совместимость и ограничения - Сохранённый server trail и формат backend не мигрируют. - Dreame/Valetudo integration path не заявляется без подтверждённого формата. - Никаких CSS-фильтров или соединительных пунктирных линий между subpath. ## Проверки - unit: все поддерживаемые формы, невалидные точки, cap после фильтрации; - unit: точный бюджет, сохранение концов и old→new tie-break; - unit: drawable arbitration и обрезка последнего target; - browser: несколько `M`, отсутствие моста между удалёнными сегментами; - performance: 64/4000 остаются в текущем render budget. ## Приёмка - XCME history виден полностью в пределах бюджета; - визуальных перемычек между разрывами нет; - fallback trail появляется, если integration path не рисуем; - flat legacy path выглядит как до изменения.