Making decisions before ...

22.12.25

Form of award

Денежная

Product status

MVP

Task type

Задачи ИКТ

Сфера применения

Media sphere

Область задачи

Smart Field Information Systems

Type of product

Software/ IS,

Mobile app

Problem description

Рассмотрим базовую версию программы P₀ и две ветки изменений P₁ и P₂. Семантическое требование к результату M = Merge(P₁, P₂): 1) для всех допустимых входов x поведение M(x) согласовано с P₁(x) и P₂(x) в части уже реализованных фич; 2) никакая ветка не теряет свои исправления; 3) Merge детерминированен и завершается за конечное время. Чтобы доказать, что такая задача в общем случае не имеет решения, достаточно заметить, что нам по сути требуется решать задачу эквивалентности программ: проверять, что M(x) и P₁(x) ведут себя одинаково для всех входов x в области, где ветка P₁ не затрагивает изменения P₂. Эквивалентность произвольных программ на Тьюринг‑полных языках — классический пример неразрешимой задачи.

Expected effect

Задача «универсального семантического merge, который всегда выдаёт корректный результат» в общем виде неразрешима. Можно строить: • практичные эвристические merge‑движки для конкретных языков и шаблонов; • системы формальной верификации для узких доменов; • гибриды merge+тестирование. Но постановка, в которой от алгоритма требуют абсолютных гарантий для любого кода в репозитории, противоречит фундаментальным ограничениям теории вычислимости.

Full name of responsible person

Сергеев И.А.

Purpose and description of task (project)

У заказчика монорепозиторий с мобильными и серверными компонентами (Kotlin, Swift, Go, TypeScript). Количество параллельных фич‑веток превышает 50, ручное разрешение конфликтов отнимает недели. Было сформулировано требование: спроектировать систему семантического merge, которая: • всегда порождает корректный объединённый вариант или явно отказывается от слияния; • в случае успешного слияния гарантирует сохранение поведенческой эквивалентности относительно обеих веток (ни одна существующая функциональность не ломается); • работает для любого проекта в репозитории без кастомных правил. Иными словами, ожидался «автомердж‑движок без сюрпризов», который снимает вопрос ручных конфликтов принципиально