Перейти к содержанию

ADR-0001 · Обещание совместимости машинного интерфейса отчётности#

Статус:    принят · 2026-09-21
Метод:     D-11 v1.0 · шаблон ADR v1.2
Участники: руководитель ИТ ЦУУ, два аналитика, юрист; согласовано с профильным отделом ведомства

Учебная запись: часть прогона U-02, система вымышлена. Форма и рассуждение настоящие.

Контекст#

Вход — 00-context.md. Спецификацию надо опубликовать через десять дней, первое окно отчётности — через полгода.

Кто на той стороне — по строкам таблицы раздела 1 D-11#

Кто Здесь это Когда узнаем о поломке
Наш код в том же выкате Нет: серверная часть ничего у себя же не вызывает —
Наш сервис со своим циклом выката Личный кабинет у подрядчика — своя очередь релизов, две недели [допущение] Недели
Партнёр по договору 25 вендоров учётных систем, квартальный релиз плюс внедрение у клиента Месяцы
Мобильное приложение Нет —
Неизвестный потребитель Нет и не может быть: подача подписана и привязана к лицу из реестра; анонимного доступа нет [приказ] —
То, что уже уехало наружу Квитанция. Подписана нами, хранится у обязанного лица годами, служит доказательством исполнения обязанности Никогда: отозвать нельзя

Ответы на три координатных вопроса — снимок условий момента#

Вопрос Ответ Пометка
Можем ли назвать поимённо тех, кто вызывает? Да, и это гарантировано законом. Оператор один, обойти его нельзя, каждая подача подписана лицом из реестра. Список — факт, а не нижняя граница [приказ]
Видим ли, какие именно поля и методы читаются? Да, и даром. Интерфейс принимает документы: мы проверяем каждое поле каждой подачи, то есть видим использование по построению, ничего для этого не строя [расчёт]
Какой срок предупреждения даём? Продуктовой договорённости нет — организации полгода. Нижняя граница задана самым медленным потребителем: квартальный релиз вендора плюс внедрение у клиента ≈ 6–9 месяцев [допущение]

Координата знания: КЧ. Оба знания есть, и ни одно не куплено: одно дано приказом, другое — направлением интерфейса.

Дисквалификаторы#

Требование Что с ним Почему
Дать срок предупреждения Оставлено Первый дисквалификатор не сработал: знание КЧ, адресата видно, исполнение объявления устанавливается
Длина срока — квартал Отвергнута Второй дисквалификатор: квартал короче цикла самого медленного потребителя. Срок растёт до цикла вендора плюс внедрение
Обещать схему целиком Оставлено Третий не сработал: сужение проверяется — мы видим, кто ещё шлёт снимаемое поле
Обещание в терминах схемы Отвергнуто Четвёртый сработал и он здесь главный: ужесточение проверки меняет смысл, не трогая схему. Тот же код ошибки, другое условие. Охват обязан быть назван словами
Решать формат квитанции этим документом Отвергнуто Пятый: квитанция уже уехала наружу. Это второй случай «вне пространства» — у неё нет срока предупреждения, совместимость только вперёд

Что превратилось в работу до объявления политики: формат квитанции выносится в отдельное решение и в этом ADR не принимается.

Решение#

Ячейка КЧ × T — полевая ячейка: знаем и кто вызывает, и что шлёт; обещаем срок предупреждения.

Длина срока — 12 месяцев с даты объявления. Не 6 и не 9: цикл вендора плюс внедрение даёт 6–9, но отчётность квартальная, и предупреждение обязано пережить целый отчётный год, чтобы обязанное лицо встретило изменение между окнами, а не внутри окна.

Охват обещания словами — три пункта, и только они:

  1. Поле, однажды принятое, принимается ещё 12 месяцев после объявления о снятии. Сужение состава полей — под сроком.
  2. Строгость приёмки не ужесточается без того же срока. Проверка, которая сегодня пропускает документ, через год без объявления его не отвергнет. Это обещание о смысле, а не о схеме, и оно здесь главное.
  3. Набор кодов отказа и условия, при которых они выдаются, — под тем же сроком. Новый код отказа может появиться в любой момент; изменение условия существующего — нет.

Что в охват не входит и названо прямо: сроки вынесения вердикта (это D-10), формат квитанции (вне пространства, отдельное решение) и смысл величин, определяемый методикой расчёта сбора — см. замечание 3.

Обоснование#

Ничьей не было, и эвристика о том, кто платит, не понадобилась. D-11 говорит: ничья возникает там, где знания нет; при Ч за нас отвечает трафик. Здесь есть оба знания, и ячейка получилась не выбором, а следствием: 0 и ∞ отвергаются не вкусом, а тем, что обе координаты заполнены.

Почему не 0. Он законен и здесь неприемлем по цене: цена нашей поспешности — штраф от 250 тыс ₽ у потребителя, который не может уйти к другому оператору. Это ровно тот случай, про который эвристика говорит «цена ложится на потребителя и не видна», только тут она видна и посчитана.

Почему не ∞. Не сужать никогда — значит нести в интерфейсе всё, что мы придумаем до декабря, когда выйдет методика. При годовом сроке и годовом цикле отчётности снятие обходится в одно объявление.

Последствия#

Что придётся построить: учёт отправляемых полей по лицам и по версиям модуля вендора — иначе обещание пункта 1 нечем исполнить адресно. Стоит немного: счётчик на уже существующем разборе документа.

Что становится дороже. Годовой срок означает, что ошибка в спецификации живёт год. Опубликовав 1 октября поле, которое окажется лишним после декабрьской методики, мы снимем его не раньше октября 2027 — то есть проведём через него два окна отчётности.

Чего лишаемся. Права ужесточить проверку быстро. Если после первого окна выяснится, что недостоверную отчётность пропускает дырявая валидация, закрыть дыру немедленно мы не сможем: пункт 2 охвата связывает нас на год. Это отрицательное последствие принято сознательно — альтернатива хуже: ужесточение без предупреждения превращает наш недосмотр в чужой штраф.

Обходной путь, который придётся оставить: отказ по новому коду при сохранении старого условия — способ ловить недостоверность, не нарушая пункта 3.

Условия пересмотра#

  • Появилась возможность подавать отчётность мимо оператора — координата «кто» изменилась, ячейка другая.
  • Вендор объявил цикл релизов длиннее квартала — срок обязан вырасти.
  • Срок объявлен, прошёл, снятия не было ни разу — обещание стало бессрочным по факту.
  • Методика расчёта сбора определила величины так, что смысл принятого поля изменился, — см. замечание 3.
  • Появилась доставка наружу помимо квитанции: выгрузка в ведомство, публикация реестра.

Самая дорогая будущая граница#

Состав и смысл полей документа отчётности. Опубликованный 1 октября состав будет читать 25 вендоров и 4 200 организаций; после публикации любое сужение стоит года. Дешевле всего сейчас — не класть в спецификацию ничего, чего не требует закон, и оставить расширение на необязательных полях.

Связанные ADR#

Зависимые: решение о границах (ADR-0004 по D-05) — разрез создаёт контракт, и обещание по нему придётся давать в тот же день. Формат квитанции — отдельное решение, в этом прогоне не принимается.


Замечание 1 · На гринфилде знание не покупается, а закладывается#

D-11 содержит таблицу «уйти из ячейки можно, только купив знание»: переход из — в К там назван архитектурным изменением, а не настройкой, потому что требует точки, через которую обязан идти весь трафик.

Здесь ни одного перехода не потребовалось: К дан приказом, Ч — направлением интерфейса. Таблица цен предполагает существующий интерфейс, у которого знание уже упущено. На гринфилде та же покупка стоит одного решения в день, когда интерфейса ещё нет, — и документ об этом не говорит.

Замечание 2 · У интерфейса-приёмника координата Ч определена не в ту сторону#

D-11 определяет Ч как «видим, какие именно поля и методы читаются». Интерфейс здесь принимает, а не отдаёт: значимо то, какие поля шлют, и это видно по построению — мы проверяем каждое поле каждой подачи.

Координата работает и ответ даёт верный, но её формулировка написана для интерфейса, который отдаёт данные. Документ нигде не говорит, что направление бывает обратным.

Замечание 3 · Обещание даётся раньше, чем определён его предмет#

Спецификация публикуется 1 октября; методика расчёта сбора выходит в декабре. То есть смысл величин, которые мы обязуемся принимать, будет определён третьей стороной через два месяца после того, как мы пообещали их принимать.

D-11 требует назвать охват словами и проверяет решение вопросом: «сможет ли потребитель сказать, до какого дня он вправе не трогать свой код». Здесь ответ зависит от документа, которого ещё нет. Ближайший дисквалификатор — «ломается смысл, а не схема» — про изменение смысла, а не про его отсутствие в момент обещания.

В охват пришлось внести оговорку, которой документ не предусматривает: смысл величин из охвата исключён, и это записано прямо. Обещана форма, не содержание.