fix: align score and OKS routing with organizer rules
Исправлены две регрессии, подтверждённые независимой проверкой диагностического стенда:
- ORG-09: score использует вес длины 0,7 и стоимости 0,3. Численный тест проверяет результат и выбор более короткого, но более дорогого варианта.
- ORG-04: геометрия ОКС не блокирует точку подключения и не становится препятствием маршруту. Координаты точки сохраняются; невалидная геометрия по-прежнему отклоняется.
Добавлены регрессионные тесты импорта, маршрутизации, расчёта score и STRICT API: равенство вариантов/экспорта с ОКС и без него, порядок альтернатив и отклонение невалидного ОКС. Диагностика отсутствующих инженерных атрибутов сохранена. allowTerminalInsideOks оставлен как игнорируемое поле совместимости. Описание: docs/organizer-runtime-regressions.md.
Проверка завершена:
- MR pipeline #9325: 5/5 success.
- Сборка и деплой main #9327: 6/6 success, commit b9af3f91.
- 58 Java-тестов на Java 11, 64 теста CI, 680 документных проверок; JAR сборки и стенда совпадает по SHA-256.
- На обновлённом стенде повторены шесть API-сценариев. Независимый Python-валидатор: 112 PASS, 0 FAIL, 2 NOT_VERIFIED (полная смета исследовательских вариантов без исходных данных). Количество утверждений не является процентом покрытия ТЗ.
- Строгий контроль с ОКС теперь COMPLETED / экспорт 200, его варианты и маршрут совпадают с контролем без ОКС. Score 0.810955127941149 совпадает с независимым пересчётом. Невалидная геометрия возвращает 422 INVALID_DATA.
- Полный синтетический вход остаётся FAILED в STRICT с 77 обоснованными диагностиками недостающих расходов, upstream, диаметров камер и правила железной дороги; прежние 17 геометрических блокеров ОКС устранены.
Границы: нормировочные знаменатели score требуют подтверждения ORG-Q07; глобальная оптимальность, полный актуальный выходной контракт и конкурсная приёмка не подтверждены. Для ранее загруженных проектов нужен новый импорт: историческая сохранённая диагностика автоматически не мигрируется. Локальные воспроизводимые доказательства: output/trasser-organizer-fixes/REPORT.md и output/trasser-dataset-run-fixed/.