{
  "source_sha": "426e38a4eb6e924ea75e2f1e7661b6f835eed77b",
  "logic": [
    {
      "id": "L1",
      "before": "Квитанция описывалась как отправка исходного запроса",
      "after": "Контракт сохранённой команды и направление ответа имеют приоритет над ошибочным историческим purpose."
    },
    {
      "id": "L2",
      "before": "Поиск не находил передачу по ID её приёма",
      "after": "Поиск учитывает ID всех объединённых наблюдений, номер передачи сохраняется."
    },
    {
      "id": "L3",
      "before": "Старый фильтр участника audio давал пустой журнал; подписи менялись при обновлении",
      "after": "Псевдонимы сразу переводятся в точные ID, подписи участников сохраняются."
    },
    {
      "id": "L4",
      "before": "Открытые подробности оставались устаревшими",
      "after": "Новые факты обновляют открытую панель; неизменившиеся факты не сбрасывают фокус, JSON и прокрутку."
    },
    {
      "id": "L5",
      "before": "Подробности локальной операции дважды показывали тот же компонент; подпись схемы обозначала передачу самому себе",
      "after": "Один компонент, явная локальная операция и отсутствие фиктивной стрелки передачи."
    },
    {
      "id": "L6",
      "before": "Некорректные и противоречивые отметки времени не были различимы",
      "after": "Ошибочное время обозначено явно; при получении раньше отправки показано расхождение часов без вычисления сетевой задержки."
    },
    {
      "id": "L7",
      "before": "Переход к выбранной передаче, скрытой фильтрами, оставлял её невидимой",
      "after": "Показано состояние скрытого выбора и явный сброс фильтров для перехода."
    }
  ],
  "visual": [
    {
      "id": "V1",
      "before": "Не было общей нумерации",
      "after": "Одинаковые номера в журнале, схеме и боковой панели; фильтры и обратный порядок их не меняют."
    },
    {
      "id": "V2",
      "before": "Вложенные и параллельные ветви выглядели плоским списком",
      "after": "Отступы 16/32 px и отдельные подписи; параллельность только с доказанными интервалами и общей причиной."
    },
    {
      "id": "V3",
      "before": "Смысл операции терялся среди развёрнутых subject, UUID и технических подписей",
      "after": "В начале панели оставлены смысл и маршрут. Полные адреса, идентификаторы и исходные timestamps доступны в раскрытии."
    },
    {
      "id": "V4",
      "before": "Заголовок и закрытие панели уходили при прокрутке",
      "after": "Общий закреплённый заголовок с компактной кнопкой закрытия."
    },
    {
      "id": "V5",
      "before": "Автопереход прокручивал внешний инспектор и скрывал управление",
      "after": "Прокручивается сама последовательность; фильтры закреплены ниже вкладок, верхний отступ раздела предотвращает их перекрытие. Заголовки схемы и панели не перекрывают управление."
    },
    {
      "id": "V6",
      "before": "Длинные адреса перегружали строки и сжимали соседние колонки",
      "after": "Согласованы колонки и отступы; адрес в строке ограничен двумя строками, полное значение доступно в подробностях."
    }
  ],
  "limits": [
    "Новых событий, сервисов и данных не добавлено.",
    "На исходной записи параллельные RPC не подтверждены; они не дорисованы.",
    "Для визуальной проверки параллельности используется отдельный синтетический сценарий."
  ]
}
