Присоединять отклонённые пути через общую камеру
В стратегии общих ветвей путь к цели мог пересечь уже построенную новую линию и быть отброшен без повторного использования. После обычного поиска такие пути теперь проверяются на присоединение через камеру в последнем пересечении. Исходные подключения сохраняются; весь граф заново рассчитывается и проверяется до применения изменения. На цель хранится до восьми различных отклонённых путей; это инженерное ограничение эвристики, не норма ТЗ.
На скорректированном городском наборе полный штатный отбор стратегий дал один вариант v6 с 13/17 подключениями вместо прежних 12/17 и 11/17. Добавлена цель 15; сохранены все цели обоих прежних вариантов. Независимый CurrentResultVerifier не обнаружил ошибок и не отклонил ни одного предложенного результата. Прежний вариант 11/17 исключён штатным правилом предпочтения полного надмножества подключений.
Лимит 8000 раскрытий на цель сохранён. Все счётчики v6 точно совпадают с версией на 12 подключений. Score 28.898961254144353 → 27.33195020439708; длина 2136.513223 м; стоимость строительства 270098947.643002 руб.; стоимость со штрафами 747228947.643002 руб. Новая ветвь: 31.89 т/ч, ДУ125, 244.664733 м. Общий питающий участок пересчитан на 66.42 т/ч и ДУ200. Экономический отказ и послабления геометрии не добавлены.
Проверки коммита 99fce691:
- Maven Java 11 clean verify: 251/251, ноль failures/errors/skips.
- Gradle Java 11: 73/73 целевых теста и bootJar.
- Документация: 1118/1118; документационные регрессии 16/16; проверки каталога 16/16. Каталог: 198 регрессий.
- Семь новых регрессий покрывают последнее пересечение, обратную ориентацию ребра, наложение и стоимость, предел примыканий, запрет разветвления в цели/technical_node, нулевое присоединение, отмену и городские 13 подключений.
- Полный функциональный прогон шести стратегий выполнен на 92 классах и 57 зависимостях, побайтно совпадающих с готовым Maven JAR. SHA-256 JAR: fbf120efd03b4c528c773fcd379df37f1dae5f707665bb622c705a0a3664a4be. Это не полная HTTP-приёмка и не benchmark.
GitLab pipeline: https://git.digital08.ru/arkadiy/trasser/-/pipelines/10097 — SUCCESS, все 8 заданий: ci:self-test, node:verify, docs:contracts, java:verify, java:gradle, java:inspect, current:coverage, delivery:smoke. Draft снят после проверки точного SHA. Дублирующий push-pipeline 10096 отменён.
Зависит от !56 (merged); target оставлен на его ветке, чтобы diff содержал только этот этап. В main ещё не слито. productAccepted=false: цели 2/5/10/16 не подключены, их физическая недостижимость не доказана. Полная конкурсная и инженерная приёмка открыты. SSH-ключ общего Beads недоступен; карточка не изменена и локальный трекер не создан.
Дополнительная локальная проверка новой ветви: удаление любой одной из пяти промежуточных вершин нарушает отступы к ОКС 87/89/92 либо правило финального подхода. Это поддерживает обоснованность изгибов, но не заменяет инженерное заключение и не доказывает глобальный оптимум.
Обновление 24.09.2026: по поручению Аркадия для слияния в main интегрирован актуальный main, коммит aa370075. Конфликт каталога разрешён объединением без потерь: 200 регрессий, включая обе проверки вершины оси из main. 16 локальных тестов каталога PASS. Target теперь main; обязательный CI объединённой версии #10283: https://git.digital08.ru/arkadiy/trasser/-/pipelines/10283 . Включено автоматическое слияние после CI. Приведённые выше городские измерения относятся к исходному 99fce691, заново не выполнялись.