Тема
Закрытые расхождения реализаций
Расхождения между реализациями, найденные разбором: чем каждое закрыто или к какому репозиторию относится.
| № | Расхождение | Чем закрыто |
|---|---|---|
| 1 | роли полей: семь в реализации, восемь у потребителя | словарь ролей вида цели в разделе record_kinds; роль body включена |
| 2 | режим подсказки: сервер шлёт в ответе, потребитель читает из описания поля | norm_record_hint: /data/hint/mode — единственное место |
| 3 | имя непринятого поля читается из двух разных путей | norm_record_upsert: /data/rejected_fields/items/key |
| 4 | идентификатор встречи под именем protocolRef с префиксом источника | norm_meetings_list: /data/meetings/items/id |
| 5 | окно дат строкой с разделителем из двух точек | norm_meetings_list: /data/range как объект |
| 6 | версия контракта и тенант внутри ответа | версия только в _meta; тест каталога запрещает эти поля в data |
| 7 | коды отказа реализации вне словаря контракта | словарь расширен доменными кодами; business_error покрывает внутренний сбой |
| 8 | поле handles у человека ожидает потребитель, сервер не отдаёт | поле handles[] в схеме сотрудника: массив строк, та же форма, что у потребителя |
| 9 | рукописное описание контракта обещает поля, которых нет | business-mcp: рукописное описание удаляется, страница рендерится из слепка |
| 10 | устаревший комментарий об отбрасывании заголовка инструмента шлюзом | client: комментарий в коде кабинета, к контракту не относится |
| 11 | признак чтения или записи выводится из подсказки сервера, права заданы трижды | поле access у каждого инструмента каталога |